Pour archiver un site web ou simplement tester les liens on a souvent besoin dâun outil qui permet de faire un miroir du contenu dâun domaine.
Jâai longtemps utilisĂ© httrack une solution libre permettant dâaspirer un site web. Cependant, ce programme n'est plus mis Ă jours depuis longtemps et il y a beaucoup efficace aujourdâhui.
Et le programme est disponible sur toutes les distributions Linux, il sâagit de wget.
Voici comment utiliser wget pour faire un miroir dâun site Internet :
wget -m -k -p -c -E https://www.example.org/
Si jamais la commande wget nâĂ©tait disponible sur votre systĂšme, vous pouvez facilement lâinstaller Ă lâaide de :
sudo apt-get update && sudo apt-get upgrade && sudo apt-get install wget -y
Version courte
Option | Description |
---|---|
-m | Active le mode miroir |
-k | Converti les fichiers pour un usage local |
-p | Télécharge également les dépendances |
-c | ComplĂšte les fichiers qui sont Ă©ventuellement en plusieurs parties |
-E | Corrige les extensions des fichiers locaux |
Version longue
-
-m
ou--mirror
â Activation des options appropriĂ©es pour la crĂ©ation dâun miroir. Cette option active la rĂ©cursivitĂ© et lâhorodatage, dĂ©finit une profondeur de rĂ©cursion infinie et conserve les listes de rĂ©pertoires FTP. Câest Ă©quivalent Ă-r -N -l inf --no-remove-listing
. -
-k
ou--convert-links
â Une fois le tĂ©lĂ©chargement terminĂ©, les liens des documents seront convertis pour les rendre compatibles avec un affichage local. Cela concerne non seulement les liens hypertextes visibles, mais Ă©galement toute partie du document qui renvoie au contenu externe, tels que les images incorporĂ©es, les liens vers les feuilles de style, les liens hypertextes vers du contenu non HTML, etc. -
-p
ou--page-requisites
â Cette option demande Ă wget de tĂ©lĂ©charger tous les fichiers nĂ©cessaires pour afficher correctement une page HTML donnĂ©e. Cela inclut des Ă©lĂ©ments tels que des images en ligne, des sons et des feuilles de style rĂ©fĂ©rencĂ©es. Par dĂ©faut, lors du tĂ©lĂ©chargement dâune seule page HTML, les documents requis pour lâafficher correctement ne sont pas tĂ©lĂ©chargĂ©s.
Lâutilisation de -r
avec -l
peut aider, mais comme par défaut wget ne fait la distinction entre les documents externes et les documents en ligne, il ne reste généralement que des « documents feuilles » dont les éléments requis manquent.
-c
ou--continue
â Continuez Ă obtenir un fichier partiellement tĂ©lĂ©chargĂ©. Ceci est utile lorsque vous souhaitez terminer un tĂ©lĂ©chargement dĂ©marrĂ© par une instance prĂ©cĂ©dente de wget ou par un autre programme. LâidĂ©e est de ne pas refaire lâensemble du tĂ©lĂ©chargement, mais Ă©galement dâaller rĂ©cupĂ©rer des morceaux manquant (cas de fichier dĂ©coupĂ©).
Si vous utilisez -c
sur un fichier de taille Ă©gale Ă celle du serveur, wget refusera de tĂ©lĂ©charger ce fichier et dâafficher un message explicatif. La mĂȘme chose se produit lorsque le fichier est plus petit sur le serveur que localement (probablement parce qu'il a Ă©tĂ© modifiĂ© sur le serveur depuis votre derniĂšre tentative de tĂ©lĂ©chargement) --- parce que « continuer » n'est pas significatif, aucun tĂ©lĂ©chargement ne sera fait.
Lâautre cĂŽtĂ© de la mĂ©daille, en utilisant -c
, tout fichier plus volumineux sur le serveur que localement sera considĂ©rĂ© comme un tĂ©lĂ©chargement incomplet et seuls les octets ( length(remote) â length(local) )
seront tĂ©lĂ©chargĂ©s et ajoutĂ© Ă la fin du fichier local. Ce comportement peut ĂȘtre souhaitable dans certains cas. Par exemple, vous pouvez utiliser wget -c
pour télécharger uniquement la nouvelle partie qui a été ajoutée à une collection de données ou à un fichier journal.
Toutefois, si le fichier est plus volumineux sur le serveur parce quâil a Ă©tĂ© modifiĂ©, par opposition Ă un simple ajout, vous obtiendrez un fichier tronquĂ©. wget nâa aucun moyen de vĂ©rifier que le fichier local est vraiment un prĂ©fixe valide du fichier distant. Vous devez faire particuliĂšrement attention lorsque vous utilisez -c
avec -r
, car chaque fichier sera considéré comme un candidat de téléchargement incomplet.
Si vous essayez dâutiliser -c
, vous obtiendrez un fichier corrompu si vous disposez dâun proxy HTTP boiteux insĂ©rant une chaĂźne "transfert interrompu" dans le fichier local.
Notez que -c
ne fonctionne quâavec les serveurs FTP et les serveurs HTTP prenant en charge lâen-tĂȘte « Range ».
-E
ou--html-extension
â Si un fichier de typeapplication/xhtml+xml
outext/html
est tĂ©lĂ©chargĂ© et que lâURL ne se termine pas par\.[Hh][Tt][Mm][Ll]?
(regex), cette option entraĂźnera lâajout du suffixe.html.
au nom de fichier local. Ceci est utile, par exemple, lorsque vous mettez en miroir un site distant qui utilise des pages.asp
oujsp
, mais que vous voulez que les pages en miroir soient visibles sur votre serveur Apache standard. Une autre utilisation intéressante est le téléchargement de documents générés par CGI. Une URL du typehttp://site.com/article.cgi?25
sera enregistrée sous la formearticle.cgi?25.html
.
Notez que les noms de fichier modifiés de cette maniÚre seront téléchargés de nouveau chaque fois que vous ferez un miroir du site, car wget ne peut pas dire que le fichier X.html
local correspond Ă lâURL distante X
(car il ne sait pas encore que lâURL produit une sortie de type application/xhtml+xml
ou text/html
.
wget sâassurera Ă©galement que tous les fichiers tĂ©lĂ©chargĂ©s de type text/css
se terminent par le suffixe .css
.
*wget veillera également à ce que tous les fichiers téléchargés avec un Content-Encoding
de br, compress, deflate ou gzip se terminent avec les suffixes .br
, .Z
, .zlib
et .gz
respectivement.
Ă lâavenir, cette option pourrait bien ĂȘtre Ă©tendue pour inclure des suffixes pour dâautres types de contenu, y compris des types de contenu non analysĂ©s par wget.
Rechercher les liens morts
Avec wget il y a un moyen facile de rechercher les liens cassĂ©s (ou liens mort) en sauvegardant lâaffichage dans un fichier :
wget -o wget.log -r -l 10 --spider https://www.example.org/
Explication rapide des options :
Option | Description |
---|---|
-o | Sauvegarde le rĂ©sultat dans un fichier pour une analyse ultĂ©rieure (Attention câest o minuscule) |
-r | Suis les liens (traitement récursif) |
-l | Définie la profondeur de la récursion |
--spider | Utilise le mode « toile » de wget |
Pour obtenir la liste des liens morts, il suffit alors dâutiliser :
grep -B 2 '404' wget.log | grep 'http' | cut -d ' ' -f 4 | sort -u
Ou tout sur la mĂȘme ligne:
wget -r -l 100 --spider https://www.example.org/ 2>&1 | grep -B 2 '404' | grep 'http' | cut -d ' ' -f 4 | sort -u
Attention : Cette commande ne permet pas de retrouver les liens cassĂ©s qui sortant, on limite lâanalyse au site donnĂ©.
En savoir +
La commande man
est toujours inintéressante pour ce genre de petit outil, mais si vous préférer une version en ligne :
- Man page de wget
- Man page de wget en français, attention elle peut-ĂȘtre en retard par rapport Ă la documentation anglaise,
Autres liens :
- Documentation de wget en français avec quelques exemples dâutilisation.
- Autre astuces avec wget
኿