Как отключить HTTP редирект в wget

Когда мы запускаем wget для извлечения URL X, который перенаправляет на другой URL Y, wget, по умолчанию, переходим автоматически на извлечённый URL Y. Если вам нужно, чтобы wget только извлекал оригинальный URL X без перехода на перенаправляемый адрес, то эта инструкция для вас. В ней вы узнаете, как остановить wget от перехода по адресу перенаправления.

В HTTP спецификации, ответ редиректа (код ответа 3XX HTTP) показывает веб-браузеру, что запрашиваемый URL перемещён в другое место. Ответ редиректа затем содержит URL цели перенаправления.

Как обычные HTTP клиенты, wget поддерживает URL перенаправление (также известное как URL forwarding), которое означает, что когда вы пробуете загрузить перенаправленный URL, wget будет автоматически следовать URL редиректу для получения цели перенаправления. Если по разным причинам вы хотите отключить URL перенаправление и остановить со статусом кода 3XX, вы можете использовать опцию "—max-redirect=number" с wget. Эта опция используется для определения максимального количества (рекурсивных) перенаправлений для следования, значением по умолчанию является 20.

Если вы хотите отключить HTTP редиректы в wget, используйте опцию "—max-redirect=0" как показано ниже.

$ wget --max-redirect=0 codeby.net/blogs/?goto=1
--2015-02-18 13:42:37-- https://codeby.net/blogs/?goto=1
Распознаётся codeby.net (codeby.net)… 185.26.122.50
Подключение к codeby.net (codeby.net)|185.26.122.50|:80... соединение установлено.
HTTP-запрос отправлен. Ожидание ответа... 302 Found
Адрес: http://www.hostland.ru/services/hosting/?r=c79d4aad [переход]
Более 0 перенаправлений.

Как вы можете видеть, когда wget сталкивается с HTTP редиректом, она не следует по предлагаемому перенаправлению, а просто останавливается с «Более 0 перенаправлений». А также показывает полученный HTTP статус (например 301).

Обратите внимание, что curl, которая является другим схожим HTTP клиентом, ведёт себя противоположным образом. По умолчанию, curl НЕ следует по URL редиректа. Для принудительного перенаправления curl на URL вам нужно использовать опцию "-L".

Оставьте комментарий