Geonode logo
Geonode Team

Geonode Team

Aktualisiert: 7. Oktober 2026

Veröffentlicht: 02.09.2026

Tools zum Kopieren von Webseiten: Ein umfassender Leitfaden

Ein Website-Ripper lädt die Seiten und Inhalte einer Website auf Ihre eigene Festplatte herunter und schreibt die Links so um, dass die Website offline funktioniert. Diese Kategorie gibt es schon lange, die Tools sind ausgereift, und die meisten von ihnen funktionieren auf modernen Websites aus demselben Grund nicht mehr. Dieser Grund ist JavaScript, und wenn Sie das verstehen, können Sie zuverlässiger entscheiden, welches Tool Sie wählen sollten, als es jeder Funktionsvergleich vermag. Dieser Leitfaden behandelt die Tools, die man kennen sollte, was jedes einzelne tatsächlich leistet und welche Grenzen – technische, rechtliche und höflichkeitsbezogene – für alle gelten.

Unsere Position ist klar: Wir sind Geonode und verkaufen Proxys, die hierfür so gut wie nie benötigt werden. Das Spiegeln einer Website, für die Sie die Erlaubnis haben, ist eine Aufgabe mit einer einzigen Quelle und moderatem Datenvolumen, die problemlos über Ihre eigene Verbindung läuft. Wenn Sie dafür Proxys in Betracht ziehen, bedeutet das in der Regel, dass Sie etwas mit einer Geschwindigkeit spiegeln, die die Website beanstandet, und die richtige Lösung besteht darin, die Geschwindigkeit zu drosseln, anstatt den Datenverkehr zu verteilen. Es gibt eine echte Ausnahme – das Spiegeln regionsspezifischer Inhalte –, auf die weiter unten eingegangen wird. Alles andere in diesem Artikel funktioniert von einem Laptop aus, ganz ohne Infrastruktur.

Was diese Tools tatsächlich leisten

Vier Schritte, bei jedem Tool dieser Kategorie.

Eine Seite abrufen. Den HTML-Code herunterladen. Die Ressourcen finden. Nach Bildern, Stylesheets, Skripten und Schriftarten suchen und diese ebenfalls nachverfolgen. Den Links folgen. Weitere Seiten innerhalb des von Ihnen definierten Bereichs entdecken. Die Verweise umschreiben. Absolute URLs in relative Pfade umwandeln, damit die Kopie von Ihrem Dateisystem aus funktioniert.

Dieser vierte Schritt unterscheidet einen Ripper von einem Crawler. Ein Crawler sammelt Daten; ein Ripper erstellt eine durchsuchbare lokale Kopie, und das Umschreiben der Links macht den Unterschied aus.

Die legitimen Verwendungszwecke sind unspektakulär: das Archivieren einer Website, bevor sie offline geht, das Offline-Speichern von Dokumentationen für Reisen oder ein eingeschränktes Netzwerk, die Migration zwischen Plattformen, das Führen von Compliance-Aufzeichnungen und das Sichern der eigenen Arbeit, wenn ein Host den Betrieb einstellt.

wget: Die Standardlösung

Ist bereits auf den meisten Unix-Systemen vorhanden und für einen Großteil der Aufgaben ausreichend.

wget --mirror --convert-links --adjust-extension --page-requisites \
     --no-parent --wait=1 --random-wait \
     https://example.com/docs/

Jede Option hat ihre Berechtigung, und das wget-Handbuch beschreibt sie genau.

**--mirror

** „aktiviert Optionen, die für das Spiegeln geeignet sind. Diese Option aktiviert Rekursion und Zeitstempel, legt eine unbegrenzte Rekursionstiefe fest und behält FTP-Verzeichnislisten bei. Sie entspricht derzeit -r -N -l inf --no-remove-listing

.“

**--page-requisites

** „bewirkt, dass Wget alle Dateien herunterlädt, die für die korrekte Darstellung einer bestimmten HTML-Seite erforderlich sind. Dazu gehören beispielsweise eingebettete Bilder, Sounds und referenzierte Stylesheets.“ Ohne diese Option erhält man HTML ohne Formatierung und ohne Bilder.

**--convert-links

** schreibt Verweise „nach Abschluss des Downloads … so um, dass sie für die lokale Anzeige geeignet sind“, was sich „nicht nur auf die sichtbaren Hyperlinks, sondern auf jeden Teil des Dokuments auswirkt, der auf externe Inhalte verweist“.

**--adjust-extension

** hängt „.html

“ an Seiten an, die als HTML ohne HTML-Erweiterung bereitgestellt werden – das Handbuch nennt als Beispiel „das Spiegeln einer Remote-Site, die .asp-Seiten verwendet, wobei Sie möchten, dass die gespiegelten Seiten auf Ihrem Standard-Apache-Server angezeigt werden können“.

**--no-parent

** stellt sicher, „dass nur die Dateien unterhalb einer bestimmten Hierarchie heruntergeladen werden“; dadurch wird der Auftrag auf /docs/

beschränkt und nicht auf die gesamte Website.

**--wait=1

** ist das Höflichkeitsflag, und das Handbuch empfiehlt es ausdrücklich: „Die Verwendung dieser Option wird empfohlen, da sie die Serverlast verringert, indem sie die Häufigkeit der Anfragen reduziert.“ Kombinieren Sie sie mit --random-wait

, was laut Handbuch „von dieser unklugen Empfehlung inspiriert wurde, viele unbeteiligte Nutzer aufgrund der Handlungen eines Einzelnen von einer Website auszuschließen“.

Zwei weitere Optionen, die es zu kennen lohnt: -Q

legt ein Download-Kontingent fest, damit ein unbegrenzter Mirror nicht Ihre Festplatte füllt. Und -l

legt eine Rekursionstiefe fest, falls „infinite“ zu großzügig ist.

Die Einschränkungen von wget sind real: Es führt kein JavaScript aus, seine Link-Umschreibung ist gut, aber auf komplexen Websites nicht perfekt, und es verfügt über keine grafische Benutzeroberfläche. Für eine Dokumentationsseite oder ein statisches Blog spielt all das keine Rolle.

HTTrack: Der grafische Klassiker

HTTrack ist das bekannteste spezialisierte Tool in dieser Kategorie – Open Source, plattformübergreifend und sowohl mit einer grafischen Benutzeroberfläche als auch über die Befehlszeile bedienbar. Das Projekt wird weiterhin aktiv weiterentwickelt.

Vorteile gegenüber wget: eine echte Benutzeroberfläche für alle, die nicht im Terminal zu Hause sind, bessere Handhabung komplexer Linkstrukturen, fortsetzbare Projekte und ein Aktualisierungsmodus, der nur die geänderten Inhalte erneut spiegelt.

Wo es nicht besser ist: dieselbe grundlegende Einschränkung – keine Ausführung von JavaScript – sowie eine Filtersyntax, deren Beherrschung etwas Einarbeitungszeit erfordert, und ein Ruf unter Website-Betreibern, der dazu führt, dass manche es anhand des User-Agents blockieren.

Für einen nicht-technisch versierten Nutzer, der eine durchsuchbare Kopie einer statischen Website benötigt, ist dies die Empfehlung. Für alle, die mit einer Shell vertraut sind, erledigt wget dieselbe Aufgabe mit weniger Überraschungen.

Einseitige Tools

Eine andere Art von Lösung – und oft genau die richtige.

Wenn Sie statt einer ganzen Website nur eine einzige Seite fertigstellen möchten, sind Tools, die alles in eine einzige, in sich geschlossene HTML-Datei einbetten, nützlicher als ein Mirror. Sie betten Bilder als Daten-URIs ein, integrieren das CSS und erzeugen eine einzige Datei, die Sie per E-Mail versenden, archivieren oder überall ohne Abhängigkeiten öffnen können.

Browser-Erweiterungen dieser Art sind für die meisten Nutzer die praktischste Lösung und haben gegenüber jedem hier vorgestellten Befehlszeilentool einen entscheidenden Vorteil: Sie erfassen die Seite so, wie sie gerendert wird, nachdem JavaScript ausgeführt wurde. Bei einer modernen Anwendung ist das der Unterschied zwischen einer funktionierenden Kopie und einer leeren Hülle.

Der Nachteil ist, dass sie manuell bedient werden müssen – Seite für Seite, durch einen menschlichen Klick. Bei einer Handvoll Seiten ist das in Ordnung; bei tausend Seiten hingegen nicht.

ArchiveBox und Tools zur Archivierung

ArchiveBox ist die erste Wahl, wenn es eher um die Archivierung als um das Offline-Browsen geht. Das Tool nimmt URLs entgegen und erzeugt gleichzeitig mehrere Archivformate – HTML, einen Screenshot, eine PDF-Datei, extrahierten Text und eine WARC-Datei.

WARC ist das Format, das man kennen sollte, da es von Webarchiven verwendet wird. Es speichert die HTTP-Transaktionen selbst und nicht nur eine Annäherung an das Dateisystem, was bedeutet, dass Header, Statuscodes und die exakten Bytes erhalten bleiben. Für alle Bereiche, in denen es auf Genauigkeit ankommt – Recht, Compliance, Forschung –, ist dies eine wesentlich bessere Aufzeichnung als ein Verzeichnis mit umgeschriebenem HTML.

ArchiveBox wird selbst gehostet, führt einen Index und verarbeitet JavaScript mithilfe eines headless Browsers. Es ist ressourcenintensiver als wget, erzeugt aber ein dauerhafteres Ergebnis.

Warum sie alle mit modernen Websites zu kämpfen haben

Die einzige Erklärung für die meisten Enttäuschungen in dieser Kategorie.

JavaScript-Rendering. wget und HTTrack laden HTML herunter und analysieren es. Eine Single-Page-Anwendung gibt ein fast leeres Dokument sowie ein Skript-Bundle zurück, und der Inhalt wird im Browser zusammengesetzt. Was Sie spiegeln, ist die Hülle.

API-gesteuerte Inhalte. Selbst wenn der ursprüngliche HTML-Code Inhalte enthält, können nachfolgende Navigationsschritte JSON-Daten von einer API abrufen. Diese Anfragen werden per Code gestellt, nicht über Links im Markup, sodass ein Spiegel, der Links nachverfolgt, sie niemals entdeckt.

Unendliches Scrollen und Lazy Loading. Inhalte, die erst bei Interaktion erscheinen, sind im Markup überhaupt nicht enthalten.

Clientseitiges Routing. URLs, die den Server nie erreichen. Ein Mirror kann nicht abrufen, was nie angefordert wurde.

Authentifizierung und Personalisierung. Alles, was hinter einer Anmeldung liegt, und alles, was sich je nach Benutzer unterscheidet.

Die Lösungsansätze, geordnet nach Aufwand:

Auf einen statischen Export prüfen. Dokumentationsseiten bieten häufig ein PDF oder ein herunterladbares Paket an. Frag nach, bevor du mit dem Erstellen beginnst.

Prüfen Sie, ob eine API vorhanden ist. Wenn die Inhalte von einer API stammen, ist das direkte Abrufen einfacher und vollständiger als das Spiegeln des Frontends.

Verwenden Sie ein browserbasiertes Tool für die Seiten, die tatsächlich gerendert werden müssen. Playwright kann navigieren, auf Inhalte warten und das gerenderte HTML speichern – das Ergebnis ist ein Mirror mit JavaScript-Unterstützung, allerdings auf Kosten des Schreibens eines Skripts und deutlich höherer Bandbreite.

Akzeptiere einen teilweisen Mirror. Für viele Zwecke sind die statischen Teile einer Website ohnehin genau das, was du brauchst.

Eine JavaScript-Website mit Playwright spiegeln

Die praktische Ausweichlösung, wenn die klassischen Tools nur eine leere Hülle zurückgeben. Kein Allzweck-Ripper, aber ausreichend, um eine definierte Gruppe von Seiten so zu erfassen, wie sie gerendert werden.

import { chromium } from 'playwright';
import { writeFile, mkdir } from 'fs/promises';
import { dirname } from 'path';

const urls = [/* the pages you want */];

const browser = await chromium.launch();
const ctx = await browser.newContext();
const page = await ctx.newPage();

for (const url of urls) {
  await page.goto(url, { waitUntil: 'domcontentloaded' });
  await page.waitForSelector('main', { timeout: 15000 }).catch(() => {});

  const html = await page.content();          // rendered DOM, not source
  const path = 'mirror' + new URL(url).pathname.replace(/\/$/, '/index') + '.html';
  await mkdir(dirname(path), { recursive: true });
  await writeFile(path, html);

  await page.waitForTimeout(1000 + Math.random() * 1000);
}

await browser.close();

Vier Dinge sind dabei wichtig.

** „page.content()

“ gibt das gerenderte DOM** zurück, nicht den HTML-Quellcode. Das ist der einzige Grund, warum dieser Ansatz dort funktioniert, wo wget versagt – man erhält das Markup so, wie es vorliegt, nachdem JavaScript es aufgebaut hat.

Warten auf einen Selektor, nicht auf Netzwerk-Leerlauf. Seiten mit Analytics-Beacons oder Websockets gehen nie in den Leerlauf, sodass „waitUntil: 'networkidle'

“ auf vielen modernen Websites einfach eine Zeitüberschreitung verursacht. Das Warten auf ein Element, von dem man weiß, dass es vorhanden sein sollte, ist sowohl schneller als auch zuverlässiger.

Die bewusste Pause zwischen den Seiten. Dieselbe Rücksichtnahme wie bei „--wait

“ in wget – und genauso notwendig.

Keine Neuschreibung von Links. Dies ist die ehrliche Einschränkung: Man erhält gerenderten HTML-Code mit absoluten Verweisen, daher benötigt die Kopie eine Internetverbindung, um korrekt dargestellt zu werden. Das Hinzufügen einer Umschreibung bedeutet, jedes Dokument zu parsen, jedes Asset herunterzuladen und die Verweise umzuschreiben – was einer Neuimplementierung von wget gleichkommt, und an diesem Punkt ist es einfacher, beides zu kombinieren: Verwende Playwright zum Rendern und Speichern, führe dann wget auf die gespeicherten Dateien aus, um die Assets zu sammeln.

Und rechnen Sie mit den Bandbreitenkosten. Ein Browser ruft jedes Bild, jede Schriftart, jedes Skript und jedes Video vorab ab, sodass dies etwa eine Größenordnung mehr Datenverkehr verbraucht als ein wget-Mirror derselben Seiten. Das Blockieren von Schriftart- und Medienanfragen mit page.route()

reduziert den Datenverkehr erheblich, sofern diese nicht Teil dessen sind, was Sie archivieren möchten.

Auswahl eines Tools

BedarfTool
Statische Website, Erfahrung mit der Befehlszeilewget
Statische Website, GUI bevorzugtHTTrack
Eine Seite, vollständig und in sich geschlossenBrowser-Erweiterung für einzelne Dateien
originalgetreue ArchivierungArchiveBox / WARC
JavaScript-intensive WebsitePlaywright-Skript
Ihre eigene Website vor der MigrationExportfunktion Ihrer Plattform

Die letzte Zeile verdient eine gesonderte Erwähnung, da dies der Fall ist, den die meisten Nutzer auf die umständliche Art lösen. Wenn Sie Eigentümer der Website sind, nutzen Sie die Exportfunktion der Plattform. Ein Datenbank-Dump, ein Build einer statischen Website oder ein Backup des Hosting-Anbieters ist vollständig, umfasst auch das, was beim Spiegeln nicht erfasst wird, und dauert nur wenige Minuten. Das Spiegeln der eigenen Website ist die schwierige Variante einer einfachen Aufgabe.

Die Regeln, die immer gelten

Unabhängig vom verwendeten Tool.

** „robots.txt“ gilt für Sie.** wget berücksichtigt diese Datei standardmäßig. HTTrack berücksichtigt diese Datei standardmäßig. Bei beiden Programmen kann dies deaktiviert werden, was jedoch eine bewusste Entscheidung mit Konsequenzen darstellt. Es ist mittlerweile ein Standard – RFC 9309 – und wir haben in „Wie man eine robots.txt-Datei liest“ darauf eingegangen.

Die Ratenbegrenzung ist nicht optional. Ein Mirror ohne „--wait“ sendet Anfragen so schnell, wie es die Verbindung zulässt, was aus Sicht des Servers nicht von einem Angriff zu unterscheiden ist. Eine Anfrage pro Sekunde ist ein angemessener Mindestwert.

Das Urheberrecht bleibt bestehen. Das Herunterladen einer Kopie zum persönlichen Offline-Lesen ist eine Sache; die Weiterveröffentlichung eine andere. Der Inhalt bleibt Eigentum des Urhebers.

Nutzungsbedingungen können dies gänzlich untersagen, unabhängig von der technischen Machbarkeit.

Bandbreite kostet die Website Geld. Ein Mirror einer großen Website kann viele Gigabyte übertragen, und dafür muss jemand aufkommen.

Fragen Sie nach. Bei allem, was von Bedeutung ist, ist eine E-Mail schneller als die Umgehungslösung. Website-Betreiber sagen häufig „Ja“ und bieten manchmal ein Paket an, das Ihnen den ganzen Aufwand erspart.

Wo Proxys zum Einsatz kommen – kurz gefasst

Da es sich um unser Produkt handelt, fällt die ehrliche Antwort kurz aus.

Sie benötigen sie nicht, um eine Website zu spiegeln, für die Sie die Erlaubnis haben, sie in angemessenem Umfang von einem Standort aus zu spiegeln. Das macht den überwiegenden Teil der legitimen Nutzung aus, und eine einzige Verbindung reicht dafür aus.

Sie könnten sie benötigen, wenn die Website je nach Region unterschiedliche Inhalte bereitstellt und Sie die regionalen Versionen wünschen – beispielsweise eine Dokumentations-Website mit lokalisierten Seiten oder einen Katalog mit länderspezifischem Bestand. Hier ist die geografische Lage entscheidend, und es handelt sich um einen echten Anwendungsfall.

Sie benötigen sie nicht, um schneller zu sein, und wenn Sie aus diesem Grund darauf zurückgreifen, bedeutet das, dass Sie mit einer Geschwindigkeit spiegeln, die die Website ablehnen würde. Die richtige Antwort darauf ist „--wait“, nicht „Verteilung“.

Wenn der regionale Fall zutrifft, ist die Bandbreite im Rechenzentrum die sinnvolle Wahl – bei uns beginnt sie bei 0,14 $/GB, Stand September 2026 gemäß unserer Preisseite – und bedenken Sie, dass ein vollständiger Spiegel in Gigabyte gemessen wird, daher ist die Berechnung entscheidend.

Häufig gestellte Fragen

Was ist ein Website-Ripper?

Ein Tool, das die Seiten und Ressourcen einer Website auf den lokalen Speicher herunterlädt und die Links so umschreibt, dass die Kopie offline funktioniert. Die Umschreibung der Links unterscheidet es von einem Crawler, der Daten sammelt, anstatt einen durchsuchbaren Spiegel zu erstellen.

Wie lade ich eine gesamte Website herunter? „

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --wait=1 URL“ deckt die meisten statischen Websites ab. Als grafische Alternative erfüllt „HTTrack“ denselben Zweck. Bei einer JavaScript-lastigen Website funktionieren beide Programme nicht gut, sodass Sie auf einen browserbasierten Ansatz zurückgreifen müssen.

Warum sieht meine heruntergeladene Website fehlerhaft aus?

Meistens fehlt „--page-requisites“, sodass Stylesheets und Bilder nicht abgerufen wurden, oder „--convert-links“, sodass Verweise weiterhin auf die Live-Seite verweisen. Wenn die Seiten leer sind statt nur unformatiert, rendert die Website Inhalte mit JavaScript, und ein Tool ohne Rendering-Funktion kann diese nicht erfassen.

Ist das Herunterladen einer Website legal?

Das Herunterladen für den persönlichen Offline-Gebrauch ist im Allgemeinen unbedenklich; die Weiterveröffentlichung ist eine andere Frage, da das Urheberrecht weiterhin gilt. Nutzungsbedingungen können automatisiertes Herunterladen unabhängig von den technischen Mitteln gänzlich verbieten. Dies variiert je nach Rechtsordnung und stellt keine Rechtsberatung dar.

Kann ich eine Website herunterladen, die JavaScript verwendet?

Nicht mit wget oder HTTrack, da diese Programme HTML abrufen und analysieren, ohne Skripte auszuführen. Sie benötigen einen browserbasierten Ansatz – eine Ein-Datei-Erweiterung für einzelne Seiten oder ein Playwright-Skript, das durch die Seiten navigiert, auf Inhalte wartet und das gerenderte Ergebnis speichert.

Was ist der beste kostenlose Website-Downloader?

„wget“, wenn Sie mit der Befehlszeile vertraut sind, da es bereits installiert ist und statische Websites problemlos verarbeiten kann. „HTTrack“, wenn Sie eine grafische Benutzeroberfläche wünschen. „ArchiveBox“, wenn das Ziel eher die Archivierung als das Durchsuchen ist, da es neben HTML auch WARC-Dateien erstellt.

Wie lade ich eine Website herunter, ohne blockiert zu werden?

Stelle eine Verzögerung von mindestens einer Sekunde zwischen den Anfragen ein, respektiere „robots.txt“, identifiziere dich ehrlich und schränke den Umfang mit „--no-parent“ und einer Tiefenbegrenzung ein. Die meisten Blockierungen in dieser Kategorie entstehen durch das Spiegeln mit voller Geschwindigkeit, was aus Sicht des Servers identisch mit einem Angriff aussieht.

Sollte ich einen Proxy verwenden, um eine Website herunterzuladen?

Nur, wenn Sie regionsspezifische Versionen der Inhalte benötigen. Für einen gewöhnlichen Mirror mit angemessener Geschwindigkeit reicht eine Verbindung aus. Wenn Sie auf Proxys zurückgreifen, um schneller voranzukommen, bedeutet dies, dass Sie mit einer Geschwindigkeit übertragen, die die Website ablehnt – die Lösung hierfür ist ein Verzögerungsflag.

Fazit

Bei einer statischen Website ist dieses Problem gelöst, und das Tool ist bereits auf Ihrem Rechner installiert. Ein einziger wget-Befehl mit fünf Optionen erzeugt eine lokal abrufbare Kopie, und die einzige Option, die oft vergessen wird, ist die, die das Ganze „höflich“ macht.

Bei einer modernen Anwendung funktioniert keines der klassischen Tools, und der Grund dafür ist kein Mangel, den man durch Konfiguration umgehen könnte. Sie rufen HTML ab und analysieren es; der Inhalt wird jedoch erst nach dem Abruf durch JavaScript zusammengestellt. Die realistischen Optionen sind eine browserbasierte Erfassung der relevanten Seiten, eine API, falls vorhanden, oder ein Export, wenn Ihnen die Website gehört – und gerade dieser letzte Fall wird meist auf die harte Tour gelöst.

Was auch immer Sie verwenden, drei Dinge gelten unabhängig vom Tool: Begrenzen Sie die Abrufrate, denn ein Spiegel mit voller Geschwindigkeit ist von einem Angriff nicht zu unterscheiden. Halten Sie sich an „robots.txt“, denn es ist ein Standard, und ihn zu ignorieren ist eine bewusste Entscheidung. Und bei allem, was von Bedeutung ist, fragen Sie nach – eine E-Mail dauert eine Minute und führt oft zu einem Datenpaket, das die ganze Übung überflüssig macht.