# 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**](https://ec.haxx.se/ "extensive curl guide") 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:

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

Dabei ist **&lt;url&gt;&lt;/url&gt;** 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

```none
C:\Users\Musteruser>curl --version
```

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

[![Bild: cURL-Windows-10-Version anzeigen](https://www.ionos.at/digitalguide/fileadmin/_processed_/6/1/csm_curl-windows-10-version_dd2d3705b9.webp "cURL-Windows-10-Version anzeigen")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/curl-windows-10-version.jpg) Anzeige der verfügbaren cURL-Version in Windows 10. A: In der Windows-Version 1903 mitgeliefertes cURL. B: Nachträglich installierte aktuelle Version.       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:

<table>
  <thead>
    <tr>
      <th>7.55.1 (August 2017)</th>
      <th>7.70.0 (April 2020)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>dict</td>
      <td>dict</td>
    </tr>
    <tr>
      <td>file</td>
      <td>file</td>
    </tr>
    <tr>
      <td>ftp</td>
      <td>ftp</td>
    </tr>
    <tr>
      <td>ftps</td>
      <td>ftps</td>
    </tr>
    <tr>
      <td>–</td>
      <td>gopher</td>
    </tr>
    <tr>
      <td>http</td>
      <td>http</td>
    </tr>
    <tr>
      <td>https</td>
      <td>https</td>
    </tr>
    <tr>
      <td>imap</td>
      <td>imap</td>
    </tr>
    <tr>
      <td>imaps</td>
      <td>imaps</td>
    </tr>
    <tr>
      <td>–</td>
      <td>ldap</td>
    </tr>
    <tr>
      <td>–</td>
      <td>ldaps</td>
    </tr>
    <tr>
      <td>–</td>
      <td>mqtt</td>
    </tr>
    <tr>
      <td>pop3</td>
      <td>pop3</td>
    </tr>
    <tr>
      <td>pop3s</td>
      <td>pop3s</td>
    </tr>
    <tr>
      <td>–</td>
      <td>rtsp</td>
    </tr>
    <tr>
      <td>–</td>
      <td>scp</td>
    </tr>
    <tr>
      <td>–</td>
      <td>sftp</td>
    </tr>
    <tr>
      <td>–</td>
      <td>smb</td>
    </tr>
    <tr>
      <td>–</td>
      <td>smbs</td>
    </tr>
    <tr>
      <td>smtp</td>
      <td>smtp</td>
    </tr>
    <tr>
      <td>smtps</td>
      <td>smtps</td>
    </tr>
    <tr>
      <td>telnet</td>
      <td>telnet</td>
    </tr>
    <tr>
      <td>tftp</td>
      <td>tftp</td>
    </tr>
  </tbody>
</table>

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](https://curl.haxx.se/windows/ "Aktuelle cURL-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:

```none
# 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:

```none
C:\curl\bin>curl --help
```

Die ausführliche Darstellung des Handbuchs erreichen Sie mit:

```none
C:\curl\bin>curl --manual
```

Beide Ausgaben, die in der Eingabeaufforderung erscheinen, speichert man sich zweckmäßigerweise per Copy-and-Paste als [txt-Datei](https://www.ionos.at/digitalguide/server/konfiguration/txt-datei/ ".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

```none
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).

```none
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.

[![Bild: cURL Abruf von Website-Informationen.](https://www.ionos.at/digitalguide/fileadmin/_processed_/b/c/csm_curl-website-information_22ae9662c4.webp "cURL Abruf von Website-Informationen.")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/curl-website-information.jpg) Der beispielhafte Abruf der Website www.n-tv.de erzeugt eine Datei mit allen Inhalten zwischen den Tags       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:

```none
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 *&lt;head&gt;…&lt;/head&gt;* – auszulesen, nutzen wir eine Option vor der anzufragenden Webadresse (I = großes i):

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

[![Bild: cURL Abruf von Website-Informationen.](https://www.ionos.at/digitalguide/fileadmin/_processed_/1/1/csm_curl-website-information-2_9e3ece7c83.webp "cURL Abruf von Website-Informationen.")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/curl-website-information-2.jpg) Der beispielhafte Abruf des Website-Headers von Google.       ###  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.

```none
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:

```none
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:

```none
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:

```none
curl http://wttr.in/LOCATION
```

[![Bild: cURL-Abruf des regionalen Wetterberichts.](https://www.ionos.at/digitalguide/fileadmin/_processed_/c/2/csm_curl-wetter_8ff3187423.webp "cURL-Abruf des regionalen Wetterberichts.")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/curl-wetter.jpg) Der Abruf von wttr.in mit cURL für Windows liefert eine Drei-Tages-Wettervorschau und hinter „Location:“ die Geodaten des abgerufenen Ortes.     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](https://www.ionos.at/digitalguide/websites/web-entwicklung/php-curl/). Prüfen Sie Ihren Webserver mit der PHP-Abfrage:

```none
<?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.

[![Bild: Prüfung auf cURL in PHP](https://www.ionos.at/digitalguide/fileadmin/_processed_/8/3/csm_curl-php_38734c4f5c.webp "Prüfung auf cURL in PHP")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/curl-php.jpg) Die PHP-Informationsdatei verrät, ob cURL in Ihrer PHP-Version aktiviert ist.       Um nun eine Webseite mit zusätzlichen Informationen abzurufen, genügen einige Zeilen PHP-Code. Hier als Beispiel der Abruf der deutschsprachigen Microsoft-Seite:

```none
<?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.

[![Bild: Website-Abruf mit cURL in PHP](https://www.ionos.at/digitalguide/fileadmin/_processed_/5/f/csm_curl-website_e4e796d002.webp "Website-Abruf mit cURL in PHP")](https://www.ionos.at/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/curl-website.jpg) Der PHP-Code zeigt die Webseite mit den zusätzlichen Header-Daten aus dem Quellcode an.       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](https://www.ionos.at/digitalguide/server/knowhow/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.

```none
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:

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


This is a markdown version of: [https://www.ionos.at/digitalguide/server/tools/einstieg-in-curl-in-windows/](https://www.ionos.at/digitalguide/server/tools/einstieg-in-curl-in-windows/) for AI/LLM consumption.