orangescale. Internetagentur Augsburg
Internetagentur

Blog.

Website Clone oder Webseiten Kopie erstellen mit wget oder Httrack

In letzter Zeit kommt es immer öfter vor das die Hosting Anbieter ihre Managed-Webserver auf die neuen PHP-Versionen umstellen bzw. die alten PHP 5.x Versionen abschalten. Damit geht es vielen älteren Webseiten an den Kragen da diese nach einem Serverupdate nicht mehr funktionieren. Alte CMS Systeme laufen nicht mehr unter PHP 7.x und können oft auch nicht ohne größeren Aufwand auf eine aktuelle Version upgegradet werden. Wer den Aufwand kennt, um eine alte Typo3 4.x Version auf eine aktuelle Version upzudaten versucht weiß was ich meine. In den meisten Fällen wäre das vermutlich auch gar nicht mal das eigentliche Problem ein System wie Typo3 oder Contao auf den aktuellen Stand zu bringen. Das was die meiste Arbeit verursacht sind Plug-Ins oder Module, die in der Entwicklung eingestellt wurden oder Funktionen direkt im System integriert wurden etc. die List ist lang warum ein altes Modul nicht mehr funktioniert in einer neuen Version, wobei man auch manchmal Glück haben kann, das es für das eine oder andere eine aktuelle Version gibt und ein Update möglich ist. Dann kommen noch Template Anpassungen dazu und am Ende hat man doch nur eine alte Website. Darum kommt man meistens zu dem Schluss das es unwirtschaftlich ist die alte Website upzudaten, an der schon seit Jahren nichts mehr gewartet wurde.

Nun kommen wir zum eigentlichen Thema denn es gibt noch die Möglichkeit ein Abbild der alten Seite in reinen HTML, CSS und JavaScript zu erzeugen. Als Übergangslösung auch für größere Seiten sicher nicht ganz uninteressant. Na gut, man kann nicht mehr wie gewohnt die Inhalte über ein CMS pflegen aber mal ehrlich das ist bei vielen Seiten auch gar nicht so entscheidend da viele Seiten über Monate nicht angerührt und verändert werden. Wer gelegentlich kleine Inhaltliche Änderungen hat und sich das per HTML direkt im Quelltext zutraut zu ändern für den wäre das schon eine gute Lösung bis eine neue Seite fertig ist. Ein Haken hat das Ganze auch so sind alle dynamischen Funktionen verschwunden, die eine Serverseitige Scriptsprache voraussetzen.

Ein gutes Tool ist HTTrack Website Copier welches Freeware ist und als Windows- oder Linux Version hier herunterladbar ist: https://www.httrack.com . Es gibt auch ein Mac OSX Package für Xcode oder Homebrew. Mit dem Tool erzielt man gute Ergebnisse. Bei einem Projekt ist es mir nicht gelungen das Tool nach meinen benötigten wünschen ausreichend zu konfigurieren. Ich denke das ist auch alles sehr Projekt abhängig. Ich habe mich deshalb auch mit wget beschäftigt, um ans Ziel zu kommen. Das Tool kann auf vielen Systemen verwendet werden und ist ein freies Kommandozeilenprogramm. Ich habe es unter Mac OSX verwendet und habe es über Homebrew installiert mit diesem Befehl: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" danach wird noch wget installiert: $ brew install wget

Mit folgendem Befehl sind die Einstellungen für die meisten Webseiten abgedeckt, um diese sauber runter zu laden in vollem Umfang: wget --mirror --convert-links --adjust-extension --page-requisites --no-parent -nc -r https://www.meinedomain.de

Mit wget --help oder -h kann man sich die Funktionen genauer ansehen wer genau wissen möchte welche Parameter hier greifen oder zusätzliche benötigt. Wer den Prozess im Hintergrund ausführen sollte und ihn beenden will kann das mit pkill -9 wget machen oder wenn es im Vordergrund aktiv ist mit ctrl+c. Die Option -E erzwingt die Endung .html für alle Dateien das ist dann nützlich, wenn .php- oder .asp-Seiten geladen werden.

Für einen speziellen Fall war es nötig zusätzliche URL-Parameter bzw. URL-Variablen raus zu filtern da die Seiten, die gespeichert werden, sonst z.B. so aussehen könnten "meinedatei.html?parameter1=123", "meinedatei.html?parameter1=345" oder "meinedatei.html?parameter1=678". Denn so würde dann eine einzige Seite mit allen möglichen und vorkommenden Variablen in den Dateinamen gespeichert werden. Die Seite könnte so sogar funktionieren, aber wenn man nun viele Seiten hat, die dann unterschiedlich verlinkt sind und es aber eigentlich nur eine physikalische Seite benötigt wird es das unmöglich machen den Inhalt der Seite nachträglich zu verändern da wir unter Umständen mehrere hundert Seiten mit dem gleichen Inhalt hätten und die gesamte Webseite würde sich wahnsinnig aufblähen. So kann man dann nicht benötigte Phrasen aus der URL rausfiltern die dann nicht mit aufgenommen werden sollen oder umgekehrt explizit mit aufgenommen werden sollen mit --reject-regex oder --accept-regex.

Mein gesamter Befehl sieht dann so aus: wget --mirror --convert-links --adjust-extension --page-requisites --no-parent -nc -r --reject-regex '\?parameter1=|\?parameter2=' https://www.meinedomain.de

Hier filtere ich in meinem Fall alle Werte inkl. der URL Variable "parameter1" und "parameter2" raus damit erhalte ich nur noch eine Datei die mit .html endet und nicht wie oben schon gezeigt viele Dateien mit unterschiedlichen Parametern.

Als Webdesigner & Webentwickler ist das sicher ein Werkzeug, welches man immer mal wieder benötigt und auch zum Archivieren alter Internetseiten gut verwenden kann damit eine Website lokal ohne Webserver ausgeführt wird.

Veröffentlicht am

#Tags

<