Wget: не следовать перенаправлениям - PullRequest
45 голосов
/ 18 апреля 2010

Как предотвратить wget от следующих перенаправлений?

Ответы [ 5 ]

46 голосов
/ 18 апреля 2010

--max-redirect 0

Я не пробовал этого, он либо не разрешит ничего, либо допустит бесконечность ..

9 голосов
/ 18 апреля 2010

Используйте curl без -L вместо wget. Пропуск этой опции при использовании curl предотвращает отслеживание перенаправления.

Если вы используете curl -I <URL>, вы получите заголовки вместо перенаправления HTML.

Если вы используете curl -IL <URL>, вы получите заголовки для URL, а также заголовки для URL, на который вы перенаправлены.

3 голосов
/ 23 августа 2013

wget выполняет до 20 перенаправлений по умолчанию. Однако это не распространяется на хосты. Если вы попросили wget загрузить example.com, он не затронет ресурсы на www.example.com. wget определит это как запрос на переход на другой хост и примет решение против него.

Короче говоря, вы, вероятно, должны выполнить:

wget --mirror www.example.com

Вместо

wget --mirror example.com

Теперь предположим, что владелец www.example.com имеет несколько поддоменов в example.com, и мы заинтересованы во всех из них. Как поступить?

Попробуйте это:

wget --mirror --domains=example.com example.com

wget теперь будет посещать все дочерние домены example.com, включая m.example.com и www.example.com.

.
3 голосов
/ 18 апреля 2010

В некоторых версиях wget есть опция --max-redirect: см. здесь

0 голосов
/ 11 апреля 2019

В общем случае не следует зависеть от определенного числа перенаправлений.

Например, чтобы загрузить IntellijIdea, URL-адрес, который обещан всегда разрешать до последней версии Community Edition для Linux, похож на https://download.jetbrains.com/product?code=IIC&latest&distribution=linux, но если вы посетите этот URL в настоящее время, вы будете перенаправлены дважды (2 раза), прежде чем вы получите реальный загружаемый файл. В будущем вы можете быть перенаправлены три раза, или не перенаправлены вовсе.

Способ решения этой проблемы - использование глагола HTTP HEAD. Вот как я решил это в случае IntellijIdea:

# This is the starting URL.
URL="https://download.jetbrains.com/product?code=IIC&latest&distribution=linux"
echo "URL: $URL"

# Issue HEAD requests until the actual target is found.
# The result contains the target location, among some irrelevant stuff.
LOC=$(wget --no-verbose --method=HEAD --output-file - $URL)
echo "LOC: $LOC"

# Extract the URL from the result, stripping the irrelevant stuff.
URL=$(cut "--delimiter= " --fields=4 <<< "$LOC")
echo "URL: $URL"

# Optional: download the actual file.
wget "$URL"
...