如何从使用curl需要权限的网站获取数据?

时间:2014-10-13 09:44:34

标签: linux bash curl

我熟悉Linux中的curl命令。但是,我想知道是否有办法访问URL,当访问该URL时要求用户交互/许可继续进行,例如,询问用户是否同意的许可协议。

有没有办法可以跳过此权限检查或通过"我同意" curl命令中哪种参数将我带到实际的网站数据?

修改1 :有关用户互动/权限如何在网站上展示的更多信息:

当使用浏览器访问URL时,网页要求用户确认他是否同意条款和许可条件,并提供两个选项"我同意"和"我不同意"。如果用户点击"我同意"他进入实际的网页。

我想知道是否可以使用curl或等效的shell脚本中的命令行完成相同的操作?

编辑2:

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

生成cookie:

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

使用cookie:

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

但我无法成功。我找出了firefox保存的cookie的位置,并尝试以相同的方式使用它,但又失败了。我想我很接近,但我无法向前迈出一步。

2 个答案:

答案 0 :(得分:3)

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

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

感谢您的帮助!

答案 1 :(得分:0)

正如评论所说,有很多方法可以实现这一点。首先,我会安装firebug(如果使用firefox)或在chrome中按Ctrl + Shift + I来检查有问题的URL后发生了什么。如果有与初始检查相关联的不同对象和主要功能,您将在那里看到它,并决定卷曲是否有帮助。

Curl只是拉取http对象的工具。当你可以在请求头中提供keystring时,它可能取代浏览器交互的唯一情况可能是基本身份验证。对于您描述的情况,http调试器将是开始的地方。