Verwendung von curl
und wget
zum Herunterladen von Dateien
1. Einführung in curl
Hast du je in einem Vorstellungsgespräch die Aufgabe bekommen, eine Datei aus dem Internet via Terminal herunterzuladen, und plötzlich festgestellt, dass du vergessen hast, wie das funktioniert? Heute lernen wir, wie man curl
und wget
verwendet – deine treuen Begleiter für die Arbeit mit Netzwerkdaten.
Diese Tools erlauben es dir, Webseiten herunterzuladen, Dateien zu speichern, HTTP-Anfragen zu senden, mit APIs zu arbeiten und sogar Automatisierungsskripte auszuführen. Wir schauen uns ihre Funktionen, Vorteile und typische Anwendungsfälle an.
curl
ist ein Kommandozeilen-Tool zum Übertragen von Daten über Netzwerk-Protokolle. Die Stärke von curl
liegt in seiner Flexibilität: Unterstützung von mehr als 20 Protokollen (HTTP, HTTPS, FTP, SCP und sogar SMTP). Laut Entwicklern ist es ein großartiges "Schweizer Taschenmesser" für das Arbeiten im Internet.
Grundlegende Syntax von curl
curl [Optionen] URL
Im Grunde genommen gibst du einfach den Befehl curl
ein, gefolgt von der gewünschten URL – und voilà! Lass uns anschauen, wie das funktioniert.
Herunterladen einer Webseite
Angenommen, du möchtest die Startseite von Google herunterladen. Das machst du so:
curl http://www.google.com
Auf deinem Bildschirm siehst du den HTML-Code der Seite. Das ist ziemlich nützlich, wenn du die Struktur einer Website untersuchen oder etwas damit automatisieren möchtest.
Speichern des Inhalts in einer Datei
Falls der ganze Textstream auf deinem Bildschirm stört, kannst du das Ergebnis einfach in eine Datei speichern:
curl -o google.html http://www.google.com
Das Flag -o
(output) sagt curl
, dass wir die Ausgabe in eine Datei umleiten möchten. Jetzt ist der HTML-Code der Seite in google.html
gespeichert. Lustig, oder? Gib die Datei deinem Freund und sag ihm, dass du "das ganze Internet heruntergeladen" hast.
Herunterladen einer Datei
Stell dir vor, du musst eine Datei aus dem Internet herunterladen (zum Beispiel eine .zip
-Datei). Hier zeigt curl
seine Stärke:
curl -O http://example.com/file.zip
Im Gegensatz zu -o
speichert das Flag -O
die Datei mit ihrem ursprünglichen Namen, der in der URL angegeben ist. Das ist praktisch, wenn du viele Dateien von derselben Quelle herunterlädst.
HTTP-Authentifizierung
Manchmal ist der Zugriff auf eine Datei oder eine API-Ressource durch Benutzername und Passwort geschützt. In diesem Fall verwende curl
mit dem Flag -u
:
curl -u username:password http://example.com/private-data
Das ist besonders nützlich für die Arbeit mit geschützten APIs, wie beispielsweise GitHub oder Docker Registry.
Herunterladen über eine API
Einer der coolsten Anwendungsfälle von curl
ist die Arbeit mit APIs. Angenommen, du musst eine Anfrage an einen Server senden, der Daten im JSON-Format zurückgibt:
curl -X GET "https://api.exchangerate-api.com/v4/latest/USD"
Hier gibt das Flag -X
die Methode der HTTP-Anfrage an (GET, POST, DELETE, usw.). Für die Automatisierung der Integration mit externen Services ist das ein echter Schatz.
2. Was ist wget
?
Wenn curl
ein Schweizer Taschenmesser ist, dann ist wget
ein Bulldozer. Seine Hauptaufgabe ist das Herunterladen von Dateien. Der Hauptunterschied zu curl
besteht darin, dass wget
speziell für das zuverlässige Herunterladen großer Dateien entwickelt wurde und auch die Fortsetzung von Downloads unterstützt, was bei einer schlechten Verbindung sehr praktisch ist.
Grundsyntax von wget
wget [Optionen] URL
Einfaches Herunterladen einer Datei
wget http://example.com/file.zip
Dieser Befehl lädt die Datei herunter und speichert sie mit dem Originalnamen im aktuellen Verzeichnis. Einfach und effizient.
Speichern mit einem anderen Namen
Wenn dir der Originalname der Datei nicht gefällt, kannst du deinen eigenen Namen angeben:
wget -O newfile.zip http://example.com/file.zip
Download fortsetzen
Angenommen, du lädst eine riesige Datei herunter, aber die Verbindung bricht ab. Kein Problem: Verwende einfach das Flag -c
(continue):
wget -c http://example.com/largefile.iso
wget
setzt den Download an der Stelle fort, an der er unterbrochen wurde. Und das funktioniert sogar noch nach mehreren Tagen, wenn der Server diesen Modus unterstützt.
Eine ganze Website herunterladen
Ja, mit wget
kannst du eine ganze Website (oder deren Kopie) herunterladen. Verwende einfach die Option --mirror
:
wget --mirror http://example.com
Dieser Befehl lädt die Website herunter und behält die Verzeichnisstruktur bei. Jetzt hast du ein "Spiegelbild" der Website für die Offline-Nutzung.
3. Vergleich von curl
und wget
Funktion | curl | wget |
---|---|---|
Unterstützung einer großen Anzahl von Protokollen | Ja | Nur HTTP/HTTPS und FTP |
Automatische Wiederaufnahme von Downloads | Nein (kann gescriptet werden) | Ja |
Arbeiten mit APIs | Ja | Nein |
Einfache Dateiverwaltung | Mittel | Ausgezeichnet |
Herunterladen ganzer Webseiten | Nein | Ja |
Im Allgemeinen, wenn du mit APIs oder etwas Speziellem arbeiten musst, benutze curl
. Wenn du hingegen Dateien herunterladen willst, ist wget
die beste Option.
4. Praktische Anwendung
Datei herunterladen und verarbeiten
Kombinieren wir wget
mit unseren Fähigkeiten zur Textverarbeitung:
wget -O data.txt http://example.com/data.txt
cat data.txt | grep "keyword" | awk '{print $2, $4}'
Hier haben wir eine Datei heruntergeladen, die Zeilen nach einem Schlüsselwort gefiltert und die benötigten Spalten extrahiert.
Arbeiten mit APIs
Wir laden Wechselkurse mit curl
herunter und suchen die gewünschte Währung:
curl -s "https://api.exchangerate-api.com/v4/latest/USD" | grep "EUR"
Das ist nützlich, wenn du ein automatisiertes Währungsumtauschangebot erstellen möchtest.
Automatisierung von Updates
Stell dir vor, du musst jeden Tag eine aktualisierte Datei herunterladen. Hier ist ein Beispiel für ein einfaches Skript:
#!/bin/bash
wget -O updates.zip http://example.com/daily-updates.zip
unzip -o updates.zip -d /path/to/updates
Speichere das Skript und füge es in cron
ein. Jetzt wird es automatisch ausgeführt – cool, oder?
5. Typische Fehler und Besonderheiten
Fehler 403 (Forbidden):
Das passiert, wenn der Server zusätzliche Header verlangt (z. B. User-Agent). So kannst du das beheben:
curl -A "Mozilla/5.0" http://example.com
Weiterleitungen:
Wenn der Server dich auf eine andere URL weiterleitet, füge das Flag -L
bei curl
hinzu:
curl -L http://example.com
SSL-Fehler:
Manchmal können wget
oder curl
über SSL meckern. Du kannst die Zertifikatsüberprüfung deaktivieren (aber das ist unsicher!):
wget --no-check-certificate https://example.com
curl -k https://example.com
Mit diesem starken Arsenal bist du bereit, das Internet über das Terminal zu erobern. Jetzt wird keine Datei oder API mehr vor dir sicher sein – Zeit, Downloads, Verarbeitung und Automatisierung in Angriff zu nehmen!
GO TO FULL VERSION