linux - 如何使用 curl 从需要许可的网站获取数据?

标签 linux bash curl

我熟悉 Linux 中的 curl 命令。但是,我想知道是否有一种方法可以访问一个 URL,该 URL 在访问时要求用户交互/允许继续前进,例如,无论用户是否同意,都要求许可协议(protocol)。

有没有一种方法可以跳过此权限检查或在 curl 命令中传递“我同意”类型的参数,从而将我带到实际的网站数据?

编辑 1:有关用户交互/许可如何显示在网站上的更多信息:

当使用浏览器访问该网址时,网页会要求用户确认是否同意条款和许可条件,并提供“我同意”和“我不同意”两个选项。如果用户点击“我同意”,他将转到实际网页。

我想知道是否可以使用 curl 或等价物在 shell 脚本中通过命令行完成同样的操作?

编辑 2:

在使用浏览器(我用的是firefox)访问该URL时,该URL仅在第一次请求用户权限。下次当我访问该 URL 时,它会跳过这个并继续访问主站点。我估计这次 session 的 cookie 由浏览器保存并在下次使用。有了这个理解,我尝试生成 cookie 文件并通过 curl 以下列方式使用它:

生成cookie:

curl --cookie-jar cookies.txt http://url

使用 cookie:

curl --cookie cookies.txt http://url

但是我没能成功。我追踪到firefox保存的cookies的位置,用同样的方法尝试使用,但又失败了。我想我已经接近了,但我无法向前迈出任何一步。

最佳答案

使用 Géza Török 提供的信息和 wick以上和我自己的理解我能够实现这一目标。我用Firefox浏览器访问了这个URL,然后找到了存储在磁盘上的cookies。在阅读并理解了 cookie 的内容和格式后,我创建了自己的 cookie 文本文件并带有适当的响应,并按以下方式将其传递给 curl 命令以继续访问主网站:

curl --cookie cookies.txt http://url

感谢您的帮助!

关于linux - 如何使用 curl 从需要许可的网站获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26336995/

相关文章:

linux - 测试 SLOB - 如何?

linux - 链接分隔的单词

bash - 编写 bash 脚本以在 UNIX 中运行 matlab 程序?

linux - 如何将路径名中的 ".."转换为 bash 脚本中的绝对名称?

c - fork()-parent 忽略 except 脚本的 execv()

windows - 在 Linux 中编译 Visual C++ 代码

linux - curl:(6)无法解析主机:google.com;名称或服务未知

javascript - 如何找到登录凭据发送到的 url?

php - 使用 cURL 发出的 SSL 请求在进程 fork 后失败

linux - 如何获得一个进程的总内存,该进程在 linux 中使用 shell fork 了许多子进程?