Wie laden Sie eine ganze Website für die Offline-Anzeige mit Wget herunter?

Ich möchte die Gesamtheit einer relativ kleinen Website (~50 Seiten) für die Offline-Anzeige herunterladen.

Ich könnte jede Seite manuell in einem Browser öffnen und sie über herunterladen ctrl + s, und dies würde das gewünschte Ergebnis erzielen. Dies würde jedoch bei einer Website dieser Größe sehr lange dauern, zeitaufwendig zu organisieren sein und viel Platz für menschliches Versagen bieten (fehlende Seiten, Seiten in falsche Verzeichnisse usw.).)

Wget und seine rekursive funktionalität scheint eine großartige Lösung zu sein, aber ich habe Probleme, das gewünschte Ergebnis zu erzielen.

Das gewünschte Ergebnis.

Jede einzelne Seite auf einer Domain und alle erforderlichen Ressourcen jeder Seite (die sich möglicherweise auf anderen Domains befinden) müssen heruntergeladen werden. Sonst nichts.

Das Problem

Viele erforderliche Ressourcen befinden sich in externen Domänen. Diese Domänen sind zahlreich, kann jederzeit ändern, und sind nicht einfach, eine genaue Liste zu bekommen.

Mein Bestes Versuch

Ich habe diesen Befehl versucht:

wget -r -k -p -H -l inf -w 1 --limit-rate=40k -H -e robots=off https://my.desired.website/

  • -r wird verwendet, um Seiten rekursiv herunterzuladen.
  • -k wird verwendet, um Links für eine vereinfachte Offline-Anzeige zu konvertieren.
  • -p wird verwendet, um Wget anzuweisen, die erforderlichen Ressourcen herunterzuladen.
  • -H erlaubt Host-Spanning ohne Einschränkungen.
  • -l inf wird verwendet, um sicher zu sein, dass jede einzelne Seite auf der gewünschten Website heruntergeladen wird, unabhängig davon, wie tief sie sich in der Seitenhierarchie befindet sein.
  • -w 1 --limit-rate=40k wird verwendet, um Download-Rate und Geschwindigkeit zu begrenzen, um nicht unhöflich zu Hosts zu sein.
  • -e robots=off weist Wget an, "Roboter" zu ignorieren.txt" - Dateien und "nofollow" - links.

Leider lädt dieser Befehl aufgrund des Flags -H nicht nur jede einzelne Seite der gewünschten Website herunter, sondern folgt weiterhin allen externen Links und lädt die gesamte gefundene Website herunter. Dies würde wahrscheinlich dazu führen, dass versucht wird, die gesamte Öffentlichkeit herunterzuladen Web.

Ohne das Flag -H werden jedoch keine externen Ressourcen heruntergeladen, die zum Anzeigen der Website erforderlich sind (z. B. Bilder, JS, CSS usw. die auf externen Domains gehostet werden)

Sie können dann sagen, dass ich das Flag -D verwenden und jede Domäne, in der externe Ressourcen aufbewahrt werden, auf die Whitelist setzen sollte. Dies ist auch keine großartige Lösung, da ich nicht die volle Kontrolle darüber habe, wo die Website gehostet wird... die Liste der externen Domänen, in denen Ressourcen gehostet werden, kann sich jederzeit ändern zeit, und ich kann nicht jede Domain manuell zuverlässig finden, ohne sie zu verpassen.

Die "echte" Frage

Meine Frage lautet also im Wesentlichen:

Ist es möglich, Wget nur zuzulassen, Hosts zu überspannen, wenn erforderliche Ressourcen heruntergeladen werden?

Wenn nicht, gibt es ein Tool, das diese Art von Download ermöglicht?

Author: Jacob Marciniec, 2020-10-21

1 answers

Nein. Zu diesem Zeitpunkt ist in Wget keine Methode integriert, mit der Sie Hosts nur für erforderliche Ressourcen überspannen können.

Wenn Sie Wget verwenden müssen, kann die akzeptierte Antwort von Diese Frage zum Stapelüberlauf für Sie hilfreich sein.

Wenn Sie ein anderes Tool verwenden möchten, lohnt es sich vielleicht, sich mit HTTrack zu befassen.

Beachten Sie, dass keine dieser Lösungen JavaScript ausführt und die endgültige Webseite speichert, die in einem Browser angezeigt wird. Also, wenn Sie sind wenn Sie versuchen, eine Website genau so zu archivieren/zu sichern, wie dies ein Endbenutzer sehen würde, müssen Sie sich wahrscheinlich eingehender mit diesem Thema befassen, und Ihre Lösung erfordert möglicherweise mehr als einen einzelnen Schritt und ein einzelnes Tool.

 0
Author: Jacob Marciniec,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-10-21 13:50:19