cURL in Windows: So steigen Sie einfach ein

Die Abkürzung cURL bedeutet ausgeschrieben „Client for URLs“ oder „Curl URL Request Library“. Dabei handelt es sich um ein Kommandozeilenprogramm mit der dazugehörigen Bibliothek zur Übertragung von Daten in miteinander vernetzten Rechnern. Die Software cURL wurde vom Programmierer Daniel Stenberg geschrieben. Sein ursprüngliches Ziel war, Teilnehmern eines Chats Daten über aktuelle Wechselkurse zur Verfügung zu stellen, die von verschiedenen Webseiten abgerufen wurden. Aufgrund der offenen MIT-Lizenz kann cURL frei verwendet werden und fand Eingang in viele Betriebssysteme – so auch in Windows 10, das seit April 2018 mit dem Update 1803 über cURL verfügt. Das sehr umfangreiche Handbuch Everything curl ist ein Indiz, welche Möglichkeiten sich mit diesem Tool für Entwickler auftun können. Nachfolgend erfahren Sie anhand einiger praktischer Beispiele, was cURL für Windows leisten kann. Einiges können Sie sofort selbst ausprobieren.

Was genau ist cURL für Windows

Wie in anderen Betriebssystemen besteht cURL für Windows aus der ausführbaren Datei curl.exe und der Bibliothek libcurl, einer in der Programmiersprache C geschriebenen API, die die vielen Möglichkeiten von cURL umsetzt. Ausgeführt werden die Befehle mit der Eingabeaufforderung (Kommandozeile) von Windows. Dazu gibt es eine fest vorgegebene Befehlsstruktur:

C:\Users\Musteruser>curl [options …] <url>

Dabei ist <url> die Adresse der Webseite, mit der interagiert werden soll. Mit den [options …] werden die Anweisungen so spezifiziert, dass Vorgänge wie Seitenabrufe, Down- oder Uploads, Postings, Formularverwendung und vieles mehr ausgeführt werden. Für viele Optionen gibt es zwei Schreibweisen:

  • eine mit Minuszeichen und Buchstaben
  • eine mit zwei Minuszeichen und Befehl(swort)

Beispielsweise ist für die Benutzung der GET-Methode als Option „-G“ identisch mit „--get“.

Verfügbarkeit und Version von cURL prüfen

Prüfen Sie zuerst, ob Ihr Windows über cURL verfügt und wenn ja, über welche Version. Dazu aktivieren Sie die Eingabeaufforderung mit „cmd“ in der Windows-Suche. Mit der Eingabe am Cursor

C:\Users\Musteruser>curl --version

erhalten Sie Informationen über die verfügbare cURL-Version in Ihrem Windows 10.

Mit der Weiterentwicklung von cURL hat sich die Anzahl der benutzbaren Protokolle stetig vergrößert. Das zeigt der Vergleich zwischen den beiden zuvor abgerufenen Versionen:

7.55.1 (August 2017) 7.70.0 (April 2020)
dict dict
file file
ftp ftp
ftps ftps
gopher
http http
https https
imap imap
imaps imaps
ldap
ldaps
mqtt
pop3 pop3
pop3s pop3s
rtsp
scp
sftp
smb
smbs
smtp smtp
smtps smtps
telnet telnet
tftp tftp

Damit erweitern sich auch die Möglichkeiten für den Datentransfer in diversen Netzwerken.

Aktuelle Version von cURL installieren

Die mit Windows installierte cURL-Version ist im System als Pfad hinterlegt, der sowohl vom aktuellen User als auch vom Administrator erreicht wird. Wenn Sie alle verfügbaren Protokolle von cURL nutzen wollen, muss die aktuelle Version von cURL für Windows installiert sein. Der einfachste Weg ist der Download der aktuell verfügbaren Version als ZIP-Datei von der Entwickler-Website. Dort finden Sie im Übrigen auch Informationen zu den vorgenommenen Änderungen (Changelog). Entpacken Sie die Datei im Explorer in ein Verzeichnis, z. B. mit dem Namen „curl“. Ein solches Verzeichnis legen Sie sich ebenso auf Ihrer Systemfestplatte an, z. B. C:\curl\. Dort hinein kopieren Sie alle Dateien und Verzeichnisse aus Ihrem entpackten cURL-Download. Die ausführbare Datei curl.exe liegt im Unterverzeichnis \bin, in dem sich auch die Zertifikatsdatei curl-ca-bundle.crt befindet. Diese wird benötigt, um etwa das SFTP- oder HTTPS-Protokoll zu nutzen.

Dann rufen Sie die Windows-Eingabeaufforderung auf und geben ein:

# 2-mal eine Verzeichnisebene höher springen 
C:\Users\Musteruser>cd..
C:\Users>cd..
# in das angegebene Verzeichnis springen
C:\cd curl\bin
C:\curl\bin>

An der Eingabeposition steht Ihnen nun der komplette Funktionsumfang von cURL für Windows zur Verfügung, das hier für weitere Darstellungen benutzt wird. Zum Test rufen Sie einfach, wie zuvor beschrieben, die Version ab. Die hier beschriebene Art der Aktualisierung von cURL funktioniert für Windows 7, 8 und 10. Sie können das aktuelle cURL auch ins System integrieren; dafür müssen Sie einen Systempfad anlegen sowie den Pfad zur alten Version finden (!) und deaktivieren.

cURL ganz praktisch – einfache Beispiele

Die Nutzung von cURL für Windows erfolgt mit der Eingabe von Textbefehlen in der Eingabeaufforderung. Für den schnellen Überblick dient der Befehl:

C:\curl\bin>curl --help

Die ausführliche Darstellung des Handbuchs erreichen Sie mit:

C:\curl\bin>curl --manual

Beide Ausgaben, die in der Eingabeaufforderung erscheinen, speichert man sich zweckmäßigerweise per Copy-and-Paste als txt-Datei in einem separaten Ordner. So erreicht man die Befehle einfach mit der Suchfunktion im Dokument und hält sich die Eingabeaufforderung frei.

Tipp

Nutzen Sie einen Text-Editor in Windows. Darin können Sie die Befehle für cURL notieren, prüfen und dann in die Eingabeaufforderung kopieren. Das erspart vielfaches (frustierendes) Eintippen, wenn sich Schreibfehler eingeschlichen haben. Zudem können Sie sich eigene „Befehlswelten“ beispielsweise mit Ihren Zugangsdaten für künftige Aktionen speichern.

Noch schneller geht es mit

C:\curl\bin >curl --help | clip

Der CMD-Befehl „clip“ mit vorangestellter Pipe „|“ kopiert die aktuelle Ausgabe der Eingabeaufforderung sofort in die Windows-Zwischenablage, sodass man den Inhalt nur noch mit [Strg] + [V] in ein leeres Editor-Dokument einzusetzen und dann zu speichern braucht.

Informationen über eine Website lokal speichern

Sollen Informationen über eine Website in einer lokalen Datei gespeichert werden, ist das mit einer einfachen cURL-Routine möglich. Die Datei mit den Informationen soll den Dateinamen infos.html erhalten und auf dem lokalen PC im gleichen Verzeichnis wie die cURL-Installation abgespeichert werden. In Windows nutzt cURL dafür die Option „-o“ (ein kleines o, keine Null).

curl -o infos.html https://www.n-tv.de/

Dieser Abruf erzeugt eine mehr als 700 Kilobyte große Datei mit dem exakten Zustand der Website des Nachrichtensenders N-TV zum Zeitpunkt des Abrufs.

Wenn Sie diese Datei vom lokalen Datenträger in einem Browser aufrufen, bekommen Sie die Website in dem gespeicherten Zustand angezeigt.

Das funktioniert ebenso mit einer einzelnen Datei von einem Webserver. Die Datei ref.pdf soll nach dem Download zusätzlich in referenzen.pdf umbenannt werden:

curl -o referenzen.pdf https://meineseite.tld/ref.pdf
#oder
curl --output referenzen.pdf https://meineseite.tld/ref.pdf

Einen Website-Header anzeigen

Um den Inhalt eines Website-Headers – eingeschlossen in die HTML-Tags <head>…</head> – auszulesen, nutzen wir eine Option vor der anzufragenden Webadresse (I = großes i):

curl --head https://google.com
#oder
curl -I https://google.com

Umfangreichere Informationen auslesen

Um noch mehr Informationen per cURL auszulesen, lässt sich die Ausgabe mit der zusätzlichen Option „-v“ oder „--verbose“ ergänzen. Damit erhält man u. a. Informationen über die verwendete IPv6-Adresse, den Port, gesetzte Zertifikate u. v. m.

curl -I https://google.com -v
#oder
curl --head https://google.com --verbose

Daten-Upload per SFTP-Protokoll

Hier wird der cURL-Befehl schon etwas komplexer, denn für SFTP müssen Nutzerkennungen zur Anmeldung und Verifizierung am Server übertragen werden. Los geht es mit:

curl -k sftp://der-muster-ftp-server:22 --user MusterUser:MusterPasswort -T musterdatei.pdf

Im Fenster der Windows-Eingabeaufforderung ist der Verlauf des Uploads zu verfolgen. Die hochgeladene Datei sollte nun im Wurzelverzeichnis Ihres FTP-Servers zu finden sein. Sollten Sie sich bei der Befehlseingabe vertippt haben, reagiert cURL für Windows kurz und knapp mit „curl: (67) Authentication failure“. Versucht man diesen Transfer mit der eingangs genannten älteren cURL-Version 7.55.1, erscheint die Meldung „curl: (1) Protocol "sftp" not supported or disabled in libcurl“.

Download per SFTP-Protokoll und cURL

Der Download funktioniert ohne speziellen FTP-Client mit dem aktuellen cURL ebenso einfach – Voraussetzung ist natürlich, dass die Datei für den Download auf dem FTP-Server existiert:

curl -k sftp://der-muster-ftp-server:22 --user MusterUser:MusterPasswort -o musterdatei.pdf
Hinweis

cURL ist zu einem mächtigen Werkzeug gewachsen. Gehen Sie mit Bedacht vor, wenn Sie an Ihrer eigenen Serverumgebung cURLen. Mit einer Datensicherung und einem Windows-Wiederherstellungsmedium sind Sie auf der sicheren Seite, wenn wirklich einmal etwas schiefgeht.

Den Wetterbericht cURLen

Dass es mit ASCII-Zeichen möglich ist, Informationen ansprechender (und dazu noch nützlich) aufzubereiten, beweist der Abruf des lokalen Wetterberichts:

curl http://wttr.in/LOCATION

Das lässt sich mit beliebigen Orten durchführen.

cURL und PHP – ein gutes Paar

Um mit cURL im praktischen Programmieralltag zu arbeiten, ist cURL auch in PHP verfügbar. Prüfen Sie Ihren Webserver mit der PHP-Abfrage:

<?php
phpinfo();
?>

Speichern Sie diesen Code als Datei phpinfo.php ab und legen Sie diese ins Wurzelverzeichnis Ihres Webservers. Nach Aufruf dieser Datei im Browser mit https://meineseite.tld/phpinfo.php erhalten Sie alle Informationen über die in Ihrer PHP-Version verfügbaren Optionen angezeigt, so auch die Verfügbarkeit von cURL.

Um nun eine Webseite mit zusätzlichen Informationen abzurufen, genügen einige Zeilen PHP-Code. Hier als Beispiel der Abruf der deutschsprachigen Microsoft-Seite:

<?php
$site = curl_init(); //cURL-handler initialisieren

curl_setopt($site, CURLOPT_URL, "https://www.microsoft.com/de-de/"); //URL setzen
curl_setopt($site,CURLOPT_RETURNTRANSFER,true); // Optionale Parameter setzen
curl_setopt($site,CURLOPT_HEADER, true); //Header anzeigen; mit „false“ unterdrücken

$result=curl_exec($site); //das eigentliche cURL ausführen

curl_close($site);

echo $result;
?>

Speichern Sie diesen Code zum Beispiel als curlinfo.php im Wurzelverzeichnis Ihres Webservers.

Da nur der reine PHP-Code in der Datei liegt, werden die Header-Informationen in der browsereigenen Schrift, also unformatiert ausgegeben. Solch eine Routine ist der Beginn des Einbettens von Daten aus anderen Webseiten in eine eigene Webpräsenz mit PHP und cURL.

PowerShell vs. Eingabeaufforderung

In Windows 10 wurde ein weiteres, mächtiges Entwicklerwerkzeug implementiert: die PowerShell. Sie ist nach Aufruf über das Windows-Symbol mit der rechten Maustaste an den Buchstaben „PS“ vor dem Windows-Pfad erkennbar. Die Windows PowerShell soll die unter dem Begriff „Konsole“ verfügbare Eingabeaufforderung künftig ablösen und bietet noch umfangreichere Möglichkeiten, Webseiten und Server zu administrieren. Allerdings sind nur einige der cURL-Befehle in der PowerShell verwendbar. Andere müssen „übersetzt“ werden.

Der „Übersetzer“ ist gleich eingebaut und wird in der PowerShell mit „GetAlias“ plus cURL-Befehl aktiviert.

PS C:\WINDOWS\system32> Get-Alias curl
# erzeugt die Ausgabe
CommandType	Name	Version	Source
-----------	----	-------	------
Alias	curl -> Invoke-WebRequest

Damit wissen wir, mit welchem PowerShell-Befehl eine Webseite gecURLt werden kann:

PS C:\WINDOWS\system32> Invoke-WebRequest https://google.com/