In diesem Leitfaden erfahren Sie Folgendes:
- Die allgemeine cURL-Syntax zum Herunterladen von Dateien
- Bewältigung komplexerer Szenarien beim Herunterladen von Dateien mit cURL
- Gleichzeitiges Herunterladen mehrerer Dateien
- Einige bewährte Verfahren zur effektiven Verwendung von cURL
- Ein schneller Vergleich zwischen cURL und Wget
Dann legen wir mal los!
Allgemeine cURL-Syntax zum Herunterladen von Dateien
Hier finden Sie die allgemeinste cURL-Syntax zum Herunterladen von Dateien:
curl -O <file_url>
Hinweis: Unter Windows ersetzen Sie curl
durch curl.exe
. Dieser Ersatz ist erforderlich, da curl
ein Alias für Invoke-WebRequest
in Windows PowerShell ist, während curl.exe
ausdrücklich das cURL- Befehlszeilentool ausführt.
curl --remote-name <file_url>
Nehmen wir zum Beispiel den folgenden cURL-Befehl zum Herunterladen von Dateien:
curl -O "https://i.imgur.com/CSRiAeN.jpg"
Dies erzeugt eine Ausgabe mit einem Fortschrittsbalken des Ladevorgangs wie folgt:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 35354 100 35354 0 0 155k 0 --:--:-- --:--:-- --:--:-- 158k
Sobald der Fortschritt 100 % erreicht, wird eine Datei namens CSRiAeN.jpg
in dem Ordner angezeigt, in dem Sie den cURL-Befehl ausgeführt haben:
Weitere Informationen über cURL und dessen Einsatzmöglichkeiten finden Sie in unserem Leitfaden zu cURL. Zeit, komplexere Szenarien zu erkunden!
Verwendung von cURL zum Herunterladen einer Datei: Erweiterte Optionen
Nachdem Sie nunmehr die allgemeine cURL-Syntax zum Herunterladen von Dateien kennen, können Sie sich damit vertraut machen, wie man den Befehl anhand zusätzlicher Optionen anpasst.
Ändern des heruntergeladenen Dateinamens
Mit der Option -O wird die in der Ziel-URL angegebene Datei standardmäßig unter ihrem ursprünglichen Namen heruntergeladen. Enthält die in der URL angegebene Remote-Datei keinen Namen, erstellt cURL eine Datei ohne Erweiterung namens
curl_response:
cURL gibt zusätzlich eine Warnmeldung aus, um Sie über dieses Verhalten zu informieren:
Warning: No remote file name, uses "curl_response"
Verwenden Sie das Flag -o
(oder --output
), um einen benutzerdefinierten Namen für die heruntergeladene Datei festzulegen, wie hier dargestellt:
curl "https://i.imgur.com/CSRiAeN.jpg" -o "logo.jpg"
Dieser Befehl veranlasst cURL, eine GET-Anfrage an die angegebene Datei-URL zu stellen. Daraufhin speichert es den heruntergeladenen Inhalt unter dem nach -o
angegebenen Namen, anstatt ihn auf stdout auszugeben.
Dieses Mal handelt es sich bei der Ausgabedatei um eine logo.jpg-
Datei:
Weiterleitungen folgen
Einige URLs zeigen nicht direkt auf die gewünschte Datei und erfordern automatische Weiterleitungen, um das gewünschte Ziel zu erreichen.
Um cURL anzuweisen, Umleitungen zu folgen, verwenden Sie die Option -L
:
curl -O -L "<file_url>"
Ohne Flag -L
würde cURL die Antwort-Header für die Weiterleitung ausgeben (wie 301 Moved Permanently
oder 302 Found
). Vor allem würde es nicht automatisch der im Location-
Header angegebenen neuen Adresse folgen.
Authentifizierung beim Server
Einige Server beschränken den Zugriff auf ihre Ressourcen und erfordern eine Authentifizierung der Benutzer. Um eine grundlegende HTTP- oder FTP-Authentifizierung vorzunehmen, verwenden Sie die Option -u
(oder --user
). Mit dieser Option können Sie einen Benutzernamen und ein Passwort in folgendem Format angeben:
<username>:<password>
Benutzername und Passwort werden durch einen Doppelpunkt (:
) getrennt, weshalb der Benutzername keinen Doppelpunkt enthalten darf. Dafür kann das Passwort einen Doppelpunkt enthalten.
Die <password>
-Zeichenfolge ist optional. Wenn Sie nur den Benutzernamen angeben, werden Sie von cURL zur Eingabe des Passworts aufgefordert.
Hier ist die Syntax für das Herunterladen einer Datei mit cURL unter Verwendung der Server-Authentifizierung:
curl -O -u <username>:<password> <file_url>
Mit dem folgenden Befehl können Sie beispielsweise eine .png-
Datei von einer URL mit Authentifizierung herunterladen:
curl -O -u "myUser:myPassword" "https://example.com/secret.txt"
cURL authentifiziert sich beim Server anhand von myUser
und myPassword
als Zugangsdaten. Anschließend lädt es die Datei secret.txt
herunter.
Auferlegung von Bandbreitenbeschränkungen
Standardmäßig lädt cURL eine Datei mit der gesamten verfügbaren Bandbreite herunter, was vielleicht nicht immer erwünscht ist. Um die Geschwindigkeit beim Download zu kontrollieren, können Sie die Option --limit-rate
verwenden und anschließend die maximale Download-Geschwindigkeit angeben, die Sie festlegen möchten:
curl -O --limit-rate 5k "https://i.imgur.com/CSRiAeN.jpg"
Die Ausgabe sieht in etwa wie folgt aus:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 35354 100 35354 0 0 5166 0 0:00:06 0:00:06 --:--:-- 5198
Beachten Sie, dass die Download-Geschwindigkeit (5198 Bytes pro Sekunde, was 5 KB pro Sekunde entspricht) der in der Option angegebenen Geschwindigkeit entspricht. Dies ist selbst dann gegeben, wenn die normale Download-Geschwindigkeit Ihres Rechners höher ist als der mit --limit-rate
festgelegte Wert.
Die Option --limit-rate
eignet sich zur Kontrolle der Bandbreitennutzung, um eine Überlastung des Netzwerks zu vermeiden, Bandbreitenbeschränkungen einzuhalten oder zu Testzwecken langsamere Netzwerkbedingungen zu simulieren.
Herunterladen über Proxyserver
Wenn Sie eine Download-Anfrage mit cURL durchführen, wird Ihre IP-Adresse für den Zielserver sichtbar. Dies kann ein Problem darstellen, wenn Sie Ihre Privatsphäre schützen oder Anti-Bot-Maßnahmen wie die Ratenbegrenzung umgehen möchten.
Um Ihre IP-Adresse zu maskieren und Ihre Anfrage über einen Proxy zu leiten, nutzen Sie die Option -x
(oder --proxy
) in Ihrem cURL-Befehl:
curl -x <proxy_url> -O <file_url>
<proxy_url>
muss in folgendem Format angegeben werden:
[protocol://]host[:port]
Beachten Sie, dass die Proxy-URL sich je nachdem, ob Sie einen HTTP-, HTTPS- oder SOCKS-Proxy verwenden, unterscheidet. Ausführlichere Anweisungen hierzu finden Sie in unserem Leitfaden zur Integration von cURL-Proxys.
Benutzen Sie beispielsweise einen HTTP-Proxy, so lautet der Befehl:
curl -x "http://proxy.example.com:8080" -O "https://i.imgur.com/CSRiAeN.jpg"
Durchführen von Hintergrund-Downloads
Standardmäßig blendet der cURL-Befehl zum Herunterladen von Dateien einen Fortschrittsbalken bzw. im Falle eines Fehlers eine Fehlermeldung ein. Um diese Ausgaben zu deaktivieren, können Sie mit der Option -s
(oder --silent
) den Modus „silent“ oder „quiet“ aktivieren:
curl -O -s "https://i.imgur.com/CSRiAeN.jpg"
Auf diese Weise wird cURL geräuschlos ausgeführt. Ist der Download erfolgreich, wird die Datei im aktuellen Verzeichnis angezeigt, allerdings erfolgt keine Rückmeldung im Terminal.
Ausgabe ausführlicher Informationen (Verbose-Modus)
Im Falle eines Fehlers bzw. zum besseren Verständnis dessen, was cURL in Wirklichkeit tut, empfiehlt es sich, den ausführlichen Modus (Verbose-Modus) mit der Option -v
(oder --verbose
) zu aktivieren:
curl -O -v "https://i.imgur.com/CSRiAeN.jpg"
Bei der Ausführung des Befehls erscheinen zusätzliche Ausgaben, die detaillierte Informationen über den Anfrage- und Antwortprozess enthalten:
* IPv6: (none)
* IPv4: 146.75.52.193
* Trying 146.75.52.193:443...
* schannel: disabled automatic use of client certificate
* ALPN: curl offers http/1.1
* ALPN: server accepted http/1.1
* Connected to i.imgur.com (146.75.52.193) port 443
* using HTTP/1.x
> GET /CSRiAeN.jpg HTTP/1.1
> Host: i.imgur.com
> User-Agent: curl/8.10.1
> Accept: */*
>
* Request completely sent off
* schannel: failed to decrypt data, need more data
< HTTP/1.1 200 OK
< Connection: keep-alive
< Content-Length: 35354
< Content-Type: image/jpeg
< Last-Modified: Wed, 08 Jan 2025 08:02:49 GMT
< ETag: "117b93e0521ba1313429bad28b3befc8"
< x-amz-server-side-encryption: AES256
< X-Amz-Cf-Pop: IAD89-P1
< X-Amz-Cf-Id: wTQ20stgw0Ffl1BRmhRhFqpCXY_2hnBLbPXn9D8LgPwdjL96xarRVQ==
< cache-control: public, max-age=31536000
< Accept-Ranges: bytes
< Age: 2903
< Date: Wed, 08 Jan 2025 08:51:12 GMT
< X-Served-By: cache-iad-kiad7000028-IAD, cache-lin1730072-LIN
< X-Cache: Miss from cloudfront, HIT, HIT
< X-Cache-Hits: 1, 0
< X-Timer: S1736326272.410959,VS0,VE1
< Strict-Transport-Security: max-age=300
< Access-Control-Allow-Methods: GET, OPTIONS
< Access-Control-Allow-Origin: *
< Server: cat factory 1.0
< X-Content-Type-Options: nosniff
<
{ [1371 bytes data]
100 35354 100 35354 0 0 212k 0 --:--:-- --:--:-- --:--:-- 214k
* Connection #0 to host i.imgur.com left intact
Dazu gehören Verbindungsdetails, Anfrage- und Antwort -Header sowie zusätzliche Informationen zum Fortschritt des Ladevorgangs.
Einstellen eines vereinfachten Fortschrittsbalkens
Der standardmäßige cURL-Fortschrittsbalken zum Herunterladen von Dateien entspricht eventuell nicht Ihren Anforderungen. Sie können mit der Option -#
(oder --progress-bar
) einen einfacheren Fortschrittsbalken einstellen:
curl -O -# "https://i.imgur.com/CSRiAeN.jpg"
Dadurch wird ein Fortschrittsbalken mit dem Zeichen #
angezeigt, der sich beim Herunterladen der Datei schrittweise füllt:
########################################################### 100.0%
Der #
-Balken gewährt einen minimalistischeren Blick auf den Fortschritt des Downloads im Vergleich zur standardmäßigen Ausgabe des cURL-Fortschritts.
Herunterladen mehrerer Dateien mit cURL
Sie haben gerade gesehen, wie man eine Datei mit cURL herunterlädt, doch wie kann man mehrere Dateien mit einem einzigen Befehl herunterladen? Bereiten Sie sich vor, auch das zu lernen!
Range-Datei herunterladen
cURL unterstützt das gleichzeitige Herunterladen mehrerer Dateien mithilfe der URL-Erweiterung. Konkret können Sie mehrere Dateien mit der gleichen Remote-URL herunterladen, indem Sie diese mit geschweiften Klammern {}
angeben:
curl -O "https://example.com/images/{1.jpg,2.jpg,3.jpg}"
Dadurch werden die drei angegebenen Dateien heruntergeladen:
1.jpg
2.jpg
3.jpg
Beachten Sie, dass die in den {}
angegebenen Dateien unterschiedliche Erweiterungen haben können.
Alternativ können Sie auch die Syntax der eckigen Klammern []
verwenden:
curl -O "https://example.com/files/file[1-3].jpg"
Damit erzielen Sie dasselbe Ergebnis wie im ersten Beispiel. Allerdings müssen in diesem Fall alle Dateien in []
die gleiche Erweiterung haben.
Hinweis: Sollten Sie benutzerdefinierte Optionen angeben (z. B. -s
für den lautlosen Modus bzw. --limit-rate
für Bandbreitenbeschränkungen), werden diese auf alle heruntergeladenen Dateien angewandt.
Herunterladen mehrerer Dateien
Um Dateien von verschiedenen URLs herunterzuladen, geben Sie die Option -O
mehrmals an:
curl -O "https://i.imgur.com/CSRiAeN.jpg" -O "https://brightdata.com/wp-content/uploads/2020/12/upload_blog_20201220_153903.svg"
Dieser Befehl lädt CSRiAeN.jpg
von i.imgur.com
und upload_blog_20201220_153903.jpg
von brightdata.com herunter
.
Die Ausgabe enthält einen Ladebalken pro angegebener URL:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 35354 100 35354 0 0 271k 0 --:--:-- --:--:-- --:--:-- 276k
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 22467 0 22467 0 0 34657 0 --:--:-- --:--:-- --:--:-- 34724
Auf ähnliche Weise können Sie mehrere Optionen -o
verwenden:
curl "https://i.imgur.com/CSRiAeN.jpg" -o "logo.jpg" "https://brightdata.com/wp-content/uploads/2020/12/upload_blog_20201220_153903.svg" -o "blog_post.svg"
Mit dem obigen Befehl wird CSRiAeN.jpg
heruntergeladen und als logo.jpg
gespeichert, währendupload_blog_20201220_153903.svg
heruntergeladen und als blog_post.svg
gespeichert wird.
Denken Sie daran, dass Sie die Optionen -O
und -o
auch miteinander kombinieren können:
curl "https://i.imgur.com/CSRiAeN.jpg" -o "logo.jpg" -O "https://brightdata.com/wp-content/uploads/2020/12/upload_blog_20201220_153903.svg"
Dadurch wird logo.jpg
wie zuvor heruntergeladen und upload_blog_20201220_153903.svg
mit ihrem ursprünglichen Dateinamen.
Beachten Sie, dass andere Optionen wie -v
, -s
oder --limit-rate
eindeutig für alle URLs gelten, d. h. sie müssen einmal angegeben werden.
Bewährte Verfahren beim Herunterladen von Dateien mit cURL
Nachfolgend finden Sie eine Liste der wichtigsten bewährten Verfahren für das Herunterladen von Dateien mit cURL:
- Verwenden Sie
curl.exe
anstelle von curl unter Windows: Verwenden Sie unter Windowscurl.exe
anstelle voncurl
, um Konflikte mit demInvoke-WebRequest-
Cmdlet zu vermeiden. - Ignorieren Sie HTTPS- und SSL/TLS-Fehler (mit Bedacht): Verwenden Sie die Option
-k
(oder--insecure
), um Fehler bei der Validierung von SSL/TLS-Zertifikaten zu ignorieren. Seien Sie sich jedoch bewusst, dass dies die Sicherheit beeinträchtigt und nur in vertrauenswürdigen Umgebungen eingesetzt werden sollte. - Geben Sie die richtigen HTTP-Methoden an: Verwenden Sie bei Anfragen die passende HTTP-Methode wie GET, POST oder PUT. Die Art der Methode beeinflusst, wie der Server auf Ihre Anfrage antwortet. Verwenden Sie die Option
-X
zur Angabe der Methode. - Schließen Sie URLs in Anführungszeichen ein und vermeiden Sie Sonderzeichen: Schließen Sie URLs stets in einfache oder doppelte Anführungszeichen ein, um Sonderzeichen angemessen zu verarbeiten. Vermeiden Sie Probleme mit Leerzeichen, kaufmännischen Zeichen und anderen Sonderzeichen in URLs mithilfe von Escape-Zeichen (
\
). - Geben Sie einen Proxy an, um Ihre Identität zu schützen: Verwenden Sie die Option
-x
(oder--proxy
), um Ihre cURL-Anfragen über einen Proxy zu leiten. Auf diese Weise schützen Sie Ihre IP-Adresse und wahren die Privatsphäre beim Scraping bzw. Herunterladen von Dateien. - Speichern und verwenden Sie Cookies für verschiedene Anfragen wieder: Verwenden Sie die Optionen
-c
und-b
, um Cookies in nachfolgenden Anfragen zu speichern und erneut zu nutzen. Dies trägt zur Aufrechterhaltung der Sitzungsdauer bei und kann für die Authentifizierung oder Nachverfolgung sinnvoll sein. - Begrenzen Sie die Download-Geschwindigkeit für eine bessere Kontrolle: Nutzen Sie die Option
--limit-rate
, um die Download-Geschwindigkeit zu kontrollieren und eine Überlastung Ihrer Netzwerkverbindung oder das Auslösen von Ratenbeschränkungen auf dem Server zu vermeiden. - Fügen Sie eine ausführliche Ausgabe zur Fehlersuche hinzu: Aktivieren Sie den Verbose-Modus mit der Option
-v
, um detaillierte Informationen über Anfrage und Antwort zu erhalten. Das kann bei der Fehlersuche und -behebung nützlich sein. - Überprüfung auf Fehlerantworten: Überprüfen Sie immer die HTTP-Antwortcodes mit der Option
-w
, um festzustellen, ob der Dateidownload erfolgreich war (z. B.200 OK
) oder ob ein Fehler aufgetreten ist (z. B.404 Not Found
).
cURL vs. Wget zum Herunterladen von Dateien
Sowohl cURL als auch Wget sind Befehlszeilentools, um Dateien von Remote-Servern abzurufen. Der Hauptunterschied zwischen den beiden ist folgender:
- Wget ist zum Herunterladen von Dateien aus dem Internet konzipiert. Es unterstützt HTTP, HTTPS, FTP und viele andere Protokolle. Wget ist für seine Fähigkeit bekannt, Dateien rekursiv herunterzuladen, unterbrochene Ladevorgänge fortzusetzen und problemlos in Hintergrundprozessen zu funktionieren. Erfahren Sie, wie Sie es zum Herunterladen von Webseiten mit Python verwenden können.
- cURL ist ein vielseitiges Befehlszeilentool für die Übertragung von Daten zu und von einem Server über verschiedene Internetprotokolle. Es dient im Allgemeinen zum Testen von Endpunkten, zur Durchführung einfacher HTTP-Anfragen und zum Herunterladen einzelner Dateien. cURL kann ferner zum Web-Scraping eingesetzt werden.
Der Hauptunterschied zwischen cURL und Wget besteht darin, dass cURL eine feinere Kontrolle über die Datenübertragung bietet. Im Einzelnen unterstützt es benutzerdefinierte Header, Authentifizierung und weitere Protokolle. Demgegenüber ist Wget einfacher und eignet sich besser für Massendownloads, Rekursionen und die Verwaltung unterbrochener Übertragungen.
Fazit
In diesem Leitfaden haben Sie gelernt, wie man Dateien mit cURL herunterlädt. Sie haben mit der allgemeinen cURL-Syntax für das Herunterladen von Dateien begonnen und komplexere Szenarien und Anwendungsfälle erkundet. Nun wissen Sie, wie man einzelne oder mehrere Dateien mit cURL scrapen kann.
Vergessen Sie nicht, dass Sie bei jeder HTTP-Anfrage Spuren im Internet hinterlassen. Zum Schutz Ihrer Identität, Ihrer Privatsphäre und zur Erhöhung Ihrer Sicherheit sollten Sie die Integration eines Proxys mit cURL in Betracht ziehen. Zum Glück hat Bright Data das Richtige für Sie!
Bright Data betreibt die weltweit besten Proxy-Server und betreut Fortune-500-Unternehmen sowie mehr als 20.000 Kunden.
- Rechenzentrums-Proxys – über 770.000 Rechenzentrums-IPs.
- Privatanwender-Proxys – über 72 Millionen Privatanwender-IPs in mehr als 195 Ländern.
- ISP-Proxys – über 700.000 ISP-IPs.
- Mobile Proxys – über 7 Millionen mobile IPs.
Zusammengefasst handelt es sich um eines der größten und zuverlässigsten auf Scraping ausgerichteten Proxy-Netzwerke auf dem Markt.
Melden Sie sich jetzt an und testen Sie gleich kostenlos unsere Proxys und Scraping-Lösungen!
Keine Kreditkarte erforderlich