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

重定向时,curl/wget解析的URL与浏览器解析的URL不同,curl,wget,gitweb,Curl,Wget,Gitweb,如何通过curl/wget获得正确的重定向URL 目标URL: 你需要转义(分号)到%3B 像Chrome/FireFox这样的浏览器将上述目标URL解析为以下URL,其中包括commit,这是预期的结果 但是,curl和wget都将目标URL解析为以下URL,其中包括树,这不是预期的行为 重定向URL的差异包括commit或tree,这可能是gitweb问题,而不是curl/wget。 如何通过curl/wget获得正确的重定向URL? 更改用户代理是无助的。有什么想法吗?

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

目标URL:

  • 你需要转义
    (分号)到
    %3B
像Chrome/FireFox这样的浏览器将上述目标URL解析为以下URL,其中包括
commit
,这是预期的结果

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

重定向URL的差异包括
commit
tree
,这可能是gitweb问题,而不是curl/wget。 如何通过curl/wget获得正确的重定向URL? 更改用户代理是无助的。有什么想法吗? 我的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,并且需要在查询字符串中使用分号


希望有帮助

成功了,谢谢你。现在有意义了,分号被解析为命令分隔符,而不是URL参数。