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></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.

Bild: cURL-Windows-10-Version anzeigen
cURL-Windows-10-Version anzeigen

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.

Bild: cURL Abruf von Website-Informationen.
cURL Abruf von Website-In­for­ma­tio­nen.

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
Bild: cURL Abruf von Website-Informationen.
cURL Abruf von Website-In­for­ma­tio­nen.

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
Bild: cURL-Abruf des regionalen Wetterberichts.
cURL-Abruf des re­gio­na­len Wet­ter­be­richts.

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.

Bild: Prüfung auf cURL in PHP
Prüfung auf cURL in PHP

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.

Bild: Website-Abruf mit cURL in PHP
Website-Abruf mit cURL in PHP

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/

Reviewer

Zum Hauptmenü