26 points par GN⁺ 2024-03-25 | 3 commentaires | Partager sur WhatsApp
  • Regroupe une page web dans un seul fichier HTML
  • Contrairement à la fonction classique « enregistrer la page », monolith sauvegarde en une seule fois non seulement le document cible, mais aussi les assets CSS, images et JavaScript
  • Intègre tous les assets sous forme de Data URL, ce qui permet de rendre la page exactement comme sur Internet, même sans connexion réseau
  • Écrit en Rust, installable sur macOS / Windows / Linux via cargo / brew / choco / snap / apk..

Utilisation

Options

  • -a : exclure les sources audio
  • -b : utiliser une base URL personnalisée
  • -B : interdire la recherche des assets sur certains domaines
  • -c : exclure le CSS
  • -C : lire les cookies depuis file
  • -d : autoriser la recherche des assets uniquement sur le(s) domain(s) spécifié(s)
  • -e : ignorer les erreurs réseau
  • -E : enregistrer le document avec un encoding personnalisé
  • -f : omettre les frames
  • -F : exclure les polices web
  • -h : afficher l’aide
  • -i : supprimer les images
  • -I : isoler le document
  • -j : exclure le JavaScript
  • -k : accepter les certificats X.509 (TLS) invalides
  • -M : ne pas ajouter les horodatages ni les informations d’URL
  • -n : extraire le contenu des éléments NOSCRIPT
  • -o : écrire la sortie dans file (utiliser « - » pour STDOUT)
  • -s : mode silencieux
  • -t : ajuster le network request timeout
  • -u : fournir un User-Agent personnalisé
  • -v : exclure la vidéo

Liste blanche et liste noire de domaines

  • Les options -d et -B permettent de contrôler les domaines depuis lesquels les assets peuvent être récupérés.

Contenu dynamique

  • Monolith n’intègre pas de moteur JavaScript ; les sites web qui récupèrent et affichent des données après le chargement initial peuvent donc nécessiter des outils supplémentaires.
  • Par exemple, Chromium (Chrome) peut être utilisé comme préprocesseur pour ce type de pages.

Configuration du proxy

  • Il faut définir les variables d’environnement https_proxy, http_proxy, no_proxy.

Licence

  • Creative Commons Zero v1.0 Universal
  • Dans la mesure permise par la loi, l’auteur dédie au domaine public mondial tous les droits d’auteur et droits voisins sur ce logiciel

Avis de GN⁺

  • monolith est un outil efficace pour conserver une page web à l’identique hors ligne, et peut être utile aux chercheurs comme aux développeurs.
  • Cet outil peut être particulièrement attrayant pour les personnes intéressées par l’archivage web ou la préservation de contenus, car il permet de consulter des pages web même dans un environnement sans connexion Internet.
  • D’un point de vue critique, il a la limite de ne pas pouvoir gérer les contenus chargés dynamiquement, ce qui peut obliger l’utilisateur à recourir à des outils supplémentaires.
  • Parmi les autres projets offrant des fonctions similaires, on peut citer HTTrack ou Wget, qui peuvent eux aussi servir à enregistrer des sites web pour une consultation hors ligne.
  • Avant d’utiliser monolith, il est important de vérifier les droits d’auteur et les autorisations d’usage de la page web à enregistrer, et de veiller à ce que l’utilisation du contenu sauvegardé ne pose pas de problème juridique.

3 commentaires

 
yangeok 2024-04-04

Ça m’agaçait de devoir enregistrer des fichiers bundle, donc si on peut tout sauvegarder en un seul fichier, c’est parfait haha. Ça sera sûrement pratique pour archiver un site statique et le mettre en ligne sur un serveur web ^^

 
secret3056 2024-03-28

J’ai essayé d’archiver Bicycle - tout sur les principes qui permettent à un vélo d’avancer.
J’utilisais auparavant une extension de navigateur similaire, SingleFile - un outil qui enregistre une page web dans un unique fichier HTML,

mais aucun des deux outils ne faisait fonctionner correctement WebGL.
Monolith ne téléchargeait carrément pas le modèle, et
SingleFile télécharge le modèle et affiche jusqu’à la première image, mais sans le comportement interactif.

La taille de chaque sortie est de 2 Mo et 9 Mo. Avec un hard refresh dans les outils de développement, 3 Mo sont téléchargiés.

chrome.exe `  
--headless `  
--incognito `  
--virtual-time-budget=50000 `  
--dump-dom https://ciechanow.ski/bicycle/ | monolith `  
- `  
-I `  
-b https://ciechanow.ski/bicycle/ `  
-o bicycle.html  
 
GN⁺ 2024-03-25

Commentaires sur Hacker News

  • A appris dans le README comment obtenir le fichier HTML d’une page web après l’exécution de JavaScript en utilisant Google Chrome sur macOS. A résumé les détails dans un TIL, et son propre outil, shot-scraper, qui utilise Playwright Chromium, offre une fonctionnalité similaire.

    • /Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome \\ --headless --incognito --dump-dom https://github.com > /tmp/github.html
  • Préfère distribuer autant que possible des pages en fichier unique. Cela repose sur le principe qu’on devrait pouvoir tout voir via l’affichage du code source. Ces pages sont autonomes et peuvent être utilisées hors ligne ou remises en ligne. A créé un système de build simple pour écrire des jeux en TypeScript et les compiler en un seul fichier HTML. Si le navigateur prend un jour en charge la syntaxe TypeScript, il n’y aura plus besoin de compilateur ni d’étape de build.

  • Comment cela se compare-t-il à SingleFile ?

  • Utilise souvent des services qui enregistrent des pages web pour les lire plus tard, mais au moment de les lire, la page n’existe souvent plus. Envisage que basculer vers une version d’archive hors ligne puisse être une meilleure option.

  • Question sur la manière de restaurer un site web complet depuis Wayback Machine. La base de données d’un site apprécié a été supprimée, mais tout son contenu existe dans Internet Archive. Il faudra probablement faire du scraping manuel et corriger les URL CSS avec Python.

  • A écrit quelque chose de similaire il y a quelques années, principalement pour générer du HTML depuis des programmes Go. Utilise des liens vers des feuilles de style externes et du JavaScript, puis les transforme en un seul fichier HTML.

  • Souhaite une prise en charge d’une fonctionnalité permettant de suivre les liens jusqu’à une profondeur donnée. Mentionne une fonctionnalité similaire à Httrack.

  • Estime que cet outil est intéressant, mais qu’il s’agit d’un pis-aller pour résoudre un problème lié à la façon dont les navigateurs gèrent les pages web. Soutient qu’au lieu d’enregistrer une page sous la forme d’un fichier "blah.html" et d’un dossier "blah_files", le navigateur devrait regrouper les deux dans un seul dossier facile à déplacer et à copier.

  • Explique comment utiliser wget pour télécharger une page web et toutes ses ressources, et fournit un lien vers la documentation.

  • Fournit un lien connexe vers « Show HN: CLI tool for saving web pages as a single file », publié sur Hacker News en août 2019.