Aller au contenu
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

Monolith – L’outil parfait pour sauvegarder le web

Je vais vous parler aujourd’hui d’un outil vraiment cool pour faire de l’archivage de pages web. Alors oui, je sais, on peut déjà enregistrer une page web avec le navigateur, mais cet outil baptisé Monolith permet de faire 1000 fois mieux que ça. Il va non seulement sauvegarder la page cible, mais aussi embarquer d’un coup tous les éléments CSS, images et JavaScript dans un seul et unique fichier HTML5.

Et contrairement à une sauvegarde classique ou même avec wget, Monolith intègre tous les assets en URLs de données. Ça veut dire que votre navigateur va pouvoir afficher la page exactement comme elle était sur le web, même sans connexion Internet !

Pour l’installer, c’est ultra simple. Que vous soyez sur Windows, macOS, GNU/Linux ou même sur des devices exotiques avec des processeurs ARM, ça marchera forcement :

  • Avec Cargo (cross-platform) : cargo install monolith
  • Via Homebrew (macOS et GNU/Linux) : brew install monolith
  • Avec Snapcraft (GNU/Linux) : snap install monolith
  • Et plein d’autres options encore…

Ensuite, pour sauvegarder par exemple cet article de mon site, il vous suffit d’entrer la commande suivante :

monolith https://korben.info/monolith-archivage-web-html-autonome.html -o monolith.html

Et paf, ça vous génère direct un fichier monolith.html avec tout ce qu’il faut dedans. Vous pouvez l’ouvrir tranquillou dans votre navigateur même sans accès internet, c’est magique.

Mais Monolith a encore plein d’autres tours dans son sac. Vous pouvez par exemple l’utiliser directement avec une entrée STDIN :

cat index.html | monolith -aMcIiFfv -b https://site.com/ - > result.html

Ici, on lui passe le contenu HTML via l’entrée standard, avec quelques options en plus :

  • -a pour virer les audios
  • -M pour ne pas ajouter les infos de date et d’URL
  • -c pour exclure les CSS
  • -I pour isoler le document
  • -i pour retirer les images
  • -F pour exclure les web fonts
  • -f pour zapper les frames
  • -v pour virer les vidéos

Bref, vous avez un contrôle total sur ce que vous voulez garder ou non.

Vous pouvez aussi spécifier les domaines autorisés ou interdits pour récupérer les assets, genre :

monolith -I -d example.com -d www.example.com https://example.com -o example-only.html

Là on autorise uniquement les domaines example.com et www.example.com. Tout ce qui vient d’ailleurs sera zappé. Ou à l’inverse, on peut dégager des domaines, typiquement ceux qui servent de la pub :

monolith -I -B -d .googleusercontent.com -d googleanalytics.com -d .google.com https://example.com -o example-no-ads.html

Après, faut savoir que Monolith n’embarque pas de moteur JavaScript. Donc pour les pages web un peu complexes qui vont chercher des données après le chargement initial, ça peut être limité. Mais pas de panique ! On peut utiliser un navigateur headless comme Chromium en amont, pour pré-processer la page avant de la passer à Monolith :

chromium --headless --incognito --dump-dom https://github.com | monolith - -I -b https://github.com -o github.html

Et hop, problème réglé !

Parfait donc pour les archivistes du web ou les data hoarders qui veulent garder une trace de tout, voire automatiser tout ça dans leurs scripts.


Les articles du moment