26 Punkte von GN⁺ 2024-03-25 | 3 Kommentare | Auf WhatsApp teilen
  • Bündelt eine Webseite in einer einzigen HTML-Datei
  • Anders als die vorhandene Funktion „Seite speichern“ speichert monolith nicht nur das Zieldokument, sondern bindet auch CSS-, Bild- und JavaScript-Assets auf einmal mit ein
  • Betten alle Assets als Data-URLs ein, sodass die Seite auch ohne Netzwerkverbindung genauso gerendert werden kann wie im Internet
  • In Rust geschrieben und auf macOS/Windows/Linux installierbar: cargo/brew/choco/snap/apk..

Verwendung

Optionen

  • -a: Audioquellen ausschließen
  • -b: Benutzerdefinierte base URL verwenden
  • -B: Das Abrufen von Assets aus bestimmten Domains verbieten
  • -c: CSS ausschließen
  • -C: Cookies aus file lesen
  • -d: Das Abrufen von Assets nur aus den angegebenen domain(s) erlauben
  • -e: Netzwerkfehler ignorieren
  • -E: Dokument mit benutzerdefiniertem encoding speichern
  • -f: Frames auslassen
  • -F: Webfonts ausschließen
  • -h: Hilfeinformationen anzeigen
  • -i: Bilder entfernen
  • -I: Dokument isolieren
  • -j: JavaScript ausschließen
  • -k: Ungültige X.509-(TLS-)Zertifikate akzeptieren
  • -M: Keine Zeitstempel- und URL-Informationen hinzufügen
  • -n: Inhalt von NOSCRIPT-Elementen extrahieren
  • -o: Ausgabe in file schreiben („-“ für STDOUT verwenden)
  • -s: Stiller Modus
  • -t: network request timeout anpassen
  • -u: Benutzerdefinierten User-Agent angeben
  • -v: Video ausschließen

Domain-Whitelist und Blacklist

  • Mit den Optionen -d und -B lassen sich die Domains steuern, aus denen Assets abgerufen werden dürfen.

Dynamische Inhalte

  • Monolith hat keine JavaScript-Engine, daher können Websites, die nach dem ersten Laden Daten abrufen und anzeigen, zusätzliche Werkzeuge benötigen.
  • Zum Beispiel kann Chromium (Chrome) als Vorverarbeiter für solche Seiten eingesetzt werden.

Proxy-Einstellungen

  • Die Umgebungsvariablen https_proxy, http_proxy, no_proxy müssen gesetzt werden.

Lizenz

  • Creative Commons Zero v1.0 Universal
  • Der Autor widmet im größtmöglichen rechtlichen Umfang alle Urheber- und verwandten Schutzrechte an dieser Software weltweit der Public Domain

Meinung von GN⁺

  • monolith ist ein effektives Werkzeug, um Webseiten auch offline originalgetreu zu bewahren, und kann für Forschende oder Entwickler nützlich sein.
  • Das Tool kann besonders attraktiv für Menschen sein, die sich für Web-Archivierung oder Content-Erhalt interessieren, da es die Möglichkeit bietet, Webseiten auch ohne Internetverbindung zu prüfen.
  • Kritisch betrachtet gibt es die Einschränkung, dass dynamisch geladene Inhalte nicht verarbeitet werden können, was den zusätzlichen Aufwand mit weiteren Werkzeugen verursachen kann.
  • Ähnliche Projekte mit vergleichbarer Funktionalität sind etwa HTTrack oder Wget, die ebenfalls zum Offline-Speichern von Websites verwendet werden können.
  • Vor der Verwendung von monolith sollte geprüft werden, welche Urheberrechte und Nutzungsrechte für die zu speichernde Webseite gelten, damit der Verwendungszweck der gespeicherten Inhalte keine rechtlichen Probleme verursacht.

3 Kommentare

 
yangeok 2024-04-04

Es hat mich genervt, dass alles als Bundle-Datei gespeichert wurde, aber wenn es als eine einzige Datei gespeichert wird, ist das natürlich super, haha. Das wäre praktisch, wenn man ein statisches Website-Archiv erstellt und auf einen Webserver hochlädt ^^

 
secret3056 2024-03-28

Ich habe einmal Bicycle - Alles über die Funktionsweise eines Fahrrads archiviert.
Als ähnliche Browser-Erweiterung, die ich bisher genutzt hatte, gab es SingleFile - ein Tool, das Webseiten als eine einzige HTML-Datei speichert.

Bei beiden Tools funktionierte WebGL jedoch nicht korrekt.
monolith lud das Modell überhaupt nicht herunter,
während SingleFile das Modell herunterlädt und sogar noch das erste Bild rendert, die interaktive Funktion aber nicht unterstützt.

Die Größe der jeweiligen Ausgabedateien beträgt 2 MB bzw. 9 MB. Bei einem Hard Refresh in den Entwicklertools werden 3 MB heruntergeladen.

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

Hacker-News-Kommentare

  • In der README gelernt, wie man unter macOS mit Google Chrome die HTML-Datei einer Webseite erhält, nachdem JavaScript ausgeführt wurde. Die Details in einem TIL festgehalten, und auch das eigene Tool shot-scraper, das Playwright Chromium verwendet, bietet eine ähnliche Funktion.

    • /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --headless --incognito --dump-dom https://github.com > /tmp/github.html
  • Bevorzugt es, Seiten möglichst als einzelne Datei auszuliefern. Das basiert auf dem Prinzip, dass man über „View Source“ alles sehen können sollte. Solche Seiten sind in sich abgeschlossen und können offline genutzt oder erneut hochgeladen werden. Hat ein einfaches Build-System erstellt, das Spiele in TypeScript schreibt und sie zu einer einzelnen HTML-Datei baut. Wenn Browser einmal TypeScript-Syntax unterstützen, werden Compiler oder Build-Schritte überflüssig.

  • Wie schneidet es im Vergleich zu SingleFile ab?

  • Nutzt häufig Dienste, um Webseiten zum späteren Lesen zu speichern, aber wenn sie tatsächlich gelesen werden sollen, existiert die Seite oft nicht mehr. Erwägt daher, stattdessen direkt zu einer Offline-Archivversion zu wechseln.

  • Fragt, wie man eine komplette Website aus der Wayback Machine wiederherstellen kann. Die Datenbank einer geliebten Website wurde gelöscht, aber alle Inhalte existieren im Internet Archive. Vermutlich wären manuelles Scraping und das Anpassen von CSS-URLs mit Python nötig.

  • Hat vor einigen Jahren etwas Ähnliches geschrieben und nutzt es hauptsächlich beim Generieren von HTML aus Go-Programmen. Verlinkt dabei externe Stylesheets und JavaScript und verarbeitet sie anschließend zu einer einzelnen HTML-Datei.

  • Meint, Unterstützung dafür wäre schön, Links bis zu einer angegebenen Tiefe zu verfolgen. Erwähnt eine ähnliche Funktion wie bei Httrack.

  • Findet das Tool interessant, sieht es aber als Notlösung für Probleme in der Art, wie Browser Webseiten verarbeiten. Browser sollten Seiten nicht als Datei „blah.html“ plus Ordner „blah_files“ speichern, sondern beides in einem einzigen Ordner bündeln, damit es sich leicht verschieben und kopieren lässt.

  • Erläutert, wie man mit wget eine Webseite samt aller Assets herunterlädt, und verlinkt die Dokumentation dazu.

  • Teilt einen relevanten Link zu „Show HN: CLI tool for saving web pages as a single file", das im August 2019 auf Hacker News gepostet wurde.