7 astuces pratiques pour utiliser la commande Linux wget

Wget est un utilitaire gratuit pour télécharger des fichiers à partir du Web. Il récupère les données d’Internet et les enregistre dans un fichier ou les affiche dans votre terminal. C’est littéralement aussi ce que font les navigateurs Web, tels que Firefox ou Chromium, sauf que par défaut, ils rendre les informations dans une fenêtre graphique et nécessitent généralement qu’un utilisateur les contrôle activement. Les wget
L’utilitaire est conçu pour être non interactif, ce qui signifie que vous pouvez créer un script ou planifier wget
pour télécharger des fichiers, que vous soyez sur votre ordinateur ou non.
Contents
Télécharger un fichier avec wget
Vous pouvez télécharger un fichier avec wget
en fournissant un lien vers une URL spécifique. Si vous fournissez une URL par défaut index.html
, puis la page d’index est téléchargée. Par défaut, le fichier est téléchargé dans un fichier du même nom dans votre répertoire de travail actuel.
$ wget http://example.com
--2021-09-20 17:23:47-- http://example.com/
Resolving example.com... 93.184.216.34, 2606:2800:220:1:248:1893:25c8:1946
Connecting to example.com|93.184.216.34|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1256 (1.2K) [text/html]
Saving to: 'index.html'
Tu peux faire wget
envoyer les données vers la sortie standard (stdout
) à la place en utilisant le --output-document
avec un tiret -
personnage:
$ wget http://example.com --output-document - | head -n4
<!doctype html>
<html>
<head>
<title>Example Domain</title>
Vous pouvez utiliser le --output-document
option (-O
en abrégé) pour nommer votre téléchargement comme vous le souhaitez :
$ wget http://example.com --output-document foo.html
Continuer un téléchargement partiel
Si vous téléchargez un fichier très volumineux, vous devrez peut-être interrompre le téléchargement. Avec le --continue
(-c
pour faire court), wget
peut déterminer où le téléchargement s’est arrêté et continuer le transfert de fichiers. Cela signifie que la prochaine fois que vous téléchargerez une ISO de distribution Linux de 4 Go, vous n’aurez jamais à revenir au début en cas de problème.
$ wget --continue https://example.com/linux-distro.iso
Télécharger une séquence de fichiers
S’il ne s’agit pas d’un gros fichier mais de plusieurs fichiers que vous devez télécharger, wget
peut vous aider avec ça. En supposant que vous connaissiez l’emplacement et le modèle de nom de fichier des fichiers que vous souhaitez télécharger, vous pouvez utiliser la syntaxe Bash pour spécifier les points de début et de fin entre une plage d’entiers pour représenter une séquence de noms de fichiers :
$ wget http://example.com/file_{1..4}.webp
Dupliquer un site entier
Vous pouvez télécharger un site entier, y compris sa structure de répertoires, en utilisant le --mirror
option. Cette option est la même que l’exécution --recursive --level inf --timestamping --no-remove-listing
, ce qui signifie qu’il est infiniment récursif, vous obtenez donc tout sur le domaine que vous spécifiez. Selon l’âge du site Web, cela pourrait signifier que vous obtenez beaucoup plus de contenu que vous ne le pensez.
Si vous utilisez wget
pour archiver un site, puis les options --no-cookies --page-requisites --convert-links
sont également utiles pour s’assurer que chaque page est fraîche, complète et que la copie du site est plus ou moins autonome.
Modifier les en-têtes HTML
Les protocoles utilisés pour l’échange de données contiennent de nombreuses métadonnées intégrées dans les paquets que les ordinateurs envoient pour communiquer. Les en-têtes HTTP sont des composants de la partie initiale des données. Lorsque vous naviguez sur un site Web, votre navigateur envoie des en-têtes de requête HTTP. Utilisez le --debug
option pour voir quelles informations d’en-tête wget
envoie à chaque demande :
$ wget --debug example.com
---request begin---
GET / HTTP/1.1
User-Agent: Wget/1.19.5 (linux-gnu)
Accept: */*
Accept-Encoding: identity
Host: example.com
Connection: Keep-Alive---request end---
Vous pouvez modifier l’en-tête de votre demande avec le --header
option. Par exemple, il est parfois utile d’imiter un navigateur spécifique, soit à des fins de test, soit pour tenir compte de sites mal codés qui ne fonctionnent correctement que pour des agents utilisateurs spécifiques.
Pour vous identifier en tant que Microsoft Edge s’exécutant sous Windows :
$ wget --debug --header="User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59" http://example.com
Vous pouvez également vous faire passer pour un appareil mobile spécifique :
$ wget --debug
--header="User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_5_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Mobile/15E148 Safari/604.1"
http://example.com
Affichage des en-têtes de réponse
De la même manière que les informations d’en-tête sont envoyées avec les requêtes du navigateur, les informations d’en-tête sont également incluses dans les réponses. Vous pouvez voir les en-têtes de réponse avec le --debug
option:
$ wget --debug example.com
[...]
---response begin---
HTTP/1.1 200 OK
Accept-Ranges: bytes
Age: 188102
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Etag: "3147526947"
Server: ECS (sab/574F)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 1256---response end---
200 OK
Registered socket 3 for persistent reuse.
URI content encoding = 'UTF-8'
Length: 1256 (1.2K) [text/html]
Saving to: 'index.html'
Répondre à une réponse 301
Un code de réponse 200 signifie que tout a fonctionné comme prévu. Une réponse 301, en revanche, signifie qu’une URL a été déplacée de façon permanente vers un autre emplacement. Il s’agit d’un moyen courant pour un administrateur de site Web de déplacer du contenu tout en laissant une « trace » afin que les personnes visitant l’ancien emplacement puissent toujours le trouver. Par défaut, wget
suit les redirections, et c’est probablement ce que vous voulez normalement qu’il fasse.
Cependant, vous pouvez contrôler ce wget
fait lorsqu’il rencontre une réponse 301 avec le --max-redirect
option. Vous pouvez le régler sur 0
pour suivre aucune redirection :
$ wget --max-redirect 0 http://iana.org
--2021-09-21 11:01:35-- http://iana.org/
Resolving iana.org... 192.0.43.8, 2001:500:88:200::8
Connecting to iana.org|192.0.43.8|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://www.iana.org/ [following]
0 redirections exceeded.
Alternativement, vous pouvez le définir sur un autre nombre pour contrôler le nombre de redirections wget
suit.
Développer une URL raccourcie
Les --max-redirect
L’option est utile pour consulter les URL raccourcies avant de les visiter réellement. Les URL raccourcies peuvent être utiles pour les médias imprimés, dans lesquels les utilisateurs ne peuvent pas simplement copier et coller une URL longue, ou sur les réseaux sociaux avec des limites de caractères (ce n’est pas autant un problème sur un réseau social moderne et open source comme Mastodon ). Cependant, ils peuvent aussi être un peu dangereux car leur destination est, par nature, dissimulée. En combinant le --head
option pour afficher uniquement les en-têtes HTTP, et le --location
option pour découvrir la destination finale d’une URL, vous pouvez consulter une URL raccourcie sans charger la ressource complète :
$ wget --max-redirect 0 "https://bit.ly/2yDyS4T"
--2021-09-21 11:32:04-- https://bit.ly/2yDyS4T
Resolving bit.ly... 67.199.248.10, 67.199.248.11
Connecting to bit.ly|67.199.248.10|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://example.com/ [following]
0 redirections exceeded.
L’avant-dernière ligne de sortie, commençant par Emplacement, révèle la destination prévue.
Utiliser wget
Une fois que vous vous êtes entraîné à penser au processus d’exploration du Web en tant que commande unique, wget
devient un moyen rapide et efficace d’extraire les informations dont vous avez besoin sur Internet sans vous soucier d’une interface graphique. Pour vous aider à l’intégrer dans votre flux de travail habituel, nous avons créé un aide-mémoire avec des wget
utilisations et syntaxe, y compris un aperçu de son utilisation pour interroger une API. Télécharger Linux wget
aide-mémoire ici.