550

我知道在 php 脚本中:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

将遵循重定向。有没有办法使用命令行 cURL 跟踪重定向?

4

3 回答 3

930

使用位置标头标志:

curl -L <URL>

于 2013-08-27T20:24:43.250 回答
40

如前所述,要遵循重定向,您可以使用标志-L--location

curl -L http://www.example.com

但是,如果你想限制重定向的数量,添加参数--max-redirs

--max-redirs <num>

设置允许的最大重定向跟随数。如果使用 , -L--location则此选项可用于防止 curl “荒谬”地遵循重定向。默认情况下,限制设置为 50 次重定向。将此选项设置为 -1 以使其不受限制。如果多次使用此选项,将使用最后一个。

于 2018-12-17T17:26:23.263 回答
29

我有一个类似的问题。我在这里发布我的解决方案,因为我相信它可能会帮助其中一位评论者。

对我来说,障碍是该页面需要登录,然后通过 javascript 给我一个新的 URL。这是我必须做的:

curl -c cookiejar -g -O -J -L -F "j_username=username" -F "j_password=password" <URL>

请注意,j_usernamej_password是我网站登录表单的字段名称。您必须打开网页的源代码才能查看用户名字段的“名称”和密码字段的“名称”在您的情况下是什么。之后,我使用嵌入了新 URL 的 java 脚本创建了一个 html 文件。解析出来后,只需使用新 URL 重新提交:

curl -c cookiejar -g -O -J -L -F "j_username=username" -F "j_password=password" <NEWURL>
于 2014-08-19T13:17:59.633 回答