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)
--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), k ilobytes (z.B. 20k ), m egabytes (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), k ilobytes (z.B. 20k ), m egabytes (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. |