wget – Vieles automatisiert herunterladen – rekursives Downloadtool

wget ist ein kleines Konsolentool für Downloads von HTTP- und FTP-Servern. Ihr könnt damit automatisiert ganze Webseiten herunterladen, nur Dateien eines bestimmten Dateityps herunterladen oder viele Downloads von einem FTP-Server durchführen. Auch eine Wiederaufnahme abgebrochener Downloads ist möglich. Außerdem ist wget auf sehr vielen Linux-rechnern vorinstalliert und kann und kann direkt genutzt werden. Für Windows gibt’s wget hier.

Zunächst einmal verwendet ihr wget, wie jedes andere Konsolenprogramm auch. Gebt dazu wget [Parameter] [Downloadlink] auf eurer Konsole ein. An Beispielen wird einem das ganze recht schnell deutlich und auch die Parameter sind leichter verständlich. Hier geht’s zu den Beispielen.

Grundlegende Verständnisfragen:

Was sind relative Links?

Relative Links sind Verlinkungen, bei denen nicht die komplette URL angegeben wird, d.h. die Hauptdomain geht aus der besuchten Webseite hervor. Statt https://usehardware.de/domain-zu-einem-anderen-provider-weiterleiten/ kann man also nur noch domain-zu-einem-anderen-provider-weiterleiten/ als Link verwenden. Das funktioniert aber eben nur, solange man sich auf der Seite befindet, da dann die Hauptdomain usehardware.de/ bekannt ist.

Was sind rekursive Downloads und was ist die Rekursionstiefe?

Fast jede Webseite enthält Links, auf die man klicken kann und die dann zu einer neuen Seite führen. Nun ist es häufig so, dass man neben der angegebenen Webseite auch die auf der Webseite verknüpften Links herunterladen möchte. Dazu kann man wget mit der Option -r -l 1 also der Rekursionstiefe 1 verwenden. Das bedeutet, dass wget auch alle auf der angegebenen Webseite enthaltenen Links herunterlädt. Gibt man nun -l 2 an – Rekursionstiefe 2 – so werden alle auf der angegebenen Seite verknüpften Links heruntergeladen, sowie alle auf den verknüpften Links angegebenen Links heruntergeladen.

Folgende Parameter unterstützt wget (Auszug)

Achtung: Einige Parameter funktionieren erst ab späteren wget-Versionen. Ich habe zum Beispiel festgestellt, dass --show-progress nicht mit Version 1.15 funktioniert.
Parameter Beschreibung
-h, --help Hilfe in Systemsprache anzeigen.
-o, --output-file= Alle Meldungen in eine angegebene Logdatei schreiben. Existiert die Datei bereits, so wird sie überschrieben.
-a, --append-output= Logdatei an eine bereits existierende Logdatei anhängen.
-q, --quiet Keine Meldungen von wget ausgeben.
-v, --verbose Alle Meldungen ausgeben. Dies ist die Standardoption.
-nv, --no-verbose Nur noch Fehler und wichtige Meldungen ausgeben.
-i, --input-file= Datei mit einem Downloadlink pro Zeile einlesen.
-F, --force-html Mit -i angegebene Datei wie HTML-Datei behandeln. Um relative Links herunterladen zu können. Dazu den --base-Parameter benutzen oder <base href="BASISURL"> zum Quelltext hinzufügen, um die Basisurl festzulegen.
-B, --base= Basisurl für relative Links hinzufügen. Macht nur Sinn im Zusammenhang mit --force-html.
--rejected-log= Wenn die angeforderte URL vom Server zurückgewiesen wird, URL und Grund der Zurückweisung in die Datei schreiben.
--bind-adress= Wenn mehrere IPs verwendet werden, die Downloads über die angegebene Adresse abwickeln.
-t, --tries Anzahl wiederholter Downloadversuche festlegen. Standardwert ist 20. Bei connection refused– oder not found 404-Meldungen wird der Download nicht wiederholt.
-O, --outputfile= Lädt alle herunterzuladenden Dateien in die angegebene Datei herunter. Wenn mehrere heruntergeladen werden, so werden diese nacheinander in die angegebene Datei geschrieben. Gibt man - an so werden die heruntergeladenen Daten direkt auf der Konsole ausgegeben.
--backups= Wird eine Datei mehrfach heruntergeladen (zum Beispiel beim mehrfachen Starten von wget mit denselben Parametern), so wird die Dateiendung .1, .2, .3 usw. angehängt . Die hier angehängt Zahl beschränkt die Zahl dieser Backups.
-nc, --no-clobber Hält wget davon ab Dateien mehrfach herunterzuladen und mit der Endung .1, .2, .3 zu versehen. Die Daten werden dann nicht erneut heruntergeladen.
-c, --continue Download fortsetzen, wenn möglich. Kann Probleme verursachen, wenn die Datei zwischenzeitlich geändert wurde. Wenn eine Logdatei angelegt wurde, so kann auch ein zurückliegender Download wieder aufgenommen werden, wenn die Logdatei wieder als Parameter angegeben wird.
--show-progress Fortschrittsanzeige im --quiet und --no-verbose Modus ausgeben.
-N, --timestamping Übernimmt Modify-timestamp der Dateien auf dem Server. Dateien werden mit der Option nur heruntergeladen, wenn diese neuer sind als die bereits heruntergeladene Version.
--no-use-server-timestamps Eigenen Modify-timestamp setzen und nicht den timestamp des Servers verwenden.
--no-if-modified-since Datei trotz timestamp neu herunterladen. Funktioniert nur in Zusammenhang mit -N.
-S, --server-response Header vom HTTP / FTP-Server ausgeben.
--spider Keinen Download durchführen, nur testen, ob die Datei existiert.
-T, --timeout= Setzt --dns-timeout, --connect-timeout, --read-timout zur angegebenen Zeit in Sekunden. Antworten die Server nicht so bricht wget die Verbindung nach der angegebenen Zeit ab.
--dns-timeout Maximale Antwortzeit für DNS-Server festlegen.
--connect-timeout Maximale Zeit für das Aufbauen einer TCP-Verbindung.
--read-timout Maximale Zeit, in der keine Daten während eines Downloads empfangen werden, dürfen festlegen. Der Standardwert ist 900.
--limit-rate= Downloadgeschwindigkeit auf den gesetzten Wert begrenzen. Der Wert kann in bytes (kein Suffix nötig), kilobytes (z.B. 20k), megabytes (z.B. 20m) angegeben werden.
-w, --wait= Wartezeit in Sekunden zwischen den Downloads festlegen. Kann auch in Minuten (z.B. 20m), Stunden (z.B. 20h) und Tagen (z.B. 20d) angegeben werden.
--waitretry Maximale Wartezeit zwischen fehlgeschlagenen Downloads angeben. Standardwert ist 10 Sekunden. Zunächst wird eine Sekunde gewartet, danach 2 Sekunden usw. bis zum angegebenen Wert.
--random-wait Setzt –wait für jeden Download jeweils auf einen zufälligen Wert zwischen 0,5 und 1,5 Sekunden. Verhindert, dass wget erkannt wird.
--no-proxy Verwendung von Proxyservern unterbinden.
-Q, --quota Maximale Downloadgröße bei rekursiven Downloads und wenn von einem --input-file gelesen wird. Nach Erreichen der Größe wird abgebrochen. Die Angabe kann in bytes (kein Suffix nötig), kilobytes (z.B. 20k), megabytes (z.B. 20m) angegeben werden.
--no-dns-cache Deaktiviert DNS-Caching in wget.
--user=, --password= Setzt Benutzernamen und Passwort für HTTP(S)- und FTP-Verbindungen. Kann durch --http-user=, --http-password=, --ftp-user=, --ftp-password= überschrieben werden.
--ask-password Passwortabfrage für jede aufgebaute Verbindung. Kann nicht zusammen mit --password verwendet werden.
-nd, --no-directories Alle Dateien in einen Ordner herunterladen. Keine Verzeichnisstruktur erstellen.
-nH, --no-host-directories Keinen neuen Ordner mit dem Namen der Hauptdomain (TLD) anlegen und in diesen Ordner herunterladen.
--cut-dirs= Besteht eure URL aus Ordnern – sprich sie ist in der Form: domain.de/main/zwei/index.html so könnt ihr das lokale Erstellen unterbinden, indem ihr die Zahl der Ordner angebt, die herausgefiltert werden. --cut-dirs=1 führt dazu, dass ein Ordner – nämlich main- herausgefiltert wird. Es wird also, wie immer ein Ordner domain.de und dann ein Ordner zwei angelegt wird. main – also der erste Ordner wird nicht erstellt.
-P, --directory-prefix Zielordner für Downloads angeben. Standardwert ist . – also der aktuelle Ordner.
--default-page= Standardnamen für Datei angeben, wenn die URL mit einem / endet. Standardwert ist index.html.
--http-user=, --http-password= Setzt Benutzernamen und Passwort für HTTP-Verbindungen.
--no-http-keep-alive TCP-Verbindung nach jedem Download neu aufbauen.
--no-cache Nicht gecachte Datei vom Server herunterladen.
--no-cookies Cookies deaktivieren. Standardwert ist: Cookies nicht speichern.
--load-cookies Cookies aus einer Datei laden.
--save-cookies Cookies in Datei speichern.
--keep-session-cookies Auch Sessioncookies ins Cookiefile speichern.
--ignore-length Wenn der Server eine fehlerhafte Content-Length sendet, gibt es Probleme mit wget, welches immer wieder versucht die vollständige Datei herunterzuladen. Mit diesem Parameter wird die Content-Length dann ignoriert.
--header Eigenen HTTP-Header senden.
--max-redirect= Maximale Anzahl an Weiterleitungen, die wget akzeptiert. Standardwert ist 20.
--proxy-user=, --proxy-password Benutzername und Passwort für Proxyserver setzen.
--referer= Setzt den Referrer. Dann kann es für den Server so aussehen, als ob die Anfrage von einem Klick auf einen Link der Seite kommt.
--save-headers HTTP-Header des Servers an Dateianfang anfügen. Getrennt durch eine Leerzeile.
-U, --user-agent= Eigenen User-Agent in der Anfrage verwenden.
--post-data=, --post-file= Daten per POST an den Server schicken.
--method= Eigenen HTTP-Modus für Datenübertragung festlegen.
--content-on-error Daten trotz HTTP-Statuscode herunterladen.Das wird in der Regel die Fehlerseite des Servers sein.
--secure-protocol= Protokoll für HTTPS-Übertragung festlegen. Mögliche Werte sind: auto, SSLv2, SSLv3, TLSv1, TLSv1_1, TLSv1_2 und PFS. Standardwert ist auto.
--https-only Bei rekursiven Downloads nur HTTPS-Links folgen.
--no-check-certificate Das vom Server verwendete Zertifikat nicht prüfen.
--certificate= Eigenes Zertifikat an Server schicken, wenn nötig.
--certificate-type= Mögliche Werte sind: PEM (Standard) und DER.
--private-key= Privaten Key an den Server schicken
--private-key-type= Mögliche Werte sind: PEM (Standard) und DER.
--ca-certificate= Datei mit certificate authorities angeben. Standwert sind die bei openSSL festgelegten CAs.
--ca-directory= Ordner mit certification authority Zertifikaten angeben.
--random-file= Eigene Datei zum Erstellen von Pseudozufallszahlen verwenden.
--no-hsts wget hält sich nicht mehr an eine gesetzte HTTT Strict Transport Security.
--hsts-file= Eigene Datei für HSTS-Richtlinien angeben. Standard ist ~/.wget-hsts
--ftp-user=, --ftp-password= Setzt Benutzernamen und Passwort für FTP-Verbindungen.
--no-remove-listing Die .listing-Datei mit Informationen über die FTP-Ordnerstruktur nicht löschen.
--no-glob FTP-Wildcards wie *, ?, and deaktivieren.
--no-passive-ftp Passive FTP-Verbindung nicht gestatten.
--preserve-permissions Entfernte Dateirechte übernehmen, statt umask.
--ftps-implicit Implizites FTPS anfordern.
--no-ftps-resume-ssl SSL-Verbindung bei jedem Download neu starten, statt Wiederaufnahme der Vorherigen.
--ftps-clear-data-connection Datenverbindung unverschlüsselt abwickeln. Nur control-connection mit SSL/TLS abwickeln.
--ftps-fallback-to-ftp Fallback zu FTP-Verbindung, wenn FTPS-Verbindung nicht möglich ist. Standardweise ist diese Option deaktiviert.
-r, --recursive Folgt Links auf der angegebenen Webseite.  Bis zu maximal 5 Mal (Rekursionstiefe) im Standard.
-l, --level Maximale Rekursionstiefe festlegen. Anzahl an Links denen gefolgt wird. Achtung: -l 0 entspricht -l inf, also unendlicher Rekursiontiefe (folgt Links bis es keine weiteren mehr gibt).
--delete-after Löscht heruntergeladene Daten, nach dem Download.
-k, --convert-link Links in heruntergeladenen Dateien, so ändern, dass sie nach dem Download auf die ebenfalls heruntergeladenen Ressourcen zeigen und so die heruntergeladene Webseite offline verwendbar machen.
-K, --backup-converted Beim Verändern von heruntergeladenen Dateien wird das Original mit der Dateinendung .orig gespeichert.
-m, --mirror Passende Einstellungen für Website-Mirroring festlegen. Ist äquivalent zu -r -N -l inf --no-remove-listing – also rekursives Downloaden mit endloser Rekursionstiefe.
--adjust-extension Sorgt dafür, dass alle Links gültig bleiben (Ersetzt z.B. ? in URLs durch %3F, damit sie im Browser einwandfrei funktionieren).
--content-disposition Verbirgt sich das Downloadziel hinter einer Weiterleitung auf die eigentliche Datei, so wird mit diesem Parameter der Dateiname zum Abspeichern verwendet und nicht die Bezeichnung der Weiterleitung.
-p, --page-requisites Lädt alle Dateien herunter, die für die Darstellung einer HTML-Seite nötig sind.
-A, --accept Kommagetrennte Liste von akzeptierten Dateitypen.
-R, --reject Kommagetrennte Liste von zurückgewiesenen Dateitypen.
--accept-regex Regulären Ausdruck festlegen, der entscheidet, ob eine URL heruntergeladen wird. Im POSIX-Format für reguläre Ausdrücke.
--reject-regex Regulären Ausdruck festlegen, der entscheidet, ob eine URL zurückgewisen wird. Im POSIX-Format für reguläre Ausdrücke.
-D, --domains= Kommagetrennte Liste von Domains, denen beim rekursiven Download gefolgt werden soll.
--exclude-domains Kommagetrennte Liste von Domains, denen beim rekursiven Download nicht gefolgt werden soll.
--follow-ftp FTP-Links in HTML-Dateien folgen.
--follow-tags= HTML-Tags angeben, denen gefolgt werden soll.
--ignore-tags= HTML-Tags angeben, denen nicht gefolgt werden soll.
--ignore-case Groß- und Kleinschreibung für die Optionen -R, -A, -I, -X ignorieren.
-L, --relative Nur relativen Links folgen.
-I, --inlcude-directories= Kommagetrennte Liste von Ordnern, denen beim Download gefolgt werden soll.
-X, --exclude-directories= Kommagetrennte Liste von Ordnern denen beim Download nicht gefolgt werden soll.
-np, --no-parent Links zu übergeordneten Seiten nicht folgen.
-e robots=off Ignoriert die robots.txt bei rekursiven Downloads. In der Standardkonfiguration hält sich wget an die robots.txt

Exit-Codes von WGET

EXIT-Code Bedeutung
0 Keine Probleme aufgetreten
1 Allgemeiner Fehler
2 Parsing-Fehler
3 Dateilese- oder schreibfehler.
4 Netzwerkfehler
5 SSL-Zertifikat-Fehler
6 Authentifizierungsfehler. Benutzername oder Passwort falsch.
7 Protokoll-Fehler
8 Server hat einen Fehlercode zurückgegeben.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert