curl/wget 不解析 URL 重定向时与浏览器相同

curl/wget does not resolve a URL same as a browser when redirected

如何让 curl/wget 正确重定向 URL?

目标 URL:

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

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

重定向 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

我发现问题是您需要 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 并且期望查询字符串中有分号。

希望对您有所帮助!