cURL ist ein Befehlszeilentool zum Abrufen oder Senden von Daten mit Hilfe der URL-Syntax.
Wenn Sie als Entwickler oder im Support arbeiten, müssen Sie die Verwendung von cURL-Befehlen kennen, um Fehler in Webanwendungen zu beheben. cURL ist ein plattformübergreifendes Dienstprogramm, d.h. Sie können es unter Windows, MAC und UNIX verwenden.
Im Folgenden finden Sie einige der am häufigsten verwendeten Syntaxen mit einem Beispiel, das Ihnen helfen soll.
Überprüfen Sie, ob Sie eine Verbindung zur URL herstellen können
Wenn Sie auf einem UNIX-System arbeiten und versuchen, eine Verbindung zu einer externen URL herzustellen, sollten Sie zunächst überprüfen, ob Sie über curl auf die URL zugreifen können.
curl yoururl.com
Es wird keine Ausgabe geworfen. Wenn der Server jedoch keine Verbindung herstellen kann, erhalten Sie Fehlermeldungen wie could not resolve the host.
[root@gf-lab tmp]# curl helloitdoesntexist.com
curl: (6) Konnte den Host nicht auflösen: helloitdoesntexist.com; Unbekannter Fehler
[root@gf-lab tmp]#
URL/URI-Ausgabe in Datei speichern
Wenn Sie den Inhalt der URL oder URI in einer bestimmten Datei speichern müssen, können Sie die folgende Syntax verwenden
curl https://yoururl.com > ihreurl.html
ex:
[root@gf-lab tmp]# curl https://gf.dev > /tmp/gfhtml
% Total % Received % Xferd Durchschnittliche Geschwindigkeit Zeit Zeit Zeit Aktuell
Dload Upload Total Verbraucht Linke Geschwindigkeit
100 18557 0 18557 0 0 72565 0 --:--:-- --:--:-- --:--:-- 72772
[root@gf-lab tmp]#
Das obige Beispiel speichert den gesamten Inhalt von gf.dev nach /tmp/gf.html
Anfrage- und Antwort-Header anzeigen
Wenn Sie Probleme haben und überprüfen möchten, ob Sie den erwarteten Request- und Response-Header erhalten.
curl -v yoururl.com
Bsp:
[root@gf-lab tmp]# curl -v https://geekflare.com/de
* Verbindung() zu geekflare.com/de Port 443 (#0)
* Versucht 104.25.134.107...
* Verbunden mit geekflare.com/de (104.25.134.107) Port 443 (#0)
* Initialisierung von NSS mit certpath: sql:/etc/pki/nssdb
* CA-Datei: /etc/pki/tls/certs/ca-bundle.crt
CA-Pfad: keine
* SSL-Verbindung mit TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
* Server-Zertifikat:
* betreff: CN=ssl371609.cloudflaressl.com,OU=PositiveSSL Multi-Domain,OU=Domain Control Validated
* startdatum: Nov 07 00:00:00 2019 GMT
* ablaufdatum: May 15 23:59:59 2020 GMT
* gemeinsamer Name: ssl371609.cloudflaressl.com
* aussteller: CN=COMODO ECC Domain Validation Secure Server CA 2,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
> GET / HTTP/1.1
> Benutzer-Agent: curl/7.29.0
> Gastgeber: geekflare.com/de
> Akzeptieren: */*
>
< HTTP/1.1 200 OK
< Datum: Sat, 09 Nov 2019 19:41:37 GMT
< Inhalt-Typ: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Verbindung: keep-alive
< Set-Cookie: __cfduid=d2ce6cd359ebc0b6eb5ff3a454ed042021573328497; expires=Sun, 08-Nov-20 19:41:37 GMT; path=/; domain=.geekflare.com/de; HttpOnly; Secure
< Vary: Accept-Encoding
< Link: <https://geekflare.com/de/wp-json/>; rel="https://api.w.org/"
< Link: <https://geekflare.com/de/>; 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
<
Download mit begrenzter Rate
Wenn Sie an der Optimierung arbeiten und sehen möchten, wie viel Zeit der Download bei einer bestimmten Geschwindigkeit benötigt, können Sie:-
curl --limit-rate 2000B
Beispiel:
curl --limit-rate 2000B https://gf.dev
Verwenden eines Proxys für die Verbindung
Sehr praktisch, wenn Sie auf einem DMZ-Server arbeiten und sich über einen Proxy mit der Außenwelt verbinden müssen.
curl --proxy ihrproxy:port https://yoururl.com
Test-URL mit eingefügtem Header
Sie können curl verwenden, indem Sie einen Header mit Ihren Daten einfügen, um ein bestimmtes Problem zu testen oder zu beheben. Sehen wir uns das folgende Beispiel für eine Anfrage mit Content-Type an.
curl --header 'Content-Type: application/json' http://yoururl.com
Damit fordern Sie curl auf, den Content-Type als application/json im Header der Anfrage zu übergeben.
Nur Antwort-Header anzeigen
Wenn Sie eine Fehlersuche durchführen und schnell den Antwort-Header überprüfen möchten, können Sie die folgende Syntax verwenden.
curl --head http://yoururl.com
Beispiel:
[root@gf-lab tmp]# curl --head https://chandan.io
HTTP/1.1 200 OK
Date: Sat, 09 Nov 2019 19:51:23 GMT
Inhalt-Typ: text/html
Verbindung: keep-alive
Set-Cookie: __cfduid=d3cb2c7b8e566ad99c870b0af12b0f1eb1573329083; expires=Sun, 08-Nov-20 19:51:23 GMT; path=/; domain=.chandan.io; HttpOnly
X-GUploader-UploadID: AEnB2Uo96JhvJmR2zYUL-Ndh2ta3UD_ykQAB5C7O8cjZQhCf-GxHQ0MsodSzRnl3guSN3ywAYNjtWcPXfwDXjLg3bQ-P5vQMOA
Läuft ab: Sat, 09 Nov 2019 20:51:23 GMT
Cache-Kontrolle: öffentlich, 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: Identität
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
[root@gf-lab tmp]#
Verbinden Sie die HTTPS/SSL-URL und ignorieren Sie jeden SSL-Zertifikatsfehler
Wenn Sie versuchen, auf eine mit einem SSL/TLS-Zertifikat gesicherte URL zuzugreifen und diese das falsche Zertifikat hat oder der CN nicht übereinstimmt, erhalten Sie folgende Fehlermeldung.
curl: (51) Sichere Kommunikation mit der Gegenstelle nicht möglich: Der angeforderte Domainname stimmt nicht mit dem Zertifikat des Servers überein.
Die gute Nachricht: Sie können cURL anweisen, den Zertifikatsfehler mit dem Flag --insecure
zu ignorieren.
curl --unsicher https://yoururl.com
Verbindung über ein bestimmtes Protokoll herstellen (SSL/TLS)
Sehr praktisch, um zu testen, ob eine bestimmte URL über ein bestimmtes SSL/TLS-Protokoll verbunden werden kann.
Um eine Verbindung über SSL v3 herzustellen
curl --sslv3 https://yoururl.com
und für verschiedene TLS-Versionen
curl --tlsv1 https://example.com
curl --tlsv1.0 https://example.com
curl --tlsv1.1 https://example.com
curl --tlsv1.2 https://example.com
curl --tlsv1.3 https://example.com
Datei von einem FTP-Server herunterladen
Sie können curl auch zum Herunterladen der Datei verwenden, indem Sie Ihren Benutzernamen und Ihr Passwort angeben.
curl -u benutzer:passwort -O ftp://ftpurl/style.css
Sie können immer“-v” mit jeder Syntax verwenden, um im ausführlichen Modus zu drucken.
Host-Header verwenden
Der Host-Header ist nützlich, um die Ziel-URL über IP zu testen, wenn der angeforderte Inhalt nur verfügbar ist, wenn der Host-Header übereinstimmt. Oder wenn Sie die Anwendung unter Verwendung der Load Balancer IP/URL testen möchten.
curl --header 'Host: targetapplication.com' https://192.0.0.1:8080/
Wie wäre es, cURL online zu verwenden?
Ja, das ist mit den folgenden Tools möglich. Sie können cURL aus der Ferne ausführen.
Online CURL – ein leichtgewichtiges Tool, um die URL online abzurufen und die Möglichkeit, die folgenden Optionen hinzuzufügen.
--Verbindungszeitüberschreitung
--cookie
--data
--Header
--kopf
--location
--max-time
--proxy
--request
--user
--url
--benutzer-agent
cURL-Befehlszeilen-Builder – dieser ist anders. Er hilft Ihnen bei der Erstellung des cURL-Befehls, in den Sie in einer schönen Benutzeroberfläche Informationen eingeben können, und am Ende erhalten Sie den cURL-Befehl.
cURL ist ein nützliches Dienstprogramm für die Fehlersuche bei Echtzeit-Verbindungsproblemen und ich hoffe, dass Ihnen die obigen Ausführungen helfen. Wenn Sie mehr lernen möchten, empfehle ich Ihnen den Online-Kurs Linux Command Line Basics.