Skip to content

Tout pour WordPress, le développement web — et plus encore

📥 Comment télécharger un site web entier avec Wget sur Windows

📥 Comment télécharger un site web entier avec Wget sur Windows

L’utilitaire gratuit en ligne de commande Wget peut aspirer des sites web, en téléchargeant chaque page, chaque image, chaque fichier CSS et en les stockant dans un dossier sur votre disque. Cela ressemble à de la magie, mais c’est de l’ingénierie pure: parcours récursif des liens, conversion des chemins en URL relatives et préservation minutieuse de la structure. Une fois cette archive créée, le site s’ouvre en local comme s’il était en ligne; il vous suffit de cliquer sur n’importe quel fichier .html.

Le problème, c’est que les guides décents pour Windows sont quasiment inexistants. La plupart des manuels sont écrits pour Unix, et l’utilisateur Windows moyen a besoin d’un .exe prêt à l’emploi, de commandes claires et d’une protection contre les pièges classiques comme la récursion infinie ou les liens cassés. C’est cette lacune que nous allons combler.

💡 Aperçu rapide:

  • Téléchargez Wget pour Windows et ajoutez le chemin de l’utilitaire au PATH système
  • Ouvrez une invite de commandes dans votre dossier de destination et exécutez la commande de mirroring
  • Après le téléchargement, corrigez les liens et chemins cassés avec grepWin, et l’archive est prête à être consultée
  • Si la récursion n’est pas nécessaire, utilisez un mode avec une liste d’URL préparée à l’avance

Pourquoi télécharger un site entier

Internet n’est pas éternel. Des sites ferment, changent de propriétaire, subissent des refontes et perdent d’anciens contenus. La communauté de l’archivage de données sur Reddit a depuis longtemps érigé l’archivage en culture, et ce pour de bonnes raisons. Vous ne pouvez pas prédire quand votre blog préféré disparaîtra ou quand une documentation précieuse passera derrière un paywall, mais vous pouvez la sauvegarder dans sa forme actuelle.

Les scénarios vont de l’évident à l’inattendu. Vous êtes sur le point de voyager sans accès à Internet et vous avez besoin d’un instantané fonctionnel d’un site d’information. Ou bien vous collectionnez les époques du design; le web d’hier avec ses mises en page en tableaux et ses boutons aux couleurs acides fait déjà partie de l’histoire. Même votre propre site mérite d’être aspiré périodiquement: ce n’est pas une sauvegarde au sens traditionnel (vous ne pouvez pas restaurer la base de données), mais un instantané statique qui survivra à tout crash de votre plateforme d’hébergement.

Un avertissement important: soyez prudent quant à ce que vous téléchargez. Les lois sur le droit d’auteur et la vie privée s’appliquent toujours. L’usage privé d’une copie sauvegardée est généralement légal, mais publier le contenu de quelqu’un d’autre sans autorisation peut créer des problèmes.

Comment Wget explore un site: mécanique du processus

Wget part de l’URL que vous spécifiez et suit récursivement chaque lien interne, théoriquement jusqu’à une profondeur infinie. Lorsqu’il est correctement configuré, il ne va pas s’échapper sur l’internet ouvert et commencer à télécharger Google: l’option --mirror associée à --reject-regex maintient l’exploration dans les limites du domaine cible. Tous les liens externes restent intacts, simplement du texte avec l’URL d’origine.

Chemin faisant, Wget récupère tout: pages HTML, feuilles de style, scripts, images, polices. Ensuite, il convertit les liens internes en chemins relatifs, ce qui permet à l’archive de s’ouvrir en local avec une navigation qui fonctionne comme sur le site en ligne. Les liens externes restent inchangés et continuent de pointer vers Internet (si vous y avez accès lors de la consultation).

Une archive, pas une sauvegarde. Vous ne pouvez pas restaurer un site à partir d’une telle copie statique car il n’y a ni base de données ni logique serveur. Wget fonctionne comme le robot d’indexation d’un moteur de recherche: il ne trouve que les pages vers lesquelles quelqu’un a créé un lien. Ce faisant, vous verrez à quel point les liens internes sont importants pour la connectivité du contenu; les pages orphelines sans liens entrants ne figureront pas dans l’archive.

Bien que Wget ne soit lié à aucun CMS particulier, il fonctionne particulièrement bien avec les sites WordPress. La raison est simple: des widgets standards comme les nuages de tags et les archives mensuelles créent un réseau dense de liens internes que le robot parcourt sans effort.

Installer Wget sur Windows

L’univers de Wget tourne historiquement autour d’Unix, et les utilisateurs Windows y sont des invités. Si vous allez sur le site officiel GNU et téléchargez le code source, vous obtiendrez un ensemble de fichiers .c, pas un programme prêt à l’emploi. Vous avez besoin d’un exécutable précompilé:

  • Rendez-vous sur eternallybored.org/misc/wget, un dépôt non officiel mais éprouvé de builds Wget pour Windows (version actuelle 1.21.4)
  • Téléchargez l’archive zip de la dernière version et extrayez-la dans un dossier séparé. Aucune installation n’est requise; c’est un utilitaire portable

Si vous double-cliquez sur wget.exe, une fenêtre d’invite de commandes apparaîtra brièvement et se fermera immédiatement. Wget est un programme console; il a besoin d’un terminal ouvert dans votre dossier de destination. Et pour éviter de copier le .exe dans chaque dossier contenant de futures archives, ajoutez Wget à votre PATH système:

  • Appuyez sur Windows + R, collez et exécutez:
1 "C:\Windows\system32\rundll32.exe" sysdm.cpl,EditEnvironmentVariables
  • Dans la section Variables utilisateur, trouvez la variable Path et cliquez sur Modifier...
  • Cliquez sur Nouveau et entrez le chemin complet du dossier contenant wget.exe
  • Fermez toutes les boîtes de dialogue en cliquant sur OK

Vérification: appuyez à nouveau sur Windows + Rcmd /k "wget -V". Vous devriez voir la version de Wget, et non un message indiquant que la commande n’est pas reconnue.

Fenêtre d'invite de commandes affichant les informations de version de Wget

Principales options de Wget: décryptage détaillé

La plupart des options possèdent des équivalents courts à une lettre, mais les noms longs sont plus explicites et lisibles sans antisèche. J’ai retenu les réglages validés par la pratique: au lieu de lire les 181 pages du manuel GNU Wget, vous obtenez un extrait avec, pour chaque option, l’explication du «pourquoi».

Options fondamentales

--mirror active la récursivité infinie. Concrètement, il s’agit d’un ensemble d’autres options regroupées sous un seul drapeau. Sans lui, Wget ne télécharge que la page indiquée, pas l’intégralité du site. C’est --mirror qui rend la copie miroir possible.

--page-requisites télécharge toutes les ressources associées: CSS, JavaScript, images, polices. Sans cette option, votre archive ressemblera à une page HTML nue, sans styles ni images.

--convert-links réécrit les liens dans les fichiers HTML une fois le téléchargement terminé, afin qu’ils fonctionnent en local. Les URL absolues sont remplacées par des chemins relatifs. C’est ce qui vous permet d’ouvrir index.html depuis le disque et de naviguer entre les pages comme sur le site en ligne.

--adjust-extension ajoute des extensions aux fichiers arrivés sans. Les sites modernes servent souvent des pages sans .html à la fin (URL lisibles par un humain) et, sans cette option, le navigateur ne comprendra pas qu’il a affaire à un document HTML. Il y a un piège: si le serveur compresse le contenu via gzip, Wget peut attribuer par erreur au fichier une extension .gz. L’option suivante protège contre cela.

--compression=auto gère la compression gzip à la volée. Sans elle, un logo SVG pourrait être enregistré sous le nom logo.svg.gz et devenir inutilisable en consultation locale. Cette option n’est pas disponible dans toutes les versions compilées; les utilisateurs Unix rencontrent parfois son absence. La version Windows d’eternallybored.org l’inclut.

--reject-regex "/search|/rss" empêche l’exploration des URL contenant les mots spécifiés. Les pages de recherche et les flux RSS génèrent des chaînes infinies de paramètres qui remplissent votre système de fichiers avec des noms longs de plusieurs écrans. L’expression régulière utilise ici la syntaxe POSIX de base, et non la syntaxe PCRE complète. Attention: /search éliminera non seulement les déchets de recherche, mais aussi des articles légitimes dont l’URL ressemble à yoursite.com/search-for-extraterrestrial-life. En cas de telle collision, rendez le motif plus spécifique.

Options complémentaires

--no-if-modified-since désactive la vérification de l’en-tête If-Modified-Since. Je n’ajoute ce drapeau que lorsque le serveur se plaint explicitement dans les journaux. Si vous ne prévoyez pas de relancer la commande dans le même dossier pour récupérer les modifications, cette option n’est pas critique.

--no-check-certificate ignore la vérification du certificat SSL. Lors d’une copie miroir, vous ne saisissez pas de mots de passe et ne transmettez pas de données confidentielles, une vérification stricte du certificat est donc superflue. Ce drapeau vous épargne des tracas sur les sites dont le certificat est expiré ou auto-signé.

--user-agent usurpe l’identité du User-Agent du navigateur. Certains serveurs détectent Wget et bloquent les requêtes. Se faire passer pour un navigateur Chrome classique résout le problème:

1--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Si le blocage intervient par adresse IP, vous aurez besoin d’un VPN et, éventuellement, de répartir le téléchargement sur plusieurs machines. Dans ce cas, les options --wait et --random-wait pour ralentir la cadence des requêtes vous seront également utiles.

--restrict-file-names=windows limite les caractères des noms de fichiers à un jeu compatible Windows. Sous Unix, les caractères spéciaux dans les noms sont autorisés, et une archive téléchargée sur une machine Linux peut s’avérer illisible sous Windows. Si vous travaillez sous Windows, le drapeau est appliqué automatiquement; si vous téléchargez sous Unix mais consulterez sous Windows, précisez-le explicitement.

--backup-converted conserve une copie originale de chaque fichier que Wget a modifié lors de la conversion des liens. Cela double la taille de l’archive. Je ne l’utilise pas, mais je le mentionne au cas où vous auriez besoin d’une sauvegarde à la seconde près de chaque modification.

Ouvrir l’invite de commandes dans le bon dossier

Wget s’exécute depuis un terminal, et le terminal doit pointer vers le dossier où vous comptez stocker l’archive. Plusieurs méthodes existent, de la plus standard à la plus avancée:

  • Windows + Rcmd → Entrée, puis cd /d C:\path\to\archive (le drapeau /d permet de changer de lecteur)
  • Si le chemin contient des espaces, placez-le entre guillemets: cd /d "C:\My Archive"

Plus rapide, en une seule ligne: Windows + Rcmd /k "cd /d C:\path\to\archive". Le drapeau /k maintient la fenêtre ouverte après l’exécution de la commande.

Si vous utilisez Total Commander: Commandes → Ouvrir l’interpréteur de commandes ouvre un terminal directement dans le dossier courant. Pour l’Explorateur, il existe une modification du registre qui ajoute une option «Ouvrir la fenêtre de commande ici» au menu contextuel.

Lancer le téléchargement: la commande complète

Rassemblons tous les éléments. Voici la commande que j’utilise pour réaliser la copie miroir d’un site web moyen:

1wget --mirror --page-requisites --convert-links --adjust-extension --compression=auto --reject-regex "/search|/rss" --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" https://example.com

La même chose peut s’écrire avec des drapeaux courts: wget -mkp -E --compression=auto -R "/search|/rss" .... Mais les noms longs rendent la commande auto-documentée. Dans un mois, vous ouvrirez votre fichier .bat et comprendrez immédiatement à quoi sert chaque option.

Remplacez https://example.com par l’URL réelle du site cible et appuyez sur Entrée. Le processus peut durer de quelques minutes à plusieurs heures, selon la taille du site et les limitations du serveur.

Post-traitement: grepWin et corrections types

Après le téléchargement, l’archive nécessite presque toujours quelques finitions. L’utilitaire grepWin est un couteau suisse pour la recherche et le remplacement par lots dans des fichiers texte sous Windows. Voici deux scénarios types:

  • Suppression de balises HTML parasites. Certains CMS génèrent des balises <source> vides qui perturbent l’affichage. Dans grepWin, sélectionnez la recherche par expression régulière pour <source media=".*">, indiquez le masque *.html, et remplacez par une chaîne vide.

  • Correction des chemins de ressources. Si certains chemins sont restés absolus, grepWin les trouvera avec un motif comme src="https://example.com/ et les remplacera par l’équivalent local.

Fenêtre de l'utilitaire grepWin avec les paramètres de recherche et remplacement

Ce n'est qu'un point de départ; chaque site réserve ses propres surprises. Les atouts de grepWin: un aperçu instantané avant remplacement, le traitement récursif des dossiers et la prise en charge des expressions régulières. Mais lorsque le volume des modifications dépasse le simple «rechercher et remplacer», les outils Unix comme sed et grep offrent bien plus de flexibilité. Des versions Windows sont disponibles via WSL ou Cygwin.

Alternative: télécharger depuis une liste d'URL sans récursivité

Le crawling récursif n'est pas toujours approprié. Si le site est immense mais que vous n'avez besoin que d'une sélection spécifique de pages, il est plus simple de préparer une liste d'URL et de la fournir à Wget via --input-file:

1wget --input-file=links.txt --page-requisites --convert-links --adjust-extension --compression=auto --no-if-modified-since --no-check-certificate --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"

Notez que --mirror et --reject-regex sont supprimés: la récursivité n'est pas nécessaire et vous contrôlez vous-même la liste d'URL.

Comment constituer une telle liste? Une méthode consiste à utiliser la recherche avancée de Google: la requête site:yoursite.com "keyword phrase" renvoie les pages indexées sur le sujet. Réglez les résultats sur 100, équipez-vous de l'extension Copy Links pour Chrome et copiez les URL par lots dans links.txt.

Vidéo: mirrorer un site en 5 minutes

Pour voir l'ensemble du processus en direct, de l'installation à l'archive terminée, regardez cette capture d'écran vidéo:

L'auteur reprend le processus depuis le début: téléchargement de Wget, configuration des options, exécution de la commande et ouverture du résultat dans un navigateur. Je vous recommande de la regarder avant votre première exécution; 7 minutes de visualisation vous feront gagner une heure de débogage.

⁉️🤔 Foire aux questions

Puis-je restaurer un site à partir d’une archive Wget?

Une archive Wget est un instantané statique: HTML, CSS, JS et fichiers média. Elle ne contient ni base de données ni logique serveur. Vous ne pouvez pas téléverser une telle copie sur un hébergement et faire revivre WordPress avec les commentaires et l’interface d’administration. C’est un outil de préservation du contenu, pas de sauvegarde. Pour une sauvegarde complète de WordPress, utilisez des extensions comme UpdraftPlus ou Duplicator, qui sauvegardent à la fois les fichiers et la base de données.

Wget télécharge trop de contenu inutile. Comment le limiter?

Une combinaison de --reject-regex (filtre d’URL par motif) et --reject (filtre par extensions de fichier) résout le problème. Par exemple, ajouter --reject=jpg,png,gif ignorera toutes les images. Ou --reject-regex "/tag/|/category/|/page/" exclura les archives par étiquette, les catégories et la pagination. L’essentiel est de tester sur un petit sous-ensemble de pages avant un lancement complet.

Le serveur a bloqué mon IP après le début du téléchargement. Que faire?

Wget peut être détecté via le User-Agent ou la cadence des requêtes. Trois niveaux de protection: usurpation du User-Agent avec --user-agent (présenté plus haut), limitation du débit avec --wait=1 --random-wait (pause d’une seconde plus délai aléatoire), et changement d’IP via un VPN. Pour les sites volumineux, vous pouvez fractionner le téléchargement: préparez plusieurs listes d’URL et exécutez Wget en parallèle depuis différentes machines ou points de terminaison VPN.

Pourquoi Wget est-il préférable aux extensions de navigateur pour sauvegarder des pages?

Les extensions comme SingleFile sauvegardent une page unique. Wget duplique un site entier, avec la navigation, la pagination et tous les liens internes. Pour un blog de 500 articles, une extension de navigateur nécessiterait 500 clics manuels. Wget le fait avec une seule commande. De plus, les extensions de navigateur ne convertissent pas les liens pour une navigation locale: vous obtiendriez 500 fichiers isolés, sans connexion les uns avec les autres.

L’archive pèse plusieurs gigaoctets. Comment la compresser et la stocker?

Un dossier contenant des milliers de petits fichiers est peu pratique à transférer, sauvegarder et analyser avec un antivirus. Je conditionne ces archives au format RAR en utilisant la méthode «Stocker» ou «La plus rapide»: la vitesse importe plus que le taux de compression, car le HTML et les médias sont déjà compressés. J’ajoute toujours un enregistrement de récupération, ce qui sauve la mise en cas de secteurs défectueux sur un disque ou d’erreurs de transfert. Résultat: un fichier unique qui se copie en quelques secondes et ne se désagrège pas pendant le stockage.

Télécharger ou ne pas télécharger: quand Wget vaut la peine

Wget n’est pas fait pour un usage quotidien. C’est un outil dédié à une tâche spécifique: obtenir une copie statique complète d’un site qui vous tient à cœur ou que vous trouvez utile. Quand il y a un risque que la ressource disparaisse, utilisez Wget. Quand vous allez travailler hors ligne, utilisez Wget. Quand vous devez préserver un «fossile numérique» de l’époque Geocities, c’est encore plus justifié.

Pour des pages ponctuelles, une extension de navigateur suffira. Pour une sauvegarde complète de WordPress, utilisez une extension de sauvegarde. Mais lorsque vous avez besoin spécifiquement d’une archive autonome et navigable de tout un site web, Wget n’a pratiquement pas d’alternative, et vous savez désormais comment l’exécuter sous Windows sans difficulté.

Essayez-le sur un petit site d’une connaissance ou sur votre propre blog. La première exécution clarifiera beaucoup de choses, et la seconde se déroulera sans accroc. Et n’oubliez pas l’enregistrement de récupération dans votre archive: faites en sorte que votre collection survive à n’importe quel disque dur.