cURL ist ein Kommandozeilenwerkzeug, das dazu dient, Daten mittels URL-Syntax abzurufen oder zu versenden.
Für Entwickler oder Support-Mitarbeiter ist die Kenntnis von cURL-Befehlen zur Fehlerbehebung bei Webanwendungen unerlässlich. cURL ist ein vielseitiges Tool, das auf Windows, macOS und UNIX-Systemen verwendet werden kann.
Hier sind einige der häufigsten Syntaxen mit Beispielen, um Ihnen den Einstieg zu erleichtern.
Prüfen der Verbindung zu einer URL
Wenn Sie auf einem UNIX-basierten System arbeiten und eine Verbindung zu einer externen URL herstellen möchten, sollten Sie zunächst mit cURL testen, ob der Zugriff möglich ist.
curl deineurl.de
Normalerweise wird keine Ausgabe angezeigt, wenn die Verbindung erfolgreich ist. Sollte der Server jedoch nicht erreichbar sein, erhalten Sie Fehlermeldungen wie „Host konnte nicht aufgelöst werden“.
[[email protected] tmp]# curl nichtexistierendeurl.de curl: (6) Could not resolve host: nichtexistierendeurl.de; Unknown error [[email protected] tmp]#
Speichern der URL/URI-Ausgabe in einer Datei
Um den Inhalt einer URL oder URI in einer Datei zu speichern, können Sie folgende Syntax verwenden:
curl https://deineurl.de > deineurl.html
Beispiel:
[[email protected] tmp]# curl https://beispiel.de > /tmp/beispielhtml % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 25489 0 25489 0 0 98765 0 --:--:-- --:--:-- --:--:-- 102345 [[email protected] tmp]#
Das obige Beispiel speichert den gesamten Inhalt von beispiel.de in der Datei /tmp/beispiel.html.
Anzeigen von Anfrage- und Antwort-Headern
Bei der Fehlersuche kann es hilfreich sein, die erwarteten Anfrage- und Antwort-Header zu überprüfen.
curl -v deineurl.de
Beispiel:
[[email protected] tmp]# curl -v https://testseite.com * About to connect() to testseite.com port 443 (#0) * Trying 104.25.134.107... * Connected to testseite.com (104.25.134.107) port 443 (#0) * Initializing NSS with certpath: sql:/etc/pki/nssdb * CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none * SSL connection using TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 * Server certificate: * subject: CN=ssl371609.cloudflaressl.com,OU=PositiveSSL Multi-Domain,OU=Domain Control Validated * start date: Nov 07 00:00:00 2019 GMT * expire date: May 15 23:59:59 2020 GMT * common name: ssl371609.cloudflaressl.com * issuer: CN=COMODO ECC Domain Validation Secure Server CA 2,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB > GET / HTTP/1.1 > User-Agent: curl/7.29.0 > Host: testseite.com > Accept: */* > < HTTP/1.1 200 OK < Date: Sat, 09 Nov 2019 19:41:37 GMT < Content-Type: text/html; charset=UTF-8 < Transfer-Encoding: chunked < Connection: keep-alive < Set-Cookie: __cfduid=d2ce6cd359ebc0b6eb5ff3a454ed042021573328497; expires=Sun, 08-Nov-20 19:41:37 GMT; path=/; domain=.testseite.com; HttpOnly; Secure < Vary: Accept-Encoding < Link: <https://testseite.com/wp-json/>; rel="https://api.w.org/" < Link: <https://testseite.com/>; rel=shortlink < X-SRCache-Fetch-Status: HIT < X-SRCache-Store-Status: BYPASS < X-Frame-Options: SAMEORIGIN < X-Powered-By: EasyEngine v4.0.12 < Via: 1.1 google < CF-Cache-Status: DYNAMIC < Strict-Transport-Security: max-age=15552000; preload < X-Content-Type-Options: nosniff < Alt-Svc: h3-23=":443"; ma=86400 < Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" < Server: cloudflare < CF-RAY: 533243e4bcd4bbf4-LHR <
Herunterladen mit Geschwindigkeitsbegrenzung
Um die Downloadzeit bei einer bestimmten Geschwindigkeit zu testen, können Sie folgenden Befehl nutzen:
curl --limit-rate 2000B
Beispiel:
curl --limit-rate 2000B https://beispiel.de
Verwenden eines Proxys für die Verbindung
Dies ist besonders nützlich, wenn Sie auf einem Server in einer DMZ arbeiten und eine Verbindung zur Außenwelt über einen Proxy herstellen müssen.
curl --proxy deinproxy:port https://deineurl.de
Sie können mit cURL auch einen Header mit Ihren Daten einfügen, um bestimmte Probleme zu testen oder zu beheben. Hier ein Beispiel, wie man einen Content-Type im Header angibt:
curl --header 'Content-Type: application/json' https://deineurl.de
Dadurch wird cURL angewiesen, den Content-Type als application/json im Anfrage-Header zu übermitteln.
Wenn Sie schnell den Antwort-Header überprüfen möchten, können Sie folgende Syntax verwenden:
curl --head https://deineurl.de
Beispiel:
[[email protected] tmp]# curl --head https://eineandereurl.de HTTP/1.1 200 OK Date: Sat, 09 Nov 2019 19:51:23 GMT Content-Type: text/html Connection: keep-alive Set-Cookie: __cfduid=d3cb2c7b8e566ad99c870b0af12b0f1eb1573329083; expires=Sun, 08-Nov-20 19:51:23 GMT; path=/; domain=.eineandereurl.de; HttpOnly X-GUploader-UploadID: AEnB2Uo96JhvJmR2zYUL-Ndh2ta3UD_ykQAB5C7O8cjZQhCf-GxHQ0MsodSzRnl3guSN3ywAYNjtWcPXfwDXjLg3bQ-P5vQMOA Expires: Sat, 09 Nov 2019 20:51:23 GMT Cache-Control: public, max-age=3600 Last-Modified: Mon, 06 Aug 2018 10:45:47 GMT x-goog-generation: 1533552347482034 x-goog-metageneration: 1 x-goog-stored-content-encoding: identity x-goog-stored-content-length: 24620 x-goog-hash: crc32c=DpDPAQ== x-goog-hash: md5=cIP/3rusdUx12Zla1kf1yA== x-goog-storage-class: MULTI_REGIONAL Accept-Ranges: bytes CF-Cache-Status: DYNAMIC Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct" Server: cloudflare CF-RAY: 53325234dc2fbb9a-LHR [[email protected] tmp]#
Verbindung zu einer HTTPS/SSL-URL herstellen und SSL-Zertifikatsfehler ignorieren
Beim Zugriff auf eine URL, die mit einem SSL/TLS-Zertifikat gesichert ist, kann es bei falschen oder nicht übereinstimmenden Zertifikaten zu folgender Fehlermeldung kommen:
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.
Gute Nachricht: Mit dem Flag --insecure
kann cURL angewiesen werden, Zertifikatsfehler zu ignorieren.
curl --insecure https://deineurl.de
Verbindung über ein bestimmtes Protokoll (SSL/TLS)
Dies ist sehr nützlich, um zu testen, ob eine URL ein bestimmtes SSL/TLS-Protokoll unterstützt.
Um eine Verbindung mit SSL v3 herzustellen:
curl --sslv3 https://deineurl.de
Und für verschiedene TLS-Versionen:
curl --tlsv1 https://beispiel.de
curl --tlsv1.0 https://beispiel.de
curl --tlsv1.1 https://beispiel.de
curl --tlsv1.2 https://beispiel.de
curl --tlsv1.3 https://beispiel.de
Herunterladen einer Datei vom FTP-Server
Mit cURL können Sie auch Dateien herunterladen, indem Sie Ihren Benutzernamen und Ihr Passwort angeben:
curl -u benutzer:passwort -O ftp://ftpurl/datei.css
Sie können immer „-v“ zu jeder Syntax hinzufügen, um die Ausgabe im ausführlichen Modus zu sehen.
Der Host-Header ist nützlich, um eine Ziel-URL über die IP zu testen, wenn der angeforderte Inhalt nur bei übereinstimmendem Host-Header verfügbar ist. Oder wenn Sie die Anwendung mit Load Balancer IP/URL testen möchten.
curl --header 'Host: zielanwendung.de' https://192.0.0.1:8080/
Wie wäre es mit der Online-Nutzung von cURL?
Ja, das ist mit folgenden Tools möglich. Sie können cURL remote ausführen.
Online CURL – ein einfaches Tool zum Abrufen von URLs online, mit der Möglichkeit, folgende Optionen hinzuzufügen:
--connect-timeout
--cookie
--data
--header
--head
--location
--max-time
--proxy
--request
--user
--url
--user-agent
cURL-Befehlszeilen-Builder – Dieser ist anders. Er hilft Ihnen, den cURL-Befehl zu erstellen, indem Sie Informationen in eine übersichtliche Oberfläche eingeben und den cURL-Befehl unten erhalten.
cURL ist ein nützliches Werkzeug zur Behebung von Echtzeit-Verbindungsproblemen, und ich hoffe, die obigen Informationen helfen Ihnen dabei. Wenn Sie mehr lernen möchten, empfehle ich den Online-Kurs „Grundlagen der Linux-Befehlszeile“.