CURL

Aus besserwiki.de
cURL
Curl-logo.svg
CURL 7.55.1 downloading in cmd.png
Beispielausgabe von curl -O
Basisdaten
Entwickler Daniel Stenberg u. v. a.
Erscheinungsjahr 1998
Betriebssystem Multiplattform
Programmiersprache C
Kategorie Remote Access
Lizenz MIT-Lizenz
deutschsprachig nein
curl.se

cURL (ausgeschrieben Client for URLs oder Curl URL Request Library, gesprochen: [ˈkər(-ə)l]) ist eine Programmbibliothek und ein Kommandozeilen-Programm zum Übertragen von Dateien in Rechnernetzen. cURL steht unter der offenen MIT-Lizenz und ist unter anderem auf folgende Betriebssysteme portiert worden: Solaris, NetBSD, FreeBSD, OpenBSD, Darwin und macOS, HPUX, IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, AmigaOS, OS/2, BeOS, Ultrix, QNX, OpenVMS, RISC OS, Novell Netware und DOS. Die zugehörige Programmbibliothek libcurl wird von zahlreichen Programmen und Programmiersprachen verwendet und gilt als eine der meist verwendeten Software-Bibliotheken überhaupt.

cURL (ausgesprochen wie "curl", /kɜːl/) ist ein Computersoftwareprojekt, das eine Bibliothek (libcurl) und ein Kommandozeilenprogramm (curl) für die Übertragung von Daten über verschiedene Netzwerkprotokolle bereitstellt. Der Name steht für "Client URL".

Geschichte

Daniel Stenberg, der Programmierer von cURL, begann 1997 ein Programm zu schreiben, das IRC-Teilnehmern Daten über Wechselkurse zur Verfügung stellen sollte, welche von Webseiten abgerufen werden mussten. Er setzte dabei auf das vorhandene Open-Source-Tool httpget. Nach einer Erweiterung um andere Protokolle wurde das Programm am 20. März 1998 als cURL 4 erstmals veröffentlicht. Ursprünglich stand der Name für „see URL“ und wurde erst später von Stenberg nach einem besseren Vorschlag zum aktuellen Backronym umgedeutet.

libcurl

libcurl ist eine freie clientseitige URL-Übertragungsbibliothek, die Cookies, DICT, FTP, FTPS, Gopher, HTTP/1 (mit Unterstützung für HTTP/2 und HTTP/3), HTTP POST, HTTP PUT, HTTP-Proxy-Tunneling, HTTPS, IMAP, Kerberos, LDAP, MQTT, POP3, RTSP, RTMP, SCP, SMTP und SMB unterstützt. Die Bibliothek unterstützt das Datei-URI-Schema, SFTP, Telnet, TFTP, File-Transfer-Resume, FTP-Upload, HTTP-Formular-basierter Upload, HTTPS-Zertifikate, LDAPS, Proxies und Benutzer-plus-Passwort-Authentifizierung.

Die libcurl-Bibliothek ist portabel. Sie lässt sich auf vielen Plattformen erstellen und funktioniert identisch, darunter AIX, AmigaOS, Android, BeOS, BlackBerry Tablet OS und BlackBerry 10, OpenVMS, Darwin, DOS, FreeBSD, HP-UX, HURD, iOS, IRIX, Linux, macOS, NetBSD, NetWare, OpenBSD, OS/2, QNX Neutrino, RISC OS, Solaris, Symbian, Tru64, Ultrix, UnixWare und Microsoft Windows.

Die libcurl-Bibliothek ist frei, thread-sicher und IPv6-kompatibel. Bindungen sind für mehr als 50 Sprachen verfügbar, darunter C/C++, Java, PHP und Python.

Die libcurl-Bibliothek unterstützt GnuTLS, mbed TLS, NSS, gskit auf IBM i, SChannel auf Windows, Secure Transport auf macOS und iOS, SSL/TLS über OpenSSL, Boringssl, libressl, AmiSSL, wolfSSL, BearSSL und rustls.

cURL

cURL ist ein Kommandozeilen-Tool zum Abrufen oder Senden von Daten einschließlich Dateien unter Verwendung der URL-Syntax. Da cURL libcurl verwendet, unterstützt es jedes Protokoll, das libcurl unterstützt.

cURL unterstützt HTTPS und führt standardmäßig eine SSL-Zertifikatsprüfung durch, wenn ein sicheres Protokoll wie HTTPS angegeben ist. Wenn cURL eine Verbindung zu einem entfernten Server über HTTPS herstellt, holt es sich das Zertifikat des entfernten Servers und prüft dann die Gültigkeit des entfernten Servers anhand seines CA-Zertifikatspeichers, um sicherzustellen, dass der entfernte Server derjenige ist, der er vorgibt zu sein. Einige cURL-Pakete werden mit einer CA-Zertifikatsspeicherdatei ausgeliefert. Es gibt mehrere Optionen, um ein CA-Zertifikat anzugeben, wie --cacert und --capath. Die Option --cacert kann verwendet werden, um den Speicherort der CA-Zertifikatsdatei anzugeben. Wenn auf der Windows-Plattform keine CA-Zertifikatsdatei angegeben wird, sucht cURL nach einer CA-Zertifikatsdatei mit dem Namen "curl-ca-bundle.crt" in der folgenden Reihenfolge:

  1. Verzeichnis, in dem sich das cURL-Programm befindet.
  2. Aktuelles Arbeitsverzeichnis.
  3. Windows-Systemverzeichnis.
  4. Windows-Verzeichnis.
  5. Verzeichnisse, die in den %PATH%-Umgebungsvariablen angegeben sind.

cURL gibt eine Fehlermeldung zurück, wenn der entfernte Server ein selbstsigniertes Zertifikat verwendet oder wenn das Zertifikat des entfernten Servers nicht von einer in der CA cert-Datei aufgeführten CA signiert ist. Die Option -k oder --insecure kann verwendet werden, um die Zertifikatsüberprüfung zu überspringen. Wenn der Gegenstellenserver vertrauenswürdig ist, kann das CA-Zertifikat des Gegenstellenservers alternativ zur CA-Zertifikatspeicherdatei hinzugefügt werden.

Beispiele

Die grundlegende Verwendung von cURL besteht darin, einfach curl in die Befehlszeile einzugeben, gefolgt von der URL der abzurufenden Ausgabe:

$ curl www.example.com <span title="Aus: Englische Wikipedia, Abschnitt &quot;Examples&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/CURL#Examples <span style="color:#dddddd">ⓘ</span>]</span>

cURL zeigt die abgerufenen Ausgaben standardmäßig auf der im System angegebenen Standardausgabe an (normalerweise im Terminalfenster). Wenn Sie also den obigen Befehl ausführen, wird auf den meisten Systemen der Quellcode von www.example.com im Terminalfenster angezeigt. Mit dem Flag -o können Sie die Ausgabe stattdessen in einer Datei speichern:

$ curl -o beispiel.html www.example.com <span title="Aus: Englische Wikipedia, Abschnitt &quot;Examples&quot;" class="plainlinks">[https://en.wikipedia.org/wiki/CURL#Examples <span style="color:#dddddd">ⓘ</span>]</span>

Weitere Optionen, die das Verhalten des Tools verändern, sind verfügbar.

Implementierungen

cURL ist schon länger in vielen Linux-Distributionen enthalten. Seit dem April-2018-Update (1803) wurde cURL als Bordmittel in Windows 10 aufgenommen und ist in einer Standardinstallation von Windows enthalten.

Trivia

Vor allem unter Programmierern und Administratoren hat sich das Verb „curlen“ (bzw. im Englischen „to curl“) etabliert, was bedeutet, eine Webseite ohne Webbrowser anzuzeigen.

Anfang 2022 veröffentlichte Daniel Stenberg die E-Mail eines Fortune-500-Unternehmens, das im Stile einer zeitkritischen Geschäftskorrespondenz Details für eine Risikoeinschätzung im Zuge der Log4j-Schwachstelle erfragte. Da die Verantwortlichen für IT-Sicherheit des Unternehmens offensichtlich nichts von der andersartigen Verantwortlichkeit und Zuständigkeit in Open-Source-Projekten verstanden und eine kostenfreie Behebung der real nicht existierenden Sicherheitslücke erwarteten, wurden Anfrage und Antwort medial als Sinnbild für den wenig sachkundigen Umgang mit Open-Source-Software durch kommerzielle Nutznießer aufgegriffen.