【问题标题】:Is there a way to follow redirects with command line cURL?有没有办法使用命令行 cURL 跟踪重定向?
【发布时间】:2013-08-30 17:55:27
【问题描述】:

我知道在 php 脚本中:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

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

【问题讨论】:

  • 为了记录,wget会跟随位置头

标签: redirect curl command-line-interface


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    但是,如果要限制重定向次数,请添加参数--max-redirs

    --max-redirs <num>
    

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

    【讨论】:

      【解决方案3】:

      使用位置标头标志:

      curl -L &lt;URL&gt;

      【讨论】:

      • 这也不适用于通过 Google 进行身份验证以访问电子表格。 ://
      • man curl: "使用身份验证时,curl 仅将其凭据发送到初始主机。<...> 另请参阅 --location-trusted 了解如何更改此设置。"
      猜你喜欢
      • 1970-01-01
      • 2010-11-21
      • 2015-03-21
      • 2011-05-26
      • 2022-01-09
      • 2017-10-22
      • 2017-08-09
      • 1970-01-01
      相关资源
      最近更新 更多