Was ist cURL? Was kann das Open Source Tool? | Host Europe (2025)

(Update) In unserer immer stärker vernetzten Welt kommunizieren nicht nur Desktop-Browser oder Smartphones, sondern auch Unterhaltungselektronik, Fahrzeuge oder Maschinen über das Internet mit verschiedenen Servern und über diverse Netzwerk-Protokolle. Wäre da nicht ein Werkzeug nützlich, dass möglichst viele Protokolle unterstützt und auf möglichst vielen Systemen verfügbar ist? Ein solches Werkzeug gibt es: cURL.

Das weitverbreitete Open-Source-Tool gibt es nicht nur für Linux, Mac und Windows, sondern auch für diverse andere Unix-(artige) Systeme wie BSD, AIX, HP-UX, QNX, UnixWare, Solaris und Sailfish OS, für RISC OS oder OpenVMS. In diversen Linux-Distributionen, MacOS und Windows ist es standardmäßig integriert.

cURL kommt außerdem in außerdem in Autos, Fernsehern, Routern, Druckern, Smartphones, Tablets und vielen weiteren Geräten zum Einsatz. Was kann das Datentransfer-Tool, wie wird es genutzt und welche Neuigkeiten gibt es in Verbindung mit dem neuen HTTP/3?

cURL, curl oder Curl?

Dem Entwickler und cURL-Erfinder Daniel Stenberg zufolge ist cURL ein Projekt, das zwei Produkte pflegt: das Kommandozeilenprogramm „curl“ und die Programmbibliothek „libcurl“. Sie dienen zum Übertragen von Dateien von oder zu einem Server im Internet über diverse Netzwerkprotokolle. Das kleine „c“ im Namen steht für „Client“, das „URL“ für die dafür genutzte Internetadresse („Uniform Resource Locator“). Die Wurzeln des cURL-Projektes gehen bis 1996 zurück: Stenberg wollte ursprünglich einen Bot für einen IRC-Chatroom entwickeln, der Währungsumrechnungen anbot und dafür aktuelle Wechselkurse per HTTP herunterladen konnte.

Achtung Verwechslungsgefahr: Seit 1995 gibt es auch eine Programmiersprache für interaktive Internetanwendungen namens „Curl“, die aber nichts mit cURL zu tun hat.

Was kann cURL?

Das Open-Source-Tool ist heute das Schweizer Taschenmesser für alles, was mit Internetprotokollen zusammenhängt. Denn egal mit welchem Server Sie kommunizieren wollen – die Chancen stehen gut, dass cURL die nötigen Funktionen mitbringt.

Die Bibliothek libcurl, welche natürlich auch von curl genutzt wird, beherrscht eine Vielzahl von Protokollen (Stand August 2022):

  • HTTP (HTTP/1, HTTP/2), HTTPS (inkl. experimentellem HTTP/3-Support)
  • FTP / FTPS / SFTP / TFTP
  • SMB / SMBS
  • LDAP / LDAPS
  • POP3 / POP3S
  • IMAP / IMAPS
  • SMTP / SMTPS
  • Telnet
  • GOPHER / GOPHERS
  • SCP (Secure Copy)
  • MQTT
  • RTMP / RTMPS
  • RTSP
  • DICT

Zudem unterstützt cURL SSL-Zertifikate, Uploads per FTP oder HTTP-Formular, die Wiederaufnahme von Dateiübertragungen (Resume), Proxies und Proxy-Tunneling, Cookies sowie Benutzer- und Passwort-Authentifizierung (u.a. per Plain, Digest, CRAM-MD5, SCRAM-SHA, NTLM, Kerberos).

Das Kommandozeilenwerkzeug curl eignet sich insbesondere für die Verwendung in Batch- oder Shellskripten – nicht nur zur Übertragung von Dateien, sondern auch für zahlreiche andere Anwendungen. Denn cURL unterstützt alle wichtigen HTTP-Request-Methoden (auch DELETE, TRACE, PATCH, OPTIONS, CONNECT) sowie diverse Mailprotokolle (IMAP, POP3 und SMTP), Verzeichnisdienste (LDAP, LDAP/S), Streaming-Protokolle (RTMP, RTSP), Wörterbücher (DICT) und Maschine-zu-Maschine-Kommunikation (MQTT).

Wofür wird cURL eingesetzt?

Dank ihrer Vielseitigkeit werden beide Produkte in den verschiedensten Anwendungsbereichen verwendet, in Millionen von Skripten und automatisierten Anwendungen, zum Fernsteuern oder Testen von Servern und Websites, zum Experimentieren mit Protokollen oder zum Ausprobieren neuer Dinge.

Das Tool ist zum unentbehrlichen Werkzeug für Entwickler und viele Website-Administratoren geworden. Und libcurl wird für die Internetkommunikation in den unterschiedlichsten Systemen verwendet, von Smartphones und Tablets über Routern oder Drucker bis hin zu Fernsehgeräten, Blu-Ray-Playern, Spielen und Gaming-Konsolen oder Infotainment-Systemen für Autos. Die Bibliothek soll als offene Software jedem zur Verfügung stehen, der in seiner Software clientseitige Dateitransfer-Fähigkeiten implementieren möchte – auf jeder Plattform, jeder Architektur und für jeden Zweck. Sie wird auch von zahlreichen Programmiersprachen (inkl. PHP, Java oder Python) verwendet und gilt als eine der meist verwendeten Open-Source-Bibliotheken der Welt.

Praktische Funktionen

Das Tool ermöglicht neben der Dateiübertragung insbesondere die Fernsteuerung und das Testen von Websites und bietet Website-Administratoren eine Menge nützlicher Funktionen. Die folgenden Beispiele verdeutlichen die Möglichkeiten.

Download mehrerer Dateien

cURL ermöglicht den eleganten Download mehrerer Dateien. Sind beispielsweise diverse Fotos im Verzeichnis „Bilder“ unter Dateinamen von 01.png bis 50.png gespeichert, genügt für das Herunterladen eine Codezeile:

curl“https://beispielseite.de/bilder/[01-50].png”-o “img#1.png”

Wird „curl“ ohne weitere Parameter genutzt, erzeugt es automatisch einen GET-Request. Wie Sie in der URL-Angabe sehen, kennt cURL reguläre Ausdrücke, also etwa {file1,file2, file3} oder file[1-3]. Es empfiehlt sich, dabei die URL in Anführungszeichen zu setzen.

Der Parameter -o oder --output stellt sicher, dass die heruntergeladenen Ressourcen in eine oder mehrere Dateien gespeichert werden. cURL speichert die Dateien dann automatisch unter den Dateinamen img01.png bis img50.png.

Dateiupload via FTP

Das Open-Source-Tool unterstützt natürlich das FTP-Protokoll. Für die Ausgabe des Index des Hauptordners genügt dieser Aufruf:

curlftp://username:password@beispielseite.de

Dabei werden Benutzername und Passwort in der URL kodiert. Alternativ können Sie die Zugangsdaten mit dem Parameter -u (oder –user) spezifizieren.

Für den Upload einer Datei nutzen Sie die Parameter-T oder --upload-file und geben den Dateinamen sowie den vollständigen Dateipfad an:

curl -T uploaddatei.txt -u username:passwordftp://beispielseite.de/files/meineDatei.txt

In der Folge kopiert cURL die Datei „uploaddatei.txt“ in das angegebene Verzeichnis unter dem Dateinamen „meineDatei.txt“. Das funktioniert mittels „uploaddatei[1-3]“ auch für mehrere Files.

Den HTTP-Header auslesen

Das Auslesen des HTTP-Headers erfolgt mit dem Befehl:

curl –headhttps://beispielseite.de/

Wenn Sie den Header in der Datei „header.txt“ abspeichern möchten, nutzen Sie -D oder --dump-header:

curl -D header.txt https://beispielseite.de

Eine URL mit unterschiedlichen GET-Parametern auslesen

Sie können beim Einsatz von cURL GET-Parameter übergeben und so zum Beispiel auf unterschiedliche Seiten zugreifen. Häufig finden Sie Websites, deren Einzelseiten über ein Schema wie „https://beispielseite.de/seite.php?id01″ und „http://beispielseite.de/seite.php?id=2″ aufgerufen werden. Zum Auslesen verwenden Sie jetzt „id“ als regulären Ausdruck und erfassen so alle Seiten. Der Befehl lautet:

curl -o seite#1.html “https://beispielseite.de/seite.php?id=[1-50]"

cURL ruft in der Folge alle Dokumente mit den IDs 1 bis 50 auf und schreibt die Dateien in seite01.html bis seite50.html. Hinweis: Wenn eine der Dateien in der Schlange nicht erreichbar ist und zu einem 404-Fehler führt, fährt cURL einfach mit der nächsten Datei fort. Die entsprechende Datei wird dann nicht angelegt.

APIs testen

Dank breiter Unterstützung von Request- und Authentifizierungsmethoden können Sie das Tool nutzen, um schnell und effizient Ihre APIs zu testen. Dabei wählt cURL automatisch die passende Request-Methode; Wenn Sie z. B. Daten mitschicken (etwa per -d, -data oder auch –data-urlencode), setzt cURL automatisch einen POST-Request ab. Sie können aber mittels -X auch eigene Methoden spezifizieren, zum Beispiel DELETE:

curl https:/beispielseite.de/datei.txt -X DELETE

Noch experimentell: erfolgreicher HTTP/3-Transer mithilfe von cURL

Nach langer Entwicklung wurde HTTP/3 – die dritte Version des Hypertext Transfer Protocols – im Juni 2022 offiziell verabschiedet. Statt des 50 Jahre alten TCP verwendet HTTP/3 das ursprünglich von Google entwickelte Multiplex-Transportprotokoll QUIC, das auf UDP aufbaut. Weil QUIC grundsätzlich TLS verwendet, ist eine HTTP/3-Übertragung prinzipiell verschlüsselt und sicher.

Zur Unterstützung von HTTP/3 arbeitet cURL mit diversen QUIC-Implementierungen, darunter „Quiche“ von Cloudflare und msquic von Microsoft. Die cURL-Entwickler kennzeichnen ihre HTTP/3-Unterstützung derzeit immer noch als „experimentell“ (Stand August 2022).

Fazit

Das Open-Source-Tool wird ständig weiterentwickelt (im Juni 2022 erschien Version 7.84.0) und ist hierzum Download erhältlich. Für weiterführende Information ist das kostenlose Buch „Everything cURL“ (in Englisch) unsere Empfehlung. In diesem Buch finden Sie alles rund um cURL, libcURL und damit zusammenhängende Projekte. Nutzen Sie das Tool für den effektiven Datenaustausch über die Internetprotokolle Ihrer Wahl!

Photo byKevin HorvatonUnsplash

  • Über
  • Letzte Artikel

Benjamin Schmitz

Benjamin Schmitz ist selbstständiger Systemadministrator und passionierter Webdesigner. Im Host Europe Blog schreibt er über Webanwendungen und gibt Tipps für Einsteiger und Fortgeschrittene.

Letzte Artikel von Benjamin Schmitz (Alle anzeigen)

  • - 15. November 2023
  • Was ist cURL? - 10. September 2023
  • 9 Tipps für Unternehmen, um die Corona-Krise zu überstehen - 31. März 2020
Was ist cURL? Was kann das Open Source Tool? | Host Europe (2025)
Top Articles
Latest Posts
Recommended Articles
Article information

Author: Madonna Wisozk

Last Updated:

Views: 6126

Rating: 4.8 / 5 (48 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Madonna Wisozk

Birthday: 2001-02-23

Address: 656 Gerhold Summit, Sidneyberg, FL 78179-2512

Phone: +6742282696652

Job: Customer Banking Liaison

Hobby: Flower arranging, Yo-yoing, Tai chi, Rowing, Macrame, Urban exploration, Knife making

Introduction: My name is Madonna Wisozk, I am a attractive, healthy, thoughtful, faithful, open, vivacious, zany person who loves writing and wants to share my knowledge and understanding with you.