curl/wget 不解析 URL 重定向时与浏览器相同
curl/wget does not resolve a URL same as a browser when redirected
如何让 curl/wget 正确重定向 URL?
目标 URL:
- https://www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-3.18.git;a=commit;h=430f3805c82634a3cb969d83acc4fc4c0ee6af27
- 传递curl/wget
时需要将;
(分号)转义为%3B
浏览器,如 Chrome/FireFox,将上述目标 URL 解析为以下 URL,其中包括 commit
,这是预期的结果。
但是,curl 和 wget 都将目标 URL 解析为以下 URL,其中包括 tree
,这不是预期的行为。
重定向 URL 的遵从包括 commit
或 tree
,它可能是 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 并且期望查询字符串中有分号。
希望对您有所帮助!
如何让 curl/wget 正确重定向 URL?
目标 URL:
- https://www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-3.18.git;a=commit;h=430f3805c82634a3cb969d83acc4fc4c0ee6af27
- 传递curl/wget 时需要将
;
(分号)转义为%3B
浏览器,如 Chrome/FireFox,将上述目标 URL 解析为以下 URL,其中包括 commit
,这是预期的结果。
但是,curl 和 wget 都将目标 URL 解析为以下 URL,其中包括 tree
,这不是预期的行为。
重定向 URL 的遵从包括 commit
或 tree
,它可能是 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 并且期望查询字符串中有分号。
希望对您有所帮助!