curl & wget

2 Power-Tools für HTTP
Die wichtigsten Befehle für HTTP-Requests und Dateiübertragungen: curl · wget curl ist der vielseitige HTTP-Client für API-Testing, Header-Prüfung und Datenübertragung. wget ist der Spezialist für das Herunterladen von Dateien – mit Wiederaufnahme und Rekursion.

curl – HTTP-Requests & API-Testing

curl [Optionen] [URL]
curl -I https://example.com

curl (Client URL) ist ein leistungsstarkes Kommandozeilen-Tool für HTTP/HTTPS-Anfragen. Es wird für API-Testing, Header-Prüfung, Datenübertragung und vieles mehr verwendet.

Wichtige curl-Optionen

Option Beschreibung Beispiel
-I / --head Nur HTTP-Header abrufen curl -I example.com
-L / --location Weiterleitungen folgen curl -L bit.ly/xyz
-o [Datei] Ausgabe in Datei speichern curl -o datei.zip URL
-O Datei mit Originalnamen speichern curl -O https://example.com/file.zip
-X [METHODE] HTTP-Methode setzen curl -X POST URL
-d "Daten" Daten im Body senden (POST) curl -d "name=Max" URL
-H "Header: Wert" Benutzerdefinierte Header curl -H "Authorization: Bearer TOKEN"
-v / --verbose Ausführliche Ausgabe curl -v URL
-s / --silent Stumm (keine Fortschrittsanzeige) curl -s URL
-k / --insecure SSL-Zertifikate ignorieren curl -k https://self-signed
-b / --cookie Cookies senden curl -b "session=123" URL
-c / --cookie-jar Cookies in Datei speichern curl -c cookies.txt URL
Beispiele
# HTML-Inhalt einer Website abrufen
curl https://example.com
# Nur HTTP-Header prüfen
curl -I https://google.de
# POST-Request mit JSON-Daten
curl -X POST -H "Content-Type: application/json" -d '{"name":"Max","alter":30}' https://api.example.com/users
# Datei mit Originalnamen herunterladen
curl -O https://example.com/downloads/datei.zip
# Weiterleitungen folgen
curl -L https://bit.ly/example
# Mit Authorization-Header
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." https://api.example.com/protected
# Formular-Daten senden (URL-encoded)
curl -d "username=admin&password=123" -X POST https://example.com/login
Typische Ausgabe von curl -I google.de:
HTTP/2 200
content-type: text/html; charset=ISO-8859-1
content-length: 48280
date: Mon, 01 Jan 2024 12:00:00 GMT
server: gws
x-xss-protection: 0
Tipp: Mit curl -v sehen Sie den vollständigen Request und Response – ideal für das Debugging von APIs. Die Option -s unterdrückt die Fortschrittsanzeige für Skripte.

wget – Dateien herunterladen & spiegeln

wget [Optionen] [URL]
wget -c https://example.com/grosse_datei.iso

wget (Web Get) ist spezialisiert auf das Herunterladen von Dateien – mit Unterstützung für Wiederaufnahme, Rekursion und Bandbreitenbegrenzung. Perfekt für große Downloads und Skripte.

Wichtige wget-Optionen

Option Beschreibung Beispiel
-O [Datei] Ausgabe in Datei speichern (mit Name) wget -O neuer_name.zip URL
-c / --continue Abgebrochenen Download fortsetzen wget -c URL
-r / --recursive Rekursiv (ganze Website spiegeln) wget -r URL
-l [Tiefe] Rekursionstiefe begrenzen wget -r -l 2 URL
-P [Pfad] Zielverzeichnis angeben wget -P /home/user/downloads URL
--limit-rate=100k Bandbreite begrenzen wget --limit-rate=100k URL
-q / --quiet Stumm (keine Ausgabe) wget -q URL
-nd / --no-directories Keine Unterverzeichnisse erstellen wget -r -nd URL
-A / --accept Nur bestimmte Dateitypen wget -r -A "*.pdf,*.jpg" URL
-U / --user-agent User-Agent setzen wget -U "Mozilla/5.0" URL
--no-check-certificate SSL-Zertifikate ignorieren wget --no-check-certificate URL
Beispiele
# Einfache Datei herunterladen
wget https://example.com/file.zip
# Mit anderem Namen speichern
wget -O meine_datei.zip https://example.com/file.zip
# Abgebrochenen Download fortsetzen
wget -c https://example.com/grosse_datei.iso
# Website rekursiv spiegeln (2 Ebenen)
wget -r -l 2 https://example.com
# Alle PDFs von einer Seite herunterladen
wget -r -l 1 -A "*.pdf" https://example.com/documents/
# Mit Bandbreitenbegrenzung (100 KB/s)
wget --limit-rate=100k https://example.com/file.zip
# Datei in bestimmtes Verzeichnis speichern
wget -P /home/user/downloads https://example.com/file.zip
Typische Ausgabe von wget -c file.zip:
--2024-01-01 12:00:00-- https://example.com/file.zip
Resolving example.com... 93.184.216.34
HTTP request sent, awaiting response... 200 OK
Length: 1048576 (1.0M) [application/zip]
Saving to: ‘file.zip’
100%[====================>] 1,048,576 1.2MB/s in 0.8s
Tipp: wget -c rettet abgebrochene Downloads – besonders bei großen Dateien sehr hilfreich. Mit --limit-rate können Sie die Bandbreite kontrollieren.

Header & Cookies – HTTP-Header und Cookies setzen

-H · -b · -c · -A · -e
curl -H "Authorization: Bearer TOKEN" https://api.example.com curl -b "session=abc123" https://example.com/profile wget --header="Authorization: Bearer TOKEN" https://api.example.com

Header und Cookies sind essenziell für authentifizierte Anfragen und das Testen von APIs. Beide Tools unterstützen das Setzen von Headern und Cookies.

Beispiele
# curl: Benutzerdefinierte Header
curl -H "Content-Type: application/json" -H "Accept: application/json" https://api.example.com
# curl: Cookies senden
curl -b "session=xyz; user=Max" https://example.com/dashboard
# curl: Cookies in Datei speichern
curl -c cookies.txt https://example.com/login
# curl: User-Agent setzen
curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" https://example.com
# wget: Header setzen
wget --header="Authorization: Bearer TOKEN" --header="Accept: application/json" https://api.example.com
# wget: User-Agent setzen
wget -U "Mozilla/5.0" https://example.com
# Referer-Header setzen
curl -e "https://google.com" https://example.com
Tipp: Mit curl -v sehen Sie alle gesendeten und empfangenen Header – ideal zum Debuggen von Authentifizierungs-Problemen.

Authentifizierung – Basic Auth & Bearer Token

-u · -H "Authorization: Bearer"
curl -u benutzer:passwort https://api.example.com curl -H "Authorization: Bearer TOKEN" https://api.example.com wget --user=benutzer --password=passwort https://example.com

Authentifizierung ist für den Zugriff auf geschützte APIs und Websites unerlässlich. curl und wget unterstützen Basic Auth und Bearer-Token.

Beispiele
# Basic Authentication (curl)
curl -u admin:secret https://example.com/admin
# Basic Authentication (wget)
wget --user=admin --password=secret https://example.com/admin
# Bearer Token (curl)
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." https://api.example.com/protected
# Bearer Token (wget)
wget --header="Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." https://api.example.com/protected
# API-Key als Header
curl -H "X-API-Key: 1234567890" https://api.example.com/data
# OAuth2 Refresh Token
curl -d "grant_type=refresh_token&refresh_token=TOKEN" -u client:secret https://auth.example.com/token
⚠️ Sicherheit: Geben Sie Passwörter und Token nicht direkt im Befehl ein, wenn andere Benutzer die Historie sehen können. Verwenden Sie Umgebungsvariablen oder Dateien.

Fortgeschrittene Downloads – Rekursiv, Spiegelung, Resume

-r · -c · --limit-rate · -np
wget -r -np -l 5 -A "*.pdf" https://example.com/docs/ curl -O https://example.com/file1.zip -O https://example.com/file2.zip

Fortgeschrittene Downloads – wget glänzt mit rekursiven Downloads, wobei Sie mit -np das Verlassen des Verzeichnisses verhindern können.

Beispiele
# Rekursive PDFs aus einem Verzeichnis herunterladen
wget -r -np -l 5 -A "*.pdf" https://example.com/documents/
# Gesamte Website spiegeln (mit limitierter Tiefe)
wget -r -l 3 -k -p https://example.com
# curl: Mehrere Dateien gleichzeitig herunterladen
curl -O https://example.com/file1.zip -O https://example.com/file2.zip
# curl: Herunterladen mit Geschwindigkeitsbegrenzung
curl --limit-rate 500k -O https://example.com/grosse_datei.iso
# wget: Nur neueere Dateien herunterladen (timestamping)
wget -N https://example.com/file.zip
# wget: Hintergrund-Download (auch nach SSH-Exit)
wget -b https://example.com/grosse_datei.iso
Tipp: wget -np (no parent) verhindert, dass wget in übergeordnete Verzeichnisse wechselt – ideal für das gezielte Spiegeln von Unterverzeichnissen.

curl & wget im Überblick

curl API-Testing & HTTP-Requests
Header, Methoden, Daten
wget Datei-Download & Spiegelung
Resume, Rekursion
-I Header prüfen (curl)
HTTP-Status, Content-Type
-c Download fortsetzen (wget)
Abgebrochene Downloads
-H Header setzen
Authorization, Content-Type
-r Rekursiv (wget)
Gesamte Website spiegeln

Quick Summary

curl
HTTP-Requests
wget
Downloads
-I
Header prüfen
-u
Basic Auth
-c
Resume
-r
Rekursiv
curl -I https://example.com · curl -X POST -d "data" URL · wget -c https://example.com/file.zip