wget – Nutzungsbeispiele

In diesem Artikel möchte ich euch an einigen Beispielen die Verwendung von wget verdeutlichen. Dies ist eine Erweiterung des Artikels zu den von wget unterstützten Parametern und Exit-Codes.

Vermisst ihr ein Beispiel, was eurer Meinung nach dazu gehören würde, so schreibt’s einfach in die Kommentare.

Zunächst einmal verwendet ihr wget, wie jedes andere Konsolenprogramm auch. Gebt dazu wget [Parameter] [Downloadlink] auf eurer Konsole an.

Download einzelner Dateien mit wget

wget http://mirror.netcologne.de/linuxmint/iso//stable/17.3/linuxmint-17.3-cinnamon-64bit.iso

Mit diesem Befehl ladet ihr euch das aktuelle Linux Mint Iso herunter. Die heruntergeladene Datei heißt dann genauso wie auf dem Server also linuxmint-17.3-cinnamon-64bit.iso. Während des Downloads gibt euch wget Informationen über die aktuelle Downloadgeschwindigkeit, die erwartete Restdownloadzeit und einen Fortschrittsbalken aus.

Bildschirmfoto vom 2016-05-01 22:38:19

wget -O LinuxMint.iso http://mirror.netcologne.de/linuxmint/iso//stable/17.3/linuxmint-17.3-cinnamon-64bit.iso

Damit benennt ihr die heruntergeladen Datei in LinuxMint.iso um. Alternativ zu -O könnt ihr auch --outputfile= verwenden. Das funktioniert allerdings nur, wenn ihr nur eine Datei herunterladet fehlerfrei.

Download mehrerer Dateien mit wget

wget http://mirror.netcologne.de/linuxmint/iso//stable/17.3/linuxmint-17.3-cinnamon-64bit.iso http://mirror.netcologne.de/linuxmint/iso//stable/17.2/linuxmint-17.2-cinnamon-64bit.iso

Wollt ihr mehrere Dateien gleichzeitig herunterladen, so könnt ihr die Links einfach mit Leerzeichen getrennt angeben. Alternativ könnt ihr auch Links aus einer Textdatei verwenden:

wget -i links.txt

Jeder Downloadlink muss in der Textdatei in einer neuen Zeile stehen.

Lokale Kopie einer Webseite erstellen

wget -r -l 10 -k -p --random-wait --adjust-extension usehardware.de

Dieser Befehl lädt die Seite usehardware.de rekursiv (-r) herunter, d.h. Verlinkungen wird gefolgt und diese werden ebenfalls heruntergeladen. Das Ganze ist beschränkt auf maximal 10 Stufen (-l 10) und die Links in den heruntergeladenen Dateien werden angepasst (-k), sodass die Webseite komplett offline funktioniert. Zusätzlich werden auch alle css-Dateien, Bilder und Skripte heruntergeladen (-p). --random-wait sorgt dafür, dass wget nicht erkannt wird und der Download vom Server nicht blockiert wird. --adjust-extension sorgt dafür, dass alle Links gültig bleiben (Ersetzt ? in URLs durch %3F, damit sie im Browser einwandfrei funktionieren).

Auf Seiten im Login-Bereich zugreifen

Man kann sich zwar auch mit wget mehr oder weniger schön und schnell per POST einloggen. Leichter ist es jedoch einen normalen Browser für den Login zu verwenden und die Cookies, die zur Authentifizierung dienen mit zu wget zu nehmen.

Loggt euch zuerst mit einem Browser euerer Wahl auf der gewünschten Webseite ein. Hat das erfolgreich geklappt, so müsst ihr die Cookies noch im alten Netcape-Format exportieren. Für Firefox gibt es hier ein Plugin.

wget --load-cookies Cookiepfad URL

Damit sollte der Download auch von einer passwortgeschützten Seite funktionieren. Ihr könnt natürlich noch weitere Parameter beim Downloaden verwenden. Besonders Sinn macht in der Regel --user-agent und --random-wait.

Nur bestimmten Dateityp herunterladen z.B. .mp3 .pdf

wget -r -l 10 --accept "pdf,png" --no-directories --ignore-case usehardware.de

Lädt nur .pdf– und .png-Dateien herunter und erstellt dabei keine Ordnerstruktur (--no-directories). Auch Dateien, bei denen die Dateiendung nicht klein geschrieben wurde, werden dank --ignore-case heruntergeladen.

wget-Dateidownload

Die von wget angegebene Zahl der Downloads ist aber nicht die Zahl der Downloads, die auch behalten werden, sondern die Gesamtzahl der Downlads. Neben allen .png– und .pdf-Dateien behält wget auch die robots.txt.

Weiterleitungen und die Dateinamen…

wget -r -l 10 --accept "pdf,png" --no-directories --content-disposition usehardware.de

Oftmals befinden sich die Daten, die ihr wollt hinter einer kryptischen Weiterleitung (z.B. bei den großen Downloadportalen) und der Dateiname wird einem erst bei einem Klick auf den entsprechenden Link angezeigt.

--content-disposition sorgt in diesem Zusammenhang dafür, dass die heruntergeladenen Daten nicht den Namen der Weiterleitung sondern den eigentlichen Dateinamen tragen.

Reguläre Ausdrücke zur Festlegung akzeptierter URLs

wget -r -l 10 --accept-regex ".*dns.*" usehardware.de

Mit Hilfe eines regulären Ausdrucks (nach POSIX) könnt ihr nur Seiten herunterladen, die dns im Namen enthalten.

robots.txt beim Download ignorieren

wget -r -l 10 -e robots=off usehardware.de

Beim Downloaden ignoriert wget jetzt die robots.txt, d.h. es werden auch Daten aus – in der robots.txt gesperrten Ordnern – heruntergeladen.

Sich mit wget einloggen

In der Regel werden Login-Daten per POST übertragen und nicht mit per GET, da die Logindaten sonst in der URL auftauchen. Möchten wir uns nun also auf einer Webseite einloggen und danach Seiteninhalte herunterladen so gehen wird dazu wie folgt vor:

Zuerst suchen wir das Login-Formular auf der Webseite. Dazu lasst ihr euch den Quelltext anzeigen (Firefox: Rechtsklick -> Seitenquelltext anzeigen). Im Quelltext sucht ihr dann nach dem Login-Formular (Eine suche mit STRG+F führt meistens zum Ziel).

<form name="loginform" id="loginform" action="ACTION-URL" method="post">
    <p>
        <label for="user_login">Benutzername oder E-Mail-Adresse<br />
        <input type="text" name="log" id="user_login" class="input" value="" size="20" /></label>
    </p>
    <p>
        <label for="user_pass">Passwort<br />
        <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" /></label>
    </p>
        <p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever"  /> Angemeldet bleiben</label></p>
    <p class="submit">
        <input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="Anmelden" />
        <input type="hidden" name="redirect_to" value="wp-admin/" />
        <input type="hidden" name="testcookie" value="1" />
    </p>
</form>

Uns interessiert vor allem die unter action angegebene Adresse, und die name– und value-Attribute der Eingabefelder (auch versteckter Eingabefelder – type="hidden").

Dieser Befehl sorgt dafür, dass ihr eingeloggt werdet und die entsprechenden Cookies gespeichert werden. Beim Download benötigt ihr die Datei wieder und könnt sie mit --load-cookies laden.

wget --post-data="POSTDATA" --keep-session-cookies --user-agent="Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:46.0) Gecko/20100101 Firefox/46.0" --save-cookies cookies.txt ACTION-URL

POSTDATA ist stets in der Form nameDesEingabefeldes=wertdesEingabefeldes&nameDesEingabefeldes2=wertDesEingabefeldes2 und so weiter. Den Wert der jeweiligen Felder findet ihr unter value beim entsprechenden input. Ist dieses Feld leer, so kann es sein, dass ihr dort z.B. eure Logindaten angeben müsst. Es kann aber auch sein, dass das Feld leerbleiben muss. Was in welches Feld gehört, ergibt sich in der Regel aus der Bezeichnung (name) der Eingabefelder. Dann sieht POSTDATA so aus: nameDesEingabefeldes=&nameDesEingabefeldes2=wertDesEingabefeldes2.

Hinweis für erfahrene Nutzer: Das %-Encoding (URL-Encoding / RFC 3986) übernimmt wget für euch.

Schreibe einen Kommentar

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