cClaude.rocks ☕ Le blog

[Nouvelles technologies, sciences et coups de gueule…]

Menu

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 type application/xhtml+xml ou text/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 ou jsp, 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 type http://site.com/article.cgi?25 sera enregistrĂ©e sous la forme article.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 :

Autres liens :

኿


â„č 2006 - 2022 | 🏠 Accueil du domaine | 🏡 Accueil du blog