【发布时间】:2013-08-30 17:55:27
【问题描述】:
我知道在 php 脚本中:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
将遵循重定向。有没有办法使用命令行 cURL 跟踪重定向?
【问题讨论】:
-
为了记录,wget会跟随位置头
标签: redirect curl command-line-interface
我知道在 php 脚本中:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
将遵循重定向。有没有办法使用命令行 cURL 跟踪重定向?
【问题讨论】:
标签: redirect curl command-line-interface
我遇到了类似的问题。我在这里发布我的解决方案,因为我相信它可能会对其中一位评论者有所帮助。
对我来说,障碍是该页面需要登录,然后通过 javascript 为我提供了一个新 URL。这是我必须做的:
curl -c cookiejar -g -O -J -L -F "j_username=username" -F "j_password=password" <URL>
请注意,j_username 和 j_password 是我网站登录表单的字段名称。您必须打开网页的源代码才能查看用户名字段的“名称”和密码字段的“名称”在您的情况下是什么。
之后,我使用嵌入了新 URL 的 java 脚本创建了一个 html 文件。解析出来后,只需使用新 URL 重新提交:
curl -c cookiejar -g -O -J -L -F "j_username=username" -F "j_password=password" <NEWURL>
【讨论】:
如前所述,要跟踪重定向,您可以使用标志 -L 或 --location:
curl -L http://www.example.com
但是,如果要限制重定向次数,请添加参数--max-redirs
--max-redirs <num>设置允许的最大重定向次数。如果使用
-L、--location,则此选项 可用于防止 curl 遵循“荒谬”的重定向。默认情况下,限制 设置为 50 次重定向。将此选项设置为 -1 以使其不受限制。 如果多次使用此选项,将使用最后一个。
【讨论】:
使用位置标头标志:
curl -L <URL>
【讨论】:
man curl: "使用身份验证时,curl 仅将其凭据发送到初始主机。<...> 另请参阅 --location-trusted 了解如何更改此设置。"