curl/wget не разрешает URL так же, как браузер при перенаправлении

Как получить правильный перенаправленный URL с помощью curl/wget?

Целевой URL:

Браузер, такой как Chrome/FireFox, преобразует указанный выше целевой URL в следующий URL, который включает commit и это ожидаемый результат.

Однако, как curl, так и wget разрешают целевой URL на следующий URL, который включает tree и это НЕ ожидаемое поведение.

Задержка перенаправленного URL в том числе commit или же treeи это может быть проблема с gitweb вместо curl / wget. Как получить правильный перенаправленный URL с помощью curl/wget? Сменить 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

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 и ожидает точку с запятой в строке запроса.

Надеюсь, это поможет!

Другие вопросы по тегам