GNU/Linux >> Tutoriels Linux >  >> Linux

7 astuces pratiques pour utiliser la commande Linux wget

Wget est un utilitaire gratuit pour télécharger des fichiers sur le Web. Il récupère des données sur 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 rendent les informations dans une fenêtre graphique et nécessitent généralement qu'un utilisateur les contrôle activement. Le wget l'utilitaire est conçu pour être non interactif, ce qui signifie que vous pouvez créer un script ou programmer wget pour télécharger des fichiers, que vous soyez devant votre ordinateur ou non.

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 qui par défaut est index.html , la page d'index est alors 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'

Vous pouvez faire wget envoyer les données à la sortie standard (stdout ) à la place en utilisant le --output-document avec un tiret - caractère :

$ wget http://example.com --output-document - | head -n4
<!doctype html>
<html>
<head>
   <title>Example Domain</title>

Vous pouvez utiliser le --output-document (-O pour faire court) pour nommer votre téléchargement comme vous voulez :

$ wget http://example.com --output-document foo.html

Poursuivre 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 plus 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

Si ce n'est pas un gros fichier mais plusieurs fichiers que vous devez télécharger, wget peut vous aider avec cela. 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

Mise en miroir d'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 identique à l'exécution de --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 peut 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 requête :

$ 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 requête avec le --header option. Par exemple, il est parfois utile d'imiter un navigateur spécifique, soit pour tester, soit pour tenir compte des 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 choix :

$ 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 manière permanente vers un autre emplacement. C'est un moyen courant pour un administrateur de site Web de déplacer le contenu tout en laissant une "piste" 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 qu'il fasse normalement.

Cependant, vous pouvez contrôler ce que wget fait quand il rencontre une réponse 301 avec le --max-redirect option. Vous pouvez le définir sur 0 pour ne 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

Le --max-redirect L'option est utile pour consulter les URL raccourcies avant de les visiter. Les URL raccourcies peuvent être utiles pour les médias imprimés, dans lesquels les utilisateurs ne peuvent pas simplement copier et coller une longue URL, ou sur les réseaux sociaux avec des limites de caractères (ce n'est pas vraiment 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émêler la destination finale d'une URL, vous pouvez jeter un coup d'œil dans 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.

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

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 d'Internet sans vous soucier d'une interface graphique. Pour vous aider à l'intégrer à votre flux de travail habituel, nous avons créé une feuille de triche avec un wget commun utilisations et syntaxe, y compris un aperçu de son utilisation pour interroger une API. Téléchargez le wget Linux aide-mémoire ici.


Linux
  1. Un guide du terminal Linux pour les débutants

  2. 8 conseils pour la ligne de commande Linux

  3. Utilisation de la force sur la ligne de commande Linux

  4. Conseils pour utiliser la commande top sous Linux

  5. 4 outils pour télécharger n'importe quel fichier en utilisant la ligne de commande sous Linux

Comment télécharger des fichiers avec la commande Wget sous Linux

Tutoriel sur l'utilisation de la commande Timeout sous Linux

Tutoriel sur l'utilisation de la dernière commande dans le terminal Linux

Un guide pratique pour la commande chroot sous Linux

Comment utiliser la commande wget sous Linux ?

Comment télécharger des fichiers dans Rocky Linux 8 sur la ligne de commande à l'aide de wget