有没有办法使用命令行 cURL 来跟踪重定向?

问题描述 投票:0回答:4

我知道在 php 脚本中:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

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

curl http-redirect
4个回答
1054
投票

使用位置标头标志:

curl -L <URL>
curl --location <URL>  # or (same thing)

69
投票

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

-L
--location
:

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

但是,如果你想限制重定向次数,请添加参数

--max-redirs

--max-redirs <num>

设置允许的重定向跟随的最大数量。如果使用

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


31
投票

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

对我来说,障碍是该页面需要登录,然后通过 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>

0
投票

您可以使用

curl -L http://example.com/
来实现这一点。

如果您需要跟踪登录页面的重定向,请使用

--cookie
存储 SessionID 并使用
-d

传递登录凭据
curl --cookie -X POST http://example.com/login.php -d "username=Admin&password=Pass" -L
© www.soinside.com 2019 - 2024. All rights reserved.