Ein grundlegendes Discourse-Archivierungstool

Ein Discourse-Forum, das ich benutze, wird in ein paar Wochen offline genommen, also habe ich mich daran gemacht, die Seite zu archivieren. Ich habe viel recherchiert, experimentiert und eine einfache Lösung mit HTTrack gefunden. Hier ist alles, was ich gelernt habe.

Discourse-Seite mit HTTrack archivieren
Für Windows-Benutzer scheint die beste Lösung HTTrack zu sein. Dies hat großartig funktioniert und die Seite in HTML-Dateien archiviert. Alle Kategorien, Threads und Beiträge wurden archiviert, einschließlich aller Seiten mit relativen Navigationslinks.

Eine grundlegende Anleitung zu HTTrack finden Sie hier. Ich habe die Einstellungen auf Standard belassen, mit den folgenden benutzerdefinierten Einstellungen:

  • Webadressen:
    • https://forums.gearboxsoftware.com/c/homeworld/
    • https://forums.gearboxsoftware.com/c/homeworld-dok/
  • Scan-Regeln:
    • -gearboxsoftware.com/* -forums.gearboxsoftware.com/* +forums.gearboxsoftware.com/c/homeworld/* +forums.gearboxsoftware.com/c/homeworld-dok/* +forums.gearboxsoftware.com/t/* +forums.gearboxsoftware.com/user_avatar/* +sea2.discourse-cdn.com/*
  • Browser-ID (auch bekannt als User Agent):
    • Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Hinweis: Es gibt ein CSS-Problem, das die Kategorie-Links daran hindert, zu funktionieren. Dies kann jedoch wie unten beschrieben einfach behoben werden.

CSS-Problem
Beim Anzeigen von Kategorieseiten als googlebot funktionieren die Thread-Links nicht. Ein Beispiel ist hier.

Dies macht die Navigation auf Kategorieseiten in HTTrack, archive.org und Google Cache unmöglich. Dies scheint ein Discourse-Problem in einer CSS-Datei zu sein. Um die Links zu beheben, blockieren/löschen Sie einfach die folgende CSS-Datei:

  • stylesheets/desktop_theme_10_1965d1d398092f2d9f956b36e08b127e00f53b70.css?__ws=forums.gearboxsoftware.com

@codinghorror - Können Sie sich darum kümmern?

Herausforderungen
Ich stieß auf die folgenden Herausforderungen und überwand sie schließlich nach viel Herumprobieren.

  • Discourse-Seiten werden dynamisch mit JavaScript generiert. Dies führt zu schlechten Ergebnissen mit den meisten Archivierungs-/Crawler-Tools.
  • Die meisten Threads laden nur mit den ersten ca. 20? Beiträgen, die restlichen Beiträge erscheinen erst, wenn Sie nach unten scrollen. Das Drücken von Strg+P lädt eine /print-Seite mit allen sichtbaren Beiträgen. Benutzer sind auf das Drucken von 5 Seiten pro Stunde im Druckmodus beschränkt, diese Grenze kann jedoch von einem Discourse-Site-Administrator erhöht werden.
  • Adrelanos bemerkte, dass mehrseitige Threads von HTTrack nicht richtig archiviert wurden, ich vermute jedoch, dass dieses Problem auf seine HTTrack-Einstellungen zurückzuführen war, da ich dieses Problem nicht hatte.
  • Das Speichern einer Seite als PDF enthält keine zusammengeklappten Detailbereiche.
  • Seiten können in einfachem HTML geladen werden, indem ?_escaped_fragment_ am Ende einer URL hinzugefügt wird, aber dieser Trick funktioniert nur für Threads, nicht für Kategorien.

Die oben genannten Herausforderungen sind kein Problem, wenn Sie erfahren, dass alle Discourse-Seiten/Inhalte ordnungsgemäß als HTML für Crawler gerendert werden können. Um dies zu tun, müssen Sie den User Agent Ihres Crawlers/Browsers auf googlebot ändern, um die HTML-Version der Seiten zu erhalten.

Archive.org
Wenn Sie die Funktion “Seite jetzt speichern” auf web.archive.org verwenden, wird die JavaScript-Version von Discourse mit schlechten Ergebnissen archiviert. Archive.org verwendet den User Agent der Person, die das Archiv anfordert. Sie müssen also Ihren User Agent auf googlebot ändern. Sie können eine Chrome-Erweiterung namens “User-Agent Switcher for Chrome” erhalten. Fügen Sie in den Optionen hinzu:

  • Name: Googlebot
  • String: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
  • Gruppe: Chrome
  • Indikator-Flagge: 1

Alternative Archivierungstools
Viele Tools sind hier aufgelistet: Archive an old forum "in place" to start a new Discourse forum
Ich habe auch kurz GUI-Tools wie Cyotek WebCopy, A1 Website Download und WAIL getestet.
Zu den Befehlszeilentools gehören das Tool von mcmcclur und wget. Eine Anleitung zu wget finden Sie hier.
Für Windows-Benutzer scheint HTTrack jedoch die beste Lösung zu sein.

Hinweis: Da ich ein neuer Benutzer bin, bin ich auf zwei Links in einem Beitrag beschränkt. Daher habe ich einige Links in vorformatierten Text umgewandelt.

9 „Gefällt mir“

Ich habe nun die Ursache identifiziert. Es stellte sich heraus, dass das Hintergrundbild mit den Links kollidiert!

In dieser Datei:
stylesheets/desktop_theme_10_1965d1d398092f2d9f956b36e08b127e00f53b70.css

In diesem Code:

body:before {
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
    content: "";
    display: block;
    background-color: #000000;
    background-image: url("data:image/svg+xml,%3Csvg width='6' height='6' viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%23adadad' fill-opacity='0.4' fill-rule='evenodd'%3E%3Cpath d='M5 0h1L0 6V5zM6 5v1H5z'/%3E%3C/g%3E%3C/svg%3E");
    position: fixed;
    height: 100vh;
    width: 100vw;
    top: 0;
    left: 0;
    z-index: 0;
    opacity: 0.03;
    background-size: 70%;
}

CSS-Problembehebung
Verschieben Sie das Hintergrundbild eine Ebene nach unten, um die Links zu reparieren.

  • Öffnen Sie stylesheets/desktop_theme_10_1965d1d398092f2d9f956b36e08b127e00f53b70.css und ersetzen Sie alle drei “z-index:-1;” durch “z-index:-2;”. Ersetzen Sie dann “z-index:0;” durch “z-index:-1;”.
  • Öffnen Sie dann desktop_32713c1b6551369eb391868f3d4e3f2ac9c38cf1.css und ersetzen Sie einfach alle drei “z-index:-1;” durch “z-index:-2;”. Die Links funktionieren dann.
7 „Gefällt mir“

Danke für die Information, da dies eine Crawler-/Archivansicht ist, sollten diese Bilder sowieso nicht angezeigt werden… daher habe ich einen PR geöffnet, um sie zu entfernen

6 „Gefällt mir“

Für das, was es wert ist, habe ich ein minimales, lauffähiges Python-Skript geschrieben, das mit der API ein einfaches Backup von Post-Inhalten durchführt: GitHub - jamesob/discourse-archive: Provides a simple archive of Discourse content

Es ist ziemlich rudimentär, sollte aber jemandem eine grobe Vorstellung davon geben, wie man ein für die Öffentlichkeit geeignetes Archiv erstellt.

4 „Gefällt mir“

Ich habe gerade eine Möglichkeit gefunden, alle Inhalte einer Discourse-Site modular zu scrapen (Wählen Sie aus, welche Kategorien/Themen/Limits gescrapt werden sollen). Schauen Sie sich das an. Bisher ist es nur ein Werkzeug, um eine lokale/statische Version einer Website zu erhalten: GitHub - Diegorb1329/broad_listening_eth

1 „Gefällt mir“