Linux / Befehl curl: URL-Anfragen stellen und HTTP-Antworten prüfen
curl ist ein Werkzeug, um Daten an eine URL zu senden oder von ihr anzufordern. Es wird für verschiedene Aufgaben verwendet, wie das Prüfen von HTTP-Antwort-Headern, das Aufrufen von APIs und das Herunterladen von Dateien, und standardmäßig zeigt es den Antworttext auf der Standardausgabe an.
Auch wenn ein HTTP-Fehlerstatus zurückgegeben wird, kann der Standard-Exit-Status von curl erfolgreich sein. Um 4xx- und 5xx-Fehler in Skripten als Fehler zu behandeln, verwenden Sie --fail oder, je nach Situation, --fail-with-body. -L folgt Weiterleitungen, und -o speichert das Ergebnis in einer angegebenen Datei.
Grundlegende Syntax
curl [options] URL
Installierte Implementierungen und Optionen können je nach Distribution variieren. Prüfen Sie die Beschreibung Ihres aktuellen Systems mit man curl.
Beispiele
Überprüfen der Antwort-Header
Wenn der Server HEAD-Anfragen unterstützt, können Sie die Header und den HTTP-Status sehen.
curl -I https://example.com/
Überprüfung des Inhalts und des Status
Folgt Weiterleitungen, während HTTP-Fehlerstatus als Fehler behandelt werden.
curl -fL https://example.com/
In Datei speichern
Schreibt den Antwortinhalt in die angegebene Datei im aktuellen Verzeichnis.
curl -fL -o example.html https://example.com/
Ergebnis der Überprüfung nur des HTTP-Status
curl sendet eine URL-Anfrage und prüft die Antwort. Das Folgende verwirft den Inhalt und zeigt nur den HTTP-Statuscode an, was es einfach macht, Ergebnisse wie 200, 404 oder 500 in der Automatisierung zu unterscheiden.
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com
Beispielausgabe, wenn eine normale Antwort empfangen wird:
200
200 bedeutet, dass eine HTTP-Antwort empfangen wurde, dies jedoch kein Beweis dafür ist, dass der Seiteninhalt wie erwartet ist. Im Falle von Netzwerkfehlern kann der Statuscode 000 sein oder ein Fehler gesondert angezeigt werden. Um dem endgültigen Ziel von Weiterleitungen zu folgen, verwenden Sie -L und seien Sie vorsichtig hinsichtlich der Offenlegung von Shell-Verlauf oder Prozesslisten, wenn Sie das Authentifizierungstoken direkt in der Befehlszeile eingeben.
Standardmäßig kann curl nach Empfang einer HTTP 4xx- oder 5xx-Antwort mit Status 0 beendet werden, wenn der Transfer selbst erfolgreich war. Um HTTP-Fehler in einem Skript als Fehler zu behandeln, ziehen Sie --fail oder, wenn der Antworttext benötigt wird, --fail-with-body in Betracht. Geheimtoken vor dem Speichern detaillierter Ausgaben in Protokollen redigieren.
Hauptoptionen und Format
| Optionen/Format | Beschreibung |
|---|---|
-I |
Überprüft die Antwort-Header mit einer HEAD-Anfrage. |
-L |
Folgt Weiterleitungen. |
-o file |
Speichert die Antwort in der angegebenen Datei. |
-O |
Speichert unter Verwendung des entfernten Dateinamens. |
-f |
Behandelt HTTP 400 und höher als Fehler und unterdrückt die Ausgabe des Inhalts. |
-H Header |
Gibt einen Anforderungs-Header an. |
Vorsichtsmaßnahmen bei der Verwendung
Da der Server HEAD möglicherweise ablehnt, sollte man nicht davon ausgehen, dass die URL nicht existiert, nur weil curl -I fehlschlägt; prüfen Sie erneut mit GET. Leiten Sie keine Skripte direkt von beliebigen URLs in die Shell. Das direkte Platzieren von Authentifizierungstokens in der Befehlszeile kann dazu führen, dass sie in der Shell-Historie oder der Prozessliste verbleiben, und -k verringert die Sicherheit, indem die Zertifikatsprüfung deaktiviert wird.
Häufig gestellte Fragen
Warum scheint curl erfolgreich zu sein, selbst wenn es einen 404 erhalten hat?
Standardmäßig werden der HTTP-Status und der eigene Übertragungserfolg von curl getrennt behandelt. In Skripten sollten Sie die Optionen -f oder --fail-with-body in Betracht ziehen.
Offizielle Dokumentation
Für das genaue Verhalten der Optionen und Implementierungsunterschiede verweisen Sie auf die offizielle curl-Dokumentation.




