cURL, kurz für „Client for URLs“, ist ein Kommandozeilentool zum Übertragen von Daten über verschiedene Protokolle. Dieser Artikel zielt darauf ab, die Befehle bereitzustellen, die häufig verwendet werden, und als praktische Referenz.
Inhaltsverzeichnis
- Eine einzelne Datei herunterladen
- Speichern Sie die cURL-Ausgabe in einer Datei
- Fortschrittsbalken ausblenden
- Mehrere Dateien gleichzeitig abrufen
- Verfolgen Sie HTTP-Location-Header mit der Option -L
- Vorherigen Download fortsetzen/fortsetzen
- Verwenden Sie einen Proxy mit oder ohne Authentifizierung
- HTTP-Header abfragen
- Dateien auf den FTP-Server hochladen
- Dateien vom FTP-Server herunterladen
- Auflisten/Herunterladen mit Bereichen
- Weitere Informationen zur Verwendung der Verbose- und Trace-Option
- E-Mail mit dem SMTP-Protokoll senden
- HTTP/2-Unterstützungsprüfung
- HTTP-Methoden simulieren
- Stellen Sie eine POST-Anfrage mit Parametern
- Schlussfolgerung
Sie können curl
aufrufen Befehl von Ihrem Terminal aus, ohne über Möglichkeiten zur Installation nachzudenken, da es auf den meisten Linux-basierten Betriebssystemen vorinstalliert ist.
Es gibt eine Vielzahl von Anwendungsfällen für Curl, wie zum Beispiel:
- FTP-Upload
- Proxy-Unterstützung
- SSL-Verbindungen
- HTTP-Post
cURL unterstützt auch die Verwendung aller folgenden Protokolle:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP , SMTPS, TELNET und TFTP.
Eine einzelne Datei herunterladen
Der folgende Befehl ruft den Inhalt der URL ab und zeigt ihn in STDOUT (d. h. auf Ihrem Terminal) an.
curl https://www.gnu.org
Um die Ausgabe in einer Datei zu speichern, leiten Sie sie wie unten gezeigt um. Dadurch werden auch einige zusätzliche Download-Statistiken angezeigt.
curl https://www.gnu.org > gnu-org.html
Speichern Sie die cURL-Ausgabe in einer Datei
Wir können das Ergebnis des cURL-Befehls mit -o
in einer Datei speichern /-O
Optionen.
-o
(Kleinbuchstabe o) Das Ergebnis wird unter dem Dateinamen gespeichert, der in der Befehlszeile angegeben wurde-O
(großes O) Der Dateiname in der URL wird genommen und als Dateiname zum Speichern des Ergebnisses verwendet
curl -o my-gettext.html https://www.gnu.org/software/gettext/manual/gettext.html
Als Ergebnis nun die Seite gettext.html
wird in der Datei namens my-gettext.html
gespeichert . Sie können dies auch feststellen, wenn Sie cURL mit -o
ausführen wird die Fortschrittsanzeige für den Download wie folgt angezeigt.
Wenn Sie cURL -O
verwenden , wird der Inhalt in der Datei mit dem Namen „gettext.html“ selbst auf dem lokalen Computer gespeichert.
curl -O http://www.gnu.org/software/gettext/manual/gettext.html
Hinweis:Beim curl
die Daten auf das Terminal schreiben muss, deaktiviert es den Progress Meter, um Verwechslungen beim Drucken zu vermeiden. Wir können >
verwenden , -o
, -O
Optionen, um das Ergebnis in eine Datei zu verschieben.
Fortschrittsbalken ausblenden
cURL zeigt standardmäßig einen Fortschrittsbalken an. Um es auszublenden -s
(--silent
)-Option verwendet werden.
curl -s -O http://www.gnu.org/software/gettext/manual/gettext.html
Wenn das aus irgendeinem Grund auf Ihrer Plattform nicht funktioniert, können Sie stderr jederzeit nach /dev/null
umleiten :
curl -O http://www.gnu.org/software/gettext/manual/gettext.html 2>/dev/null
Mehrere Dateien gleichzeitig abrufen
Natürlich können wir mehrere Dateien auf einmal herunterladen, indem wir die URLs in der Befehlszeile angeben.
curl -O https://www.gnu.org/software/gettext/manual/html_node/index.html -O https://www.gnu.org/software/gettext/manual/gettext.html
HTTP-Location-Headern mit Option -L folgen
Standardmäßig folgt cURL jedoch nicht den HTTP-Location-Headern. Es wird auch als Weiterleitung bezeichnet. Wenn eine angeforderte Webseite an einen anderen Ort verschoben wird, wird als Antwort ein HTTP-Location-Header gesendet, der enthält, wo sich die eigentliche Webseite befindet.
Mit -L
können wir darauf bestehen, dass cURL der Weiterleitung folgt Option, wie unten gezeigt.
curl -L https://www.google.com
Vorherigen Download fortsetzen/fortsetzen
Mit cURL -C
Option können Sie einen Download fortsetzen, der bereits aus irgendeinem Grund gestoppt wurde. Dies ist hilfreich, wenn Sie große Dateien herunterladen und der Download unterbrochen wurde.
Sagen wir -C -
, dann findet cURL heraus, wo der Download fortgesetzt werden kann. Wir können auch einen Offset -C <offset>
angeben . Die angegebenen Offset-Bytes werden für die Quelldatei von Anfang an übersprungen.
Starten Sie einen großen Download mit curl
, und drücken Sie Ctrl-C
um es zwischen dem Download zu stoppen.
curl -O https://www.gnu.org/software/gettext/manual/gettext.html
Mit curl -C -
, können wir den Download dort fortsetzen, wo er zuvor unterbrochen wurde.
curl -C - -O https://www.gnu.org/software/gettext/manual/gettext.html
Verwenden Sie einen Proxy mit oder ohne Authentifizierung
Wenn Sie sich hinter einem Proxy-Server befinden, der Port 8080 unter proxy.yourdomain.com abhört, tun Sie Folgendes:
curl -x proxy.yourdomain.com:8080 -U user:password -O https://www.gnu.org/software/gettext/manual/gettext.html
wo Sie -U user:password
überspringen können wenn Ihr Proxy keine Authentifizierung erfordert.
HTTP-Header abfragen
HTTP-Header ermöglichen es dem Remote-Webserver, zusammen mit der eigentlichen Anfrage zusätzliche Informationen über sich selbst zu senden. Außerdem erhält der Kunde dadurch Einzelheiten darüber, wie die Anfrage bearbeitet wird.
So fragen Sie die HTTP-Header von einer Website ab:
curl -I https://www.gnu.org
HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 21:22:32 GMT
Server: Apache/2.4.7
Content-Location: home.html
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: (null)
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 13 Jul 2020 21:22:32 GMT
Content-Type: text/html
Content-Language: en
Laden Sie Dateien auf den FTP-Server hoch
cURL kann auch verwendet werden, um Dateien mit -T
auf den FTP-Server hochzuladen Option.
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.server.com
Als Ergebnis lädt der obige Befehl die Datei mit dem Namen myfile.txt
hoch zum FTP-Server. Sie können auch mehrere Dateien gleichzeitig hochladen, indem Sie die Bereichsoperationen verwenden.
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.server.com
Optional können wir .
verwenden um die Eingabe von STDIN zu erhalten und auf die Fernbedienung zu übertragen.
curl -u ftpuser:ftppass -T - ftp://ftp.server.com/mynewfile.txt
Der obige Befehl holt die Eingabe des Benutzers aus der Standardeingabe und speichert den Inhalt auf dem FTP-Server unter dem Namen mynewfile.txt
.
Sie können ein -T
angeben für jede URL und das Paar gibt an, was wo hochgeladen werden soll.
Dateien vom FTP-Server herunterladen
cURL kann auch verwendet werden, um Dateien von FTP-Servern herunterzuladen. Wenn der angegebene FTP-Pfad ein Verzeichnis ist, werden standardmäßig die Dateien unter dem spezifischen Verzeichnis aufgelistet.
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/mysql.php
Der obige Befehl lädt die mysql.php
herunter Datei vom FTP-Server und speichern Sie sie im lokalen Verzeichnis.
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
Hier verweist die angegebene URL auf ein Verzeichnis. cURL listet also alle Dateien und Verzeichnisse unter der angegebenen URL auf.
Verwendende Bereiche auflisten/herunterladen
cURL unterstützt die Angabe von Bereichen in der URL. Wenn ein Bereich angegeben wird, werden Dateien heruntergeladen, die innerhalb des Bereichs liegen. Es ist hilfreich, Pakete von den FTP-Mirror-Sites herunterzuladen.
curl http://ftp.us.debian.org/debian/pool/main/[a-z]/
Der obige Befehl listet alle Pakete von a-z
auf Bereiche im Terminal.
Weitere Informationen zur Verwendung der Verbose-and-Trace-Option
Mit -v
erfahren Sie, was passiert Möglichkeit. Diese Option aktiviert den ausführlichen Modus und es werden die Details gedruckt.
curl -v https://www.gnu.org
Der about-Befehl gibt Folgendes aus:
* Trying 209.51.188.148:443...
* Connected to www.gnu.org (209.51.188.148) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: CN=emacs.org
* start date: Jun 17 09:07:40 2020 GMT
* expire date: Sep 15 09:07:40 2020 GMT
* subjectAltName: host "www.gnu.org" matched cert's "www.gnu.org"
* issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
* SSL certificate verify ok.
> GET / HTTP/1.1
> Host: www.gnu.org
> User-Agent: curl/7.71.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 13 Jul 2020 21:56:04 GMT
< Server: Apache/2.4.7
< Content-Location: home.html
< Vary: negotiate,accept-language,Accept-Encoding
< TCN: choice
< Strict-Transport-Security: max-age=63072000
< Access-Control-Allow-Origin: (null)
< Accept-Ranges: bytes
< Cache-Control: max-age=0
< Expires: Mon, 13 Jul 2020 21:56:04 GMT
< Transfer-Encoding: chunked
< Content-Type: text/html
< Content-Language: en
<
...
Mail mit dem SMTP-Protokoll senden
cURL kann auch zum Versenden von E-Mails über das SMTP-Protokoll verwendet werden. Sie sollten die Absenderadresse, die Zieladresse und die IP-Adresse des Mailservers wie unten gezeigt angeben.
curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com
Sobald der obige Befehl eingegeben wurde, wartet er darauf, dass der Benutzer die Daten per E-Mail bereitstellt. Nachdem Sie Ihre Nachricht verfasst haben, geben Sie .
ein (Punkt) als letzte Zeile, die die E-Mail sofort versendet.
HTTP/2-Support-Check
Wenn Sie die neueste cURL-Version haben, können Sie den --http2
verwenden Option, um zu prüfen, ob eine bestimmte URL das neue HTTP/2-Protokoll unterstützt. Wenn die Website HTTP/2 unterstützt, sehen Sie daher HTTP/2.0 200
im Header anstelle von HTTP/1.1 200
.
curl -I --http2 https://www.opensource.com
HTTP-Methoden simulieren
Der GET
-Methode wird verwendet, um Ressourcen von einer bestimmten URL abzurufen. Die einfache curl https://www.gnu.org/
Befehl verwendet GET
als Standard-HTTP-Methode, kann aber auch mit --request GET
angegeben werden oder -X GET
.
curl --request GET https://www.gnu.org
Der POST
-Methode wird verwendet, um Informationen an einen Webserver zu senden (z. B. einen Kommentar in einem Forum). Dies kann mit --request POST
angegeben werden oder -X POST
.
curl --request POST https://yourwebsite.com
Das DELETE
-Methode löscht die Ressource vom Webserver, die einer bestimmten URL zugeordnet ist. Dies kann mit --request DELETE
angegeben werden oder -X DELETE
.
curl --request DELETE https://yourwebsite.com
Das PUT
-Methode erstellt oder ersetzt eine Ressource basierend auf den Daten, die der Client an den Webserver übermittelt. (z. B. Erstellen einer neuen Webseite oder Aktualisieren einer bestehenden). Dies kann mit --request PUT
angegeben werden oder -X PUT
.
curl --request PUT https://yourwebsite.com
Stellen Sie eine POST-Anfrage mit Parametern
Der folgende Befehl sendet das animal1
und animal2
Parameter zusammen mit den entsprechenden Werten an https://yourdomain.com/animals.php
curl --request POST --data "animal1=cat&animal2=dog" https://yourdomain.com/animals.php
Mit diesem Tipp können Sie das Verhalten eines regulären HTML-Formulars simulieren.
Schlussfolgerung
In diesem Beitrag haben wir was cURL ist erklärt und was Sie mit einigen grundlegenden Befehlen tun können. Weitere Informationen zu cURL finden Sie auf der Website des Projekts.