【问题标题】:curl/wget does not resolve a URL same as a browser when redirected重定向时 curl/wget 无法解析与浏览器相同的 URL
【发布时间】:2017-12-29 18:37:15
【问题描述】:

如何通过 curl/wget 获得正确的重定向 URL?

目标网址:

Chrome/FireFox 等浏览器将上述目标 URL 解析为以下 URL,其中包括 commit,这是预期结果。

但是,curl 和 wget 都将目标 URL 解析为包含 tree 的以下 URL,这不是预期的行为。

重定向 URL 的尊重包括committree,可能是 gitweb 问题而不是 curl/wget。 如何通过 curl/wget 获得正确的重定向 URL? 改变一个User-Agent是无奈的。有任何想法吗? 我的 curl 命令如下:

$ curl -v -L -o output.html \
https://www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-3.18.git%3Ba=commit%3Bh=430f3805c82634a3cb969d83acc4fc4c0ee6af27

【问题讨论】:

    标签: curl wget gitweb


    【解决方案1】:

    我发现问题在于您需要对作为项目名称一部分的 / 进行 url 编码。用%3B; 进行编码对我来说很糟糕。

    此外,由于 URL 包含 ;,因此您需要将其引用,因为这是一个命令分隔符。

    在查询字符串中,p=kernel/msm-3.18 应该是p=kernel%2fmsm-3.18

    我能够使以下两个 cURL 命令工作:

    curl -v -L -o output.html \
    'https://www.codeaurora.org/gitweb/quic/la/?p=kernel%2fmsm-3.18.git;a=commit;h=430f3805c82634a3cb969d83acc4fc4c0ee6af27'
    

    或者简单地说,

    curl -v -L -o output.html \
    'https://www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-3.18.git;a=commit;h=430f3805c82634a3cb969d83acc4fc4c0ee6af27'
    

    这可能是因为软件读取原始参数并且没有解码 %3B 并且需要在查询字符串中使用分号。

    希望有帮助!

    【讨论】:

    • 成功了,谢谢。现在明白了,分号被解析为命令分隔符而不是 URL 参数。
    猜你喜欢
    • 1970-01-01
    • 2020-12-07
    • 2014-08-23
    • 2012-02-12
    • 1970-01-01
    • 2012-07-11
    • 2011-12-05
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多