Die Abkürzung cURL bedeutet aus­ge­schrie­ben „Client for URLs“ oder „Curl URL Request Library“. Dabei handelt es sich um ein Kom­man­do­zei­len­pro­gramm mit der da­zu­ge­hö­ri­gen Bi­blio­thek zur Über­tra­gung von Daten in mit­ein­an­der ver­netz­ten Rechnern. Die Software cURL wurde vom Pro­gram­mie­rer Daniel Stenberg ge­schrie­ben. Sein ur­sprüng­li­ches Ziel war, Teil­neh­mern eines Chats Daten über aktuelle Wech­sel­kur­se zur Verfügung zu stellen, die von ver­schie­de­nen Webseiten abgerufen wurden. Aufgrund der offenen MIT-Lizenz kann cURL frei verwendet werden und fand Eingang in viele Be­triebs­sys­te­me – so auch in Windows 10, das seit April 2018 mit dem Update 1803 über cURL verfügt. Das sehr um­fang­rei­che Handbuch Ever­y­thing curl ist ein Indiz, welche Mög­lich­kei­ten sich mit diesem Tool für Ent­wick­ler auftun können. Nach­fol­gend erfahren Sie anhand einiger prak­ti­scher Beispiele, was cURL für Windows leisten kann. Einiges können Sie sofort selbst aus­pro­bie­ren.

Was genau ist cURL für Windows

Wie in anderen Be­triebs­sys­te­men besteht cURL für Windows aus der aus­führ­ba­ren Datei curl.exe und der Bi­blio­thek libcurl, einer in der Pro­gram­mier­spra­che C ge­schrie­be­nen API, die die vielen Mög­lich­kei­ten von cURL umsetzt. Aus­ge­führt werden die Befehle mit der Ein­ga­be­auf­for­de­rung (Kom­man­do­zei­le) von Windows. Dazu gibt es eine fest vor­ge­ge­be­ne Be­fehls­struk­tur:

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

Dabei ist <url> die Adresse der Webseite, mit der in­ter­agiert werden soll. Mit den [options …] werden die An­wei­sun­gen so spe­zi­fi­ziert, dass Vorgänge wie Sei­ten­ab­ru­fe, Down- oder Uploads, Postings, For­mu­lar­ver­wen­dung und vieles mehr aus­ge­führt werden. Für viele Optionen gibt es zwei Schreib­wei­sen:

  • eine mit Mi­nus­zei­chen und Buch­sta­ben
  • eine mit zwei Mi­nus­zei­chen und Befehl(swort)

Bei­spiels­wei­se ist für die Benutzung der GET-Methode als Option „-G“ identisch mit „--get“.

Ver­füg­bar­keit und Version von cURL prüfen

Prüfen Sie zuerst, ob Ihr Windows über cURL verfügt und wenn ja, über welche Version. Dazu ak­ti­vie­ren Sie die Ein­ga­be­auf­for­de­rung mit „cmd“ in der Windows-Suche. Mit der Eingabe am Cursor

C:\Users\Musteruser>curl --version

erhalten Sie In­for­ma­tio­nen über die ver­füg­ba­re cURL-Version in Ihrem Windows 10.

Mit der Wei­ter­ent­wick­lung von cURL hat sich die Anzahl der be­nutz­ba­ren Pro­to­kol­le stetig ver­grö­ßert. Das zeigt der Vergleich zwischen den beiden zuvor ab­ge­ru­fe­nen 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ög­lich­kei­ten für den Da­ten­trans­fer in diversen Netz­wer­ken.

Aktuelle Version von cURL in­stal­lie­ren

Die mit Windows in­stal­lier­te cURL-Version ist im System als Pfad hin­ter­legt, der sowohl vom aktuellen User als auch vom Ad­mi­nis­tra­tor erreicht wird. Wenn Sie alle ver­füg­ba­ren Pro­to­kol­le von cURL nutzen wollen, muss die aktuelle Version von cURL für Windows in­stal­liert sein. Der ein­fachs­te Weg ist der Download der aktuell ver­füg­ba­ren Version als ZIP-Datei von der Ent­wick­ler-Website. Dort finden Sie im Übrigen auch In­for­ma­tio­nen zu den vor­ge­nom­me­nen Än­de­run­gen (Changelog). Entpacken Sie die Datei im Explorer in ein Ver­zeich­nis, z. B. mit dem Namen „curl“. Ein solches Ver­zeich­nis legen Sie sich ebenso auf Ihrer Sys­tem­fest­plat­te an, z. B. C:\curl\. Dort hinein kopieren Sie alle Dateien und Ver­zeich­nis­se aus Ihrem ent­pack­ten cURL-Download. Die aus­führ­ba­re Datei curl.exe liegt im Un­ter­ver­zeich­nis \bin, in dem sich auch die Zer­ti­fi­kats­da­tei curl-ca-bundle.crt befindet. Diese wird benötigt, um etwa das SFTP- oder HTTPS-Protokoll zu nutzen.

Dann rufen Sie die Windows-Ein­ga­be­auf­for­de­rung 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 Ein­ga­be­po­si­ti­on steht Ihnen nun der komplette Funk­ti­ons­um­fang von cURL für Windows zur Verfügung, das hier für weitere Dar­stel­lun­gen benutzt wird. Zum Test rufen Sie einfach, wie zuvor be­schrie­ben, die Version ab. Die hier be­schrie­be­ne Art der Ak­tua­li­sie­rung von cURL funk­tio­niert für Windows 7, 8 und 10. Sie können das aktuelle cURL auch ins System in­te­grie­ren; dafür müssen Sie einen Sys­tempfad anlegen sowie den Pfad zur alten Version finden (!) und de­ak­ti­vie­ren.

cURL ganz praktisch – einfache Beispiele

Die Nutzung von cURL für Windows erfolgt mit der Eingabe von Text­be­feh­len in der Ein­ga­be­auf­for­de­rung. Für den schnellen Überblick dient der Befehl:

C:\curl\bin>curl --help

Die aus­führ­li­che Dar­stel­lung des Handbuchs erreichen Sie mit:

C:\curl\bin>curl --manual

Beide Ausgaben, die in der Ein­ga­be­auf­for­de­rung er­schei­nen, speichert man sich zweck­mä­ßi­ger­wei­se per Copy-and-Paste als txt-Datei in einem separaten Ordner. So erreicht man die Befehle einfach mit der Such­funk­ti­on im Dokument und hält sich die Ein­ga­be­auf­for­de­rung 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 Ein­ga­be­auf­for­de­rung kopieren. Das erspart viel­fa­ches (frus­tie­ren­des) Eintippen, wenn sich Schreib­feh­ler ein­ge­schli­chen haben. Zudem können Sie sich eigene „Be­fehls­wel­ten“ bei­spiels­wei­se mit Ihren Zu­gangs­da­ten für künftige Aktionen speichern.

Noch schneller geht es mit

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

Der CMD-Befehl „clip“ mit vor­an­ge­stell­ter Pipe „|“ kopiert die aktuelle Ausgabe der Ein­ga­be­auf­for­de­rung sofort in die Windows-Zwi­schen­ab­la­ge, sodass man den Inhalt nur noch mit [Strg] + [V] in ein leeres Editor-Dokument ein­zu­set­zen und dann zu speichern braucht.

In­for­ma­tio­nen über eine Website lokal speichern

Sollen In­for­ma­tio­nen über eine Website in einer lokalen Datei ge­spei­chert werden, ist das mit einer einfachen cURL-Routine möglich. Die Datei mit den In­for­ma­tio­nen soll den Da­tei­na­men infos.html erhalten und auf dem lokalen PC im gleichen Ver­zeich­nis wie die cURL-In­stal­la­ti­on ab­ge­spei­chert 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 Nach­rich­ten­sen­ders N-TV zum Zeitpunkt des Abrufs.

Wenn Sie diese Datei vom lokalen Da­ten­trä­ger in einem Browser aufrufen, bekommen Sie die Website in dem ge­spei­cher­ten Zustand angezeigt.

Das funk­tio­niert ebenso mit einer einzelnen Datei von einem Webserver. Die Datei ref.pdf soll nach dem Download zu­sätz­lich in re­fe­ren­zen.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 – ein­ge­schlos­sen in die HTML-Tags <head>…</head> – aus­zu­le­sen, nutzen wir eine Option vor der an­zu­fra­gen­den Web­adres­se (I = großes i):

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

Um­fang­rei­che­re In­for­ma­tio­nen auslesen

Um noch mehr In­for­ma­tio­nen per cURL aus­zu­le­sen, lässt sich die Ausgabe mit der zu­sätz­li­chen Option „-v“ oder „--verbose“ ergänzen. Damit erhält man u. a. In­for­ma­tio­nen über die ver­wen­de­te IPv6-Adresse, den Port, gesetzte Zer­ti­fi­ka­te 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 Nut­zer­ken­nun­gen zur Anmeldung und Ve­ri­fi­zie­rung am Server über­tra­gen werden. Los geht es mit:

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

Im Fenster der Windows-Ein­ga­be­auf­for­de­rung ist der Verlauf des Uploads zu verfolgen. Die hoch­ge­la­de­ne Datei sollte nun im Wur­zel­ver­zeich­nis Ihres FTP-Servers zu finden sein. Sollten Sie sich bei der Be­fehls­ein­ga­be vertippt haben, reagiert cURL für Windows kurz und knapp mit „curl: (67) Au­then­ti­ca­ti­on 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 funk­tio­niert ohne spe­zi­el­len FTP-Client mit dem aktuellen cURL ebenso einfach – Vor­aus­set­zung 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 Ser­ver­um­ge­bung cURLen. Mit einer Da­ten­si­che­rung und einem Windows-Wie­der­her­stel­lungs­me­di­um sind Sie auf der sicheren Seite, wenn wirklich einmal etwas schief­geht.

Den Wet­ter­be­richt cURLen

Dass es mit ASCII-Zeichen möglich ist, In­for­ma­tio­nen an­spre­chen­der (und dazu noch nützlich) auf­zu­be­rei­ten, beweist der Abruf des lokalen Wet­ter­be­richts:

curl http://wttr.in/LOCATION

Das lässt sich mit be­lie­bi­gen Orten durch­füh­ren.

cURL und PHP – ein gutes Paar

Um mit cURL im prak­ti­schen Pro­gram­mier­all­tag 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 Wur­zel­ver­zeich­nis Ihres Web­ser­vers. Nach Aufruf dieser Datei im Browser mit https://mei­ne­sei­te.tld/phpinfo.php erhalten Sie alle In­for­ma­tio­nen über die in Ihrer PHP-Version ver­füg­ba­ren Optionen angezeigt, so auch die Ver­füg­bar­keit von cURL.

Um nun eine Webseite mit zu­sätz­li­chen In­for­ma­tio­nen abzurufen, genügen einige Zeilen PHP-Code. Hier als Beispiel der Abruf der deutsch­spra­chi­gen 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 Wur­zel­ver­zeich­nis Ihres Web­ser­vers.

Da nur der reine PHP-Code in der Datei liegt, werden die Header-In­for­ma­tio­nen in der brow­ser­ei­ge­nen Schrift, also un­for­ma­tiert aus­ge­ge­ben. Solch eine Routine ist der Beginn des Ein­bet­tens von Daten aus anderen Webseiten in eine eigene Web­prä­senz mit PHP und cURL.

Power­Shell vs. Ein­ga­be­auf­for­de­rung

In Windows 10 wurde ein weiteres, mächtiges Ent­wick­ler­werk­zeug im­ple­men­tiert: die Power­Shell. Sie ist nach Aufruf über das Windows-Symbol mit der rechten Maustaste an den Buch­sta­ben „PS“ vor dem Windows-Pfad erkennbar. Die Windows Power­Shell soll die unter dem Begriff „Konsole“ ver­füg­ba­re Ein­ga­be­auf­for­de­rung künftig ablösen und bietet noch um­fang­rei­che­re Mög­lich­kei­ten, Webseiten und Server zu ad­mi­nis­trie­ren. Al­ler­dings sind nur einige der cURL-Befehle in der Power­Shell ver­wend­bar. Andere müssen „übersetzt“ werden.

Der „Über­set­zer“ ist gleich eingebaut und wird in der Power­Shell 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 Power­Shell-Befehl eine Webseite gecURLt werden kann:

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