Comment empêcher wget de suivre les redirections?
--max-redirect 0
Je n'ai pas essayé cela, il n'en autorisera aucun ou autorisera l'infini ..
Utilisez curl
sans -L
au lieu de wget
. L'omission de cette option lors de l'utilisation de curl
empêche la redirection d'être suivie.
Si tu utilises curl -I <URL>
vous obtiendrez alors les en-têtes au lieu du HTML de redirection.
Si tu utilises curl -IL <URL>
, vous obtiendrez les en-têtes de l'URL, ainsi que ceux de l'URL vers laquelle vous êtes redirigé.
Certaines versions de wget
ont un --max-redirect
option: Voir ici
wget suit jusqu'à 20 redirections par défaut. Cependant, il ne couvre pas les hôtes. Si vous avez demandé à wget de télécharger example.com
, il ne touchera aucune ressource à www.example.com
. wget le détectera comme une requête pour s'étendre à un autre hôte et décidera contre.
En bref, vous devriez probablement exécuter:
wget --mirror www.example.com
Plutôt que
wget --mirror example.com
Supposons maintenant que le propriétaire de www.example.com
possède plusieurs sous-domaines à example.com
et nous nous intéressons à tous. La façon de procéder?
Essaye ça:
wget --mirror --domains=example.com example.com
wget va maintenant visiter tous les sous-domaines de example.com, y compris m.example.com
et www.example.com
.
En général, ce n'est pas une bonne idée de dépendre d'un nombre spécifique de redirections.
Par exemple, pour télécharger IntellijIdea, l'URL qui est promis de toujours se résoudre à la dernière version de Community Edition pour Linux est quelque chose comme https://download.jetbrains.com/product?code=IIC&latest&distribution=linux
, mais si vous visitez cette URL de nos jours, vous allez être redirigé deux fois (2 fois) avant d'atteindre le fichier téléchargeable réel. À l'avenir, vous pourriez être redirigé trois fois, ou pas du tout.
La façon de résoudre ce problème consiste à utiliser le verbe HTTP HEAD. Voici comment je l'ai résolu dans le cas d'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"