Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何使用curl从需要权限的网站获取数据?_Linux_Bash_Curl - Fatal编程技术网

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

Linux 如何使用curl从需要权限的网站获取数据?,linux,bash,curl,Linux,Bash,Curl,我熟悉Linux中的curl命令。但是,我想知道是否有一种方法可以访问URL,当访问URL时,会要求用户进行交互/允许继续进行,例如,无论用户是否同意,都会要求许可协议 是否有一种方法可以跳过此权限检查,或者在curl命令中传递“我同意”类型的参数,该参数将引导我访问实际的网站数据 编辑1:有关用户交互/权限如何显示在网站上的更多信息: 当使用浏览器访问URL时,该网页要求用户确认是否同意条款和许可条件,并提供两个选项“我同意”和“我不同意”。如果用户点击“我同意”,他将进入实际的网页 我想知道

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

是否有一种方法可以跳过此权限检查,或者在
curl
命令中传递“我同意”类型的参数,该参数将引导我访问实际的网站数据

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

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

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

编辑2:

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

要生成cookie,请执行以下操作:

curl --cookie-jar cookies.txt http://url
要使用cookie,请执行以下操作:

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

但我没能成功。我找到了firefox保存的cookies的位置,并尝试以同样的方式使用它,但再次失败。我想我已经很接近了,但我无法向前迈出任何一步。

正如评论正确地表明,有很多方法可以实现这一点。首先,我会安装firebug(如果使用firefox的话),或者在chrome中按Ctrl+Shift+I来检查在你点击相关URL后发生了什么。如果有不同的对象与初始检查和主函数关联,您将在那里看到它,并决定curl是否有帮助


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

使用上面给出的信息和我自己的理解,我能够实现这一点。我使用Firefox浏览器访问URL,然后找到存储在磁盘上的cookies。在阅读并理解cookies的内容和格式后,我创建了自己的cookie文本文件,并给出了相应的响应,并以以下方式将其传递给
curl
命令,以继续访问主网站:

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

谢谢你的帮助

您能否澄清用户交互/权限要求是如何出现在网站上的?它可以通过多种方式实现,我认为其中90%的方式阻止您以独立的方式使用curl。@GézaTörök编辑了这个问题以添加细节。仍然有许多方式可以想象。试着弄清楚当用户点击我同意时页面会做什么。如果你幸运的话,它只会把你带到另一个网址,你实际上正在寻找的网址,但我很确定事实并非如此。最有可能的情况是,服务器维护一个会话,在该会话中保存您根据协议所做的选择。在这种情况下,您必须以某种方式告诉服务器您的选择(显然是设置了特定变量的post请求),然后获得所需的页面。请注意,您必须保留从服务器收到的cookie,并且每个请求都必须包含它。@GézaTörök URL始终保持不变。我认为这很可能是您提到的服务器维护会话的情况。好吧,我认为您必须深入挖掘才能实现这一点。更不用说,该网站可能会发生变化,最终使您的努力毫无用处。我使用浏览器(firefox)访问了该URL,并观察到,一旦我选择“我同意”选项,它不会再次提示您同意,而是直接进入主网站。我想它会保存这个cookie,并在以后的会话中使用它。