Was ist curl?
curl steht für 'Client URL' und ist ein CLI-Dienstprogramm, das Daten unter Verwendung der URL-Syntax sendet und empfängt. Es wird in einem breiten Spektrum von Bereichen eingesetzt, darunter Webentwicklung, API-Tests, CI/CD-Automatisierung und Betriebsfehlerbehebung.
Kernfunktionen
- Vielfältige Protokolle: HTTP/HTTPS, FTP/FTPS, SFTP, LDAP, SMTP/SMTPS und mehr (abhängig von den Build-Optionen).
- HTTP-Steuerung: Feinsteuerung von Methoden, Headern, Cookies, Komprimierung, HTTP/2, Weiterleitungen, Timeouts, Wiederholungen.
- Upload/Download: Datei-Download (-o/-O), Fortsetzen (-C -), Formular-Upload (-F), Einzeldatei-Upload (-T).
- Sicherheit: TLS-Zertifikatsprüfung (standardmäßig aktiv), Angabe von Vertrauensankern (--cacert), Client-Zertifikat (--cert/--key).
- Automatisierungsfreundlich: Stille Ausgabe (-s), Beenden bei Fehler (-f), formatierte Ausgabe (-w), ideal für Skripte.
Wichtige Optionen (Shell)
Grundsätzlich wird eine Ziel-URL für die Anfrage benötigt. Es können mehrere URLs durch Leerzeichen getrennt oder aus einer Datei (@file) gelesen werden.
1. Grundlegende Anfrage und Download
2. HTTP-Methode und Datenübertragung
3. Header, Authentifizierung, Cookies
4. Ausgabe steuern/Zuverlässigkeit
5. Sicherheit/TLS & Proxy/Diagnose
6. Protokoll/Version
7. Hilfe/Version
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`curl` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele (Shell)
Hier sind häufig verwendete Anfragemuster aus der Praxis gesammelt.
Inhalt einer Webseite ausgeben
curl https://example.com
Standard-GET-Anfrage.
Datei herunterladen (Weiterleitungen verfolgen)
curl -O -L https://wordpress.org/latest.zip
-O für Originaldateinamen, -L für Weiterleitungsverfolgung.
JSON GET + Schön anzeigen
curl -s https://api.github.com/users/google | jq
Parsen/Lesbarkeit mit jq verbessern.
JSON POST
curl -X POST -H "Content-Type: application/json" -d '{"username":"test"}' https://api.example.com/users
Header und Body angeben.
Formular-Datei-Upload (multipart)
curl -F "upload_file=@./my-image.png" https://example.com/upload
Feldname=upload_file, Dateipfad mit @ angeben.
Bearer Token Authentifizierung
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" https://api.example.com/me
Verwendet den Authorization-Header.
Nur Antwort-Header prüfen
curl -I https://google.com
Nützlich für die Diagnose von Dienststatus/Cache.
Beenden bei Fehler + Stiller Modus
curl -sSf https://example.com/health
-sS -f Kombination: Skript-freundlich.
Timeout + Wiederholung
curl --connect-timeout 5 --max-time 20 --retry 3 --retry-all-errors https://example.com/api
Reaktion auf instabile Netzwerke.
Test mit spezifischer IP (--resolve)
curl --resolve 'api.example.com:443:203.0.113.10' https://api.example.com/status
DNS-Umgehungstest (SNI beibehalten).
Installation
Meistens ist es standardmäßig vorhanden; falls nicht, installieren Sie es über das Paketmanagement.
Debian/Ubuntu
sudo apt update && sudo apt install -y curl
RHEL/CentOS/Fedora
sudo dnf install -y curl
Arch Linux
sudo pacman -S --needed curl
Tipps & Hinweise
Nützliche Tipps
- curl vs wget: wget ist stark beim Herunterladen großer Dateien/rekursiver Downloads, curl ist stark bei API-Interaktionen/Feinsteuerung.
- Anführungszeichen: Bei JSON/Sonderzeichen in -d/-H wird empfohlen, sie in einfache Anführungszeichen zu setzen.
- Komprimierte Antwort: Die Verwendung von --compressed führt zu einer automatischen Dekompression durch den Server, falls unterstützt, und reduziert das übertragene Datenvolumen.
- Proxy: HTTP-Proxy wird mit -x, SOCKS5 mit --socks5 konfiguriert.
- Sicherheitshinweis (-k): -k/--insecure nur für Entwicklung/Tests verwenden. Im Betrieb wird die Konfiguration von Vertrauensankern (--cacert) empfohlen.