我知道在 php 脚本中:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
将遵循重定向。有没有办法使用命令行 cURL 来跟踪重定向?
使用位置标头标志:
curl -L <URL>
curl --location <URL> # or (same thing)
如前所述,要遵循重定向,您可以使用标志
-L
或 --location
:
curl -L http://www.example.com
但是,如果你想限制重定向次数,请添加参数
--max-redirs
--max-redirs <num>
设置允许的重定向跟随的最大数量。如果使用
、-L
,则此选项 可用于防止curl“荒谬地”遵循重定向。默认情况下,限制 设置为 50 个重定向。将此选项设置为 -1 以使其无限制。 如果多次使用此选项,则将使用最后一次。--location
我也有类似的问题。我在这里发布我的解决方案,因为我相信它可能对其中一位评论者有所帮助。
对我来说,障碍是该页面需要登录,然后通过 JavaScript 给我一个新的 URL。这是我必须做的:
curl -c cookiejar -g -O -J -L -F "j_username=username" -F "j_password=password" <URL>
请注意,
j_username
和j_password
是我网站登录表单的字段名称。您必须打开网页源代码才能查看您的情况下用户名字段的“名称”和密码字段的“名称”。
之后,我进入一个带有 java 脚本的 html 文件,其中嵌入了新的 URL。解析后只需使用新 URL 重新提交:
curl -c cookiejar -g -O -J -L -F "j_username=username" -F "j_password=password" <NEWURL>
您可以使用
curl -L http://example.com/
来实现这一点。
如果您需要跟踪登录页面的重定向,请使用
存储 SessionID 并使用--cookie
传递登录凭据-d
curl --cookie -X POST http://example.com/login.php -d "username=Admin&password=Pass" -L