Wie man cURL mit Proxy benutzt

Nutzen Sie diese ausführliche Anleitung mit Code-Snippets, um den Einstieg in cURL mit Proxies zu erleichtern.
13 min read
Using proxies with cURL featured image

In diesem Beitrag behandeln wir:

Was ist cURL?

cURL, kurz für „Client URL“, ist ein Tool zum Senden und Empfangen von Daten über das Internet mithilfe von URLs. Als Softwareprojekt bietet es sowohl eine Bibliothek (libcurl) als auch ein Befehlszeilentool (cURL). Hier konzentrieren wir uns auf cURL, das Befehlszeilentool zum Übertragen von Daten über die URL-Syntax. 

Das Projekt unterstützt eine Vielzahl von Protokollen, darunter HTTP, HTTPS, FTP, FTPS, SFTP, POP3, POP3S, IMAP, IMAPS, LDAP, LDAPS, SCP und mehr. Dies macht cURL zum beliebtesten und am häufigsten verwendeten Befehlszeilen-HTTP-Client der Welt. 

cURL ist äußerst vielseitig und stellt eine gängige Lösung für verschiedene Aufgaben dar, z. B. das Stellen von HTTP-Anfragen, das Herunterladen von Dateien, das Hochladen von Daten und die Interaktion mit APIs. Es bietet mehrere Funktionen, von der Anpassung von Anfragen bis hin zur Proxyunterstützung.

cURL installieren

Lernen wir nun, wie Sie cURL auf Ihrem Computer installieren.

macOS

Sie müssen cURL auf macOS nicht installieren. Das Tool ist bereits im Betriebssystem enthalten und Sie können es nativ in der Terminal-Anwendung verwenden.

Windows

Ab Windows 10 enthält Windows eine Kopie von cURL. Gleichzeitig ist der Befehl curl ein Alias für den PowerShell-Invoke-WebRequest-Befehl. Das bedeutet, dass curl-Befehle im Windows-Terminal im Hintergrund Invoke-Request aufrufen. Um dies zu vermeiden und tatsächlich curl von cURL zu verwenden, ersetzen Sie „curl“ durch „curl.exe“. Auf diese Weise führt PowerShell curl aus und nicht Invoke-Request.

Sie können beispielsweise die aktuelle Version von cURL überprüfen, die auf Ihrem Windows-Computer im Terminal installiert ist, mit:

curl.exe --version

Die Ausgabe sollte in etwa so aussehen:

curl 8.0.1 (Windows) libcurl/8.0.1 Schannel WinIDN

Release-Date: 2023-03-20

Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp

Features: AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets

Wenn Sie ein Windows-Benutzer sind, ersetzen Sie alle „curl“-Instanzen in den Befehlen des Artikels durch die Zeichenfolge „curl.exe“. Richten Sie andernfalls das Windows-Subsystem für Linux (WSL) ein und folgen Sie den nachstehenden Anweisungen.

Linux

Unter Linux ändert sich das Verfahren zur Installation von cURL je nachdem, welche Distribution Sie verwenden. Die gängigen Linux-Distributionen wie Ubuntu und Fedora werden standardmäßig mit diesem Programm geliefert. Sie können also cURL direkt im Terminal verwenden.

In anderen Distributionen ist cURL möglicherweise nicht enthalten. In diesem Fall können Sie es mit dem Distributionspaketmanager hinzufügen. Auf einem Debian-basierten Betriebssystem können Sie cURL mit dem folgenden Befehl installieren:

sudo apt-get install curl

Was Sie benötigen, um einen Proxy in cURL zu verwenden

Ein Proxy fungiert als Vermittler zwischen dem Client und dem Zielserver. Er fängt Anfragen vom Client ab, leitet sie an den Server weiter, empfängt die Antwort des Servers und sendet sie an den Client zurück. Diese Zwischenschaltung erhöht die Anonymität und hilft, Netzbeschränkungen zu vermeiden. So erkennt der Zielserver, dass die Anfragen von der IP und dem Standort des gewählten Proxy-Servers ausgehen und nicht von Ihnen.

Um mit der Verwendung von cURL mit Proxydiensten zu beginnen, benötigen Sie zunächst Zugriff auf einen Proxy. Die Syntax einer Proxy-URL sieht folgendermaßen aus:

[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]

Sie besteht aus folgenden Elementen:

  • : Das Protokoll, das zur Verbindung mit dem Proxy-Server verwendet wird. Wenn kein Protokoll angegeben ist, verwendet cURL standardmäßig http://.
  • : Die erforderliche IP-Adresse oder URL des Hostnamens des Proxy-Servers.
  • : Der Port, auf den der Proxyserver hört. Wenn kein Port angegeben ist, verwendet cURL standardmäßig 1080.
  • : Der optionale Benutzername, der für die Authentifizierung des Proxy-Servers erforderlich ist.
  • : Das optionale Passwort, das Sie für die Authentifizierung des Proxy-Servers angeben müssen.

Was die Proxy-Protokolle betrifft, so sind die beliebtesten HTTP und HTTPS, gefolgt von SOCKS.

Es ist an der Zeit, einen gültigen HTTP-Proxy abzurufen!

Auf der Free Proxy List (siehe unten) können Sie einen kostenlosen Proxy erhalten:

IP Address: 71.19.249.97; Port: 8443

Das bedeutet, dass die Proxy-URL wie folgt lautet:

http://71.19.249.97:8443

Die Entscheidung für eine solche Lösung ist für Lernzwecke in Ordnung, aber in einem realen Szenario können Sie sich nicht darauf verlassen. Kostenlose Proxy-Dienste sind unzuverlässig, fehleranfällig, langsam, datenhungrig und kurzlebig. Verwenden Sie diese nicht!

Wie lautet die Lösung? Premium-Proxys von Bright Data, dem besten Anbieter auf dem Markt Abonnieren und testen Sie unsere zuverlässigen Proxys kostenlos.

Denken Sie daran, dass Premium-Lösungen durch Authentifizierung geschützt sind. Angenommen, das Protokoll ist HTTP, der Host ist 71.103.203.109, der Port ist 9321 und die beiden Anmeldedaten sind admin-32458 und rTuJ3tEwf. In diesem Fall würde die cURL-Proxy-URL lauten:

http://admin-32458:@rTuJ3tEwf71.103.203.109:9321

Wie man einen HTTP/HTTPS-Proxy in cURL spezifiert

Bevor Sie beginnen, starten Sie den folgenden Befehl in Ihrem Terminal:

curl "https://httpbin.org/ip"

Wie Sie sehen können, lautet die grundlegende cURL-Syntax:

curl [optional_commands] <URL>

Eine bewährte Methode für cURL empfiehlt, URLs mit doppelten Anführungszeichen zu umgeben, um Probleme mit Sonderzeichen zu vermeiden.

Führen Sie sie aus und Sie sollten etwa folgendes Ergebnis erhalten:

{

  "origin": "194.33.243.7"

}

Das HttpBin-Projekt ermöglicht es Ihnen, Informationen über Ihre HTTP-Anfragen zu erhalten. Im Einzelnen gibt der Endpunkt /ip die Ursprungs-IP der Anfrage zurück, d. h. die IP-Adresse des Computers, der die Anfrage ausgeführt hat. Mit anderen Worten, er gibt deine IP zurück. 

Nachdem Sie einen Proxy in cURLeingerichtet haben, sollten Sie die IP-Adresse des Proxyservers sehen und nicht Ihre.

Es gibt mehrere Möglichkeiten, einen Proxy in cURL festzulegen. Lassen Sie uns nun zu den gängigsten Ansätzen zur Angabe eines HTTP/HTTPS-Proxys in cURL übergehen.

Ein Befehlszeilenargument verwenden

cURL bietet zwei Befehlszeilenargumente zum Festlegen einer Proxy-URL:

  • -x
  • --proxy

Die beiden können synonym verwendet werden, da sie genau dasselbe tun. Letzteres ist nur ein Alias für Ersteres.

Die Syntax zur Verwendung von cURL mit Proxydiensten lautet also:

curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>

Oder:

curl --proxy [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>

Hinweis: Bei Befehlszeilenoptionen wird in cURL zwischen Groß- und Kleinschreibung unterschieden. Beispielsweise haben -x und -X zwei verschiedene Bedeutungen.

Starten Sie jetzt:

curl -x "http://71.19.249.97:8443" "https://httpbin.org/ip"

Oder das Äquivalent:\

curl --proxy "http://71.19.249.97:8443" "https://httpbin.org/ip"

Sie sollten dann Folgendes erhalten:

{

  "origin": "71.19.249.97"

}

Der Ursprung entspricht der IP des Proxyservers. Das bedeutet, dass die Zielsite die Anfrage wie gewünscht als vom Proxy kommend ansieht. Großartig!

Vergessen Sie nicht, dass kostenlose Proxys nur von kurzer Dauer sind. Es ist also unwahrscheinlich, dass der oben genannte Server noch aktiv ist, wenn Sie diesen Artikel lesen. Falls ein Fehler auftritt, ersetzen Sie diesen durch einen neuen Proxy.

Verwendung von Umgebungsvariablen

Eine andere Möglichkeit, einen Proxy in cURL zu verwenden, besteht darin, die folgenden beiden Umgebungsvariablen zu setzen:

  • http_proxy: Die URL des Proxyservers, der für den Zugriff auf URLs mit dem HTTP-Protokoll verwendet wird.
  • https_proxy: Die URL des Proxyservers, der für den Zugriff auf URLs mit dem HTTP-Protokoll verwendet wird.

Unter macOS und Linux können Sie diese beiden Umgebungen mit der folgenden Syntax einrichten:

export http_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

export https_proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

Die beiden Befehle lauten also:

export http_proxy="http://71.19.249.97:8443"

export https_proxy="http://71.19.249.97:8443"

Unter Windows müssen Sie diese PowerShell-Syntax verwenden:

$env:http_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

$env:https_proxy = "[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

Dann, in unserem Beispiel:

$env:http_proxy = "http://71.19.249.97:8443"

$env:https_proxy = "http://71.19.249.97:8443"

Von nun an wird jeder cURL-Befehl über die angegebenen Proxies laufen, ohne dass die Option -x verwendet werden muss:

Auch hier wird Folgendes zurückgegeben:

curl https://httpbin.org/ip

{

  "origin": "71.19.249.97"

}

Um die cURL-Proxys zu deaktivieren, deaktivieren Sie die Umgebungsvariablen mit:

unset http_proxy

unset https_proxy

Oder unter Windows:

$env:http_proxy = ""

$env:https_proxy = ""

cURL wird zu seinem Standardverhalten zurückkehren und https://httpbin.org/ip wird nun Ihre IP zurückgeben.

Eine Konfigurationsdatei verwenden

Sie können global einen Proxy für cURL angeben, indem Sie eine .curlrc-Konfigurationsdatei erstellen.

Öffnen Sie unter Linux und macOS das Terminal und navigieren Sie zu Ihrem Home-Verzeichnis:

cd ~

Greifen Sie dann mit nano auf die .curlrc zu:

nano .curlrc

Falls die Datei bereits existiert, wird sie geöffnet. Andernfalls wird sie zuerst erstellt und dann geöffnet.

Fügen Sie der Datei .curlrc die folgende Zeile hinzu:

proxy="http://71.19.249.97:8443"

Die Syntax dieser Anweisung lautet:

proxy="[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

Speichern Sie die Datei, schließen Sie das Terminal und starten Sie sie erneut. 

Unter Windows müssen Sie eine _curlrc-Datei im Verzeichnis %APPDATA% mit demselben Inhalt erstellen. Fügen Sie %APPDATA% in die Adressleiste des Datei-Explorers ein und drücken Sie die EINGABETASTE, um auf das Verzeichnis zuzugreifen. 

Das sollte Sie zu C:\Users\\ AppData\ Roaming bringen.

Nun verwendet cURL automatisch den in der Konfigurationsdatei angegebenen Proxy:

curl "http://httpbin.org/ip"

Sie erhalten:

{

  "origin": "71.19.249.97"

}

Fantastisch! Sie haben gerade gelernt, cURL mit Proxyservern auf drei verschiedene Arten zu verwenden!

Wie man SOCKS-Proxies in cURL einrichtet

Wenn Sie einen SoCKS-Proxy verwenden möchten, bleibt die Befehlsstruktur dieselbe:

curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] <URL>

Der Hauptunterschied besteht darin, dass Socken4, Socken4a, Socken5oder Socken5h sein wird, statt http und https.

Ein vollständiges Beispiel für einen cURL-SOCKS-Proxy in Aktion ist:

curl -x "socks5://94.14.109.54:2478" "http://httpbin.org/ip"

Wie zu erwarten, wird das Ergebnis lauten:

{

  "origin": "94.14.109.54"

}

Ein alternativer Ansatz beinhaltet die Befehlszeilenoptionen --socks4, --socks4a, --socks5 anstelle von -x. In diesem Fall müssen Sie die Proxy-URL ohne Benutzername und Passwort nach der Option und dann die Anmeldeinformationen nach --proxy-user angeben:

curl --socks4|--socks4a|--socks5 <HOST>[:<PORT>] <URL> --proxy-user <USERNAME>:<PASSWORD>

Zum Beispiel:

curl --socks4 "93.16.238.41:8721" "http://httpbin.org/ip" --proxy-user admin334:kv4NsDgc3

Dadurch wird über den 93.16.238. 41:8721 socks4-Proxy eine Verbindung zu HTTPBin hergestellt, wobei admin334 als Benutzername und kv4nsDGC3 als Passwort für die Authentifizierung verwendet werden.

Tipps und Tricks, die Sie kennen sollten

In diesem Abschnitt erfahren Sie einige interessante Tricks und wertvolle Tipps für den professionellen Umgang mit einem cURL-Proxy.

Schnelles Ein- und Ausschalten von Proxys

Die Idee hier ist, Aliase für das programmatische Setzen und Deaktivieren von Proxys über Umgebungsvariablen mit benutzerdefinierten Befehlen zu definieren. 

Unter macOS und Linux können Sie das tun, indem Sie eine .bashrc-Datei erstellen. Dies ist eine Skriptdatei, die jedes Mal ausgeführt wird, wenn sich der Benutzer anmeldet.

Gehen Sie zu Ihrem Home-Ordner:

cd ~

Erstellen oder öffnen Sie dann eine .bashrc-Datei:

nano .bashrc

Fügen Sie den Inhalt im folgenden Format zur Datei hinzu:

alias proxyon="export http_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]';export https_proxy='[<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]'"
alias proxyoff="unset http_proxy;unset https_proxy"

In unserem Beispiel wäre es also:

alias proxyon="export http_proxy='http://71.19.249.97:8443';export https_proxy='http://71.19.249.97:8443'"

alias proxyoff="unset http_proxy;unset https_proxy"

Speichern Sie die Datei und starten Sie Ihren Computer neu.

Jetzt können Sie einen cURL-Proxy aktivieren und deaktivieren mit:

proxyon

curl "http://httpbin.org/ip"

# other HTTP requests...

proxyoff

Beachten Sie die benutzerdefinierten Befehle proxyon und proxyoff. Diese führen die durch die Aliase in der Datei .bashrc angegebenen Operationen aus.

Unter Windows können Sie mit den PowerShell-Aliasen etwas Ähnliches erreichen.

Proxys für eine einzelne Anfrage ignorieren

Wenn Sie verhindern möchten, dass cURL einen konfigurierten Proxy für eine bestimmte Anfrage verwendet, können Sie das Argument --noproxy „*” wie folgt verwenden:

curl --noproxy "*" <URL>

Dies weist cURL an, keine Proxys für alle URLs zu verwenden.

Richten Sie einen Proxy ein und führen Sie aus:

curl --noproxy "*" "https://httpbin.org/ip"

Der daraus entstehende Ursprung enthält Ihre IP und nicht die des Proxy-Servers.

SSL-Zertifikatsfehler vermeiden

Bei der Verwendung von Proxies in cURL können Ihre Anfragen aufgrund eines SSL-Zertifikatsfehlers fehlschlagen. Um dies zu vermeiden, verwenden Sie die Option -k wie in der folgenden Syntax:

curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -k <URL>

-k hilft Ihnen, Zertifikatsfehler zu vermeiden, indem unsichere Serververbindungen über SSL zugelassen werden.

Zum Beispiel können Sie HTTPBin unter Umgehung von SSL-Problemen wie folgt aufrufen:

curl -x "http://71.19.249.97:8443" -k "https://httpbin.org/ip"

Weitere Informationen zur Anfrage erhalten

Wenn eine Anfrage in cURL fehlschlägt, ist es nicht leicht zu verstehen, was passiert ist. Um den Fehler zu diagnostizieren und alle von cURLausgeführten Operationen zu sehen, legen Sie die Option -v fest:

curl -x [<PROTOCOL>://][<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>] -v <URL>

Dadurch werden die Details zu den hergestellten Verbindungen und den vom Tool verwendeten Headern ausgegeben:

$curl -x "http://71.19.249.97:8443" -v "https://httpbin.org/ip"

*   Trying 71.19.249.97:8443...

* Connected to 71.19.249.97 (71.19.249.97) port 8443 (#0)

* allocate connect buffer

* Establish HTTP proxy tunnel to httpbin.org:443

> CONNECT httpbin.org:443 HTTP/1.1

> Host: httpbin.org:443

> User-Agent: curl/8.0.1

> Proxy-Connection: Keep-Alive

>

< HTTP/1.0 200 OK

<

* CONNECT phase completed

* CONNECT tunnel established, response 200

* schannel: disabled automatic use of client certificate

* ALPN: offers http/1.1

* ALPN: server accepted http/1.1

* using HTTP/1.1

> GET /ip HTTP/1.1

> Host: httpbin.org

> User-Agent: curl/8.0.1

> Accept: */*

>

< HTTP/1.1 200 OK

< Date: Sat, 26 Aug 2023 10:39:13 GMT

< Content-Type: application/json

< Content-Length: 31

< Connection: keep-alive

< Server: gunicorn/19.9.0

< Access-Control-Allow-Origin: *

< Access-Control-Allow-Credentials: true

<

{

  "origin": "71.19.249.97"

}

* Connection #0 to host 71.19.249.97 left intact

Welche Proxys eignen sich am besten für cURL?

Die Antwort auf diese Frage hängt von Ihrem Anwendungsfall und der Art der cURL-Anfragen ab, die Sie stellen müssen. Um die richtige Lösung für Ihre Bedürfnisse zu finden, sollten Sie einen Blick auf die verschiedenen Arten von Proxys werfen:

  • Rechenzentrum-Proxys: Sie sind schnell, können aber von Websites aufgrund ihrer identifizierbaren IP-Bereiche leicht entdeckt und blockiert werden.
  • Residential-Proxys: Sie garantieren ein hohes Maß an Anonymität, da sie IP-Adressen anbieten, die von echten Geräten an bestimmten Orten stammen. Residential-Proxys eignen sich hervorragend für den Zugriff auf Websites, die mit geografischen Beschränkungen oder Anti-Bot-Maßnahmen belegt sind, sowie für die Durchführung von Web-Scraping mit cURL.
  • ISP-Proxys: Sie sind schnell, sicher und äußerst zuverlässig, da sie IPs von Geräten bereitstellen, die bei ISPs registriert sind. ISP-Proxys stellen eine perfekte Lösung für SEO-Überwachung, Web-Browsing und Marktforschung dar.
  • Mobile Proxys: Sie bieten IPs von echten mobilen Geräten für ein hohes Maß an Anonymität. Sie sind nützlich für den Zugriff auf mobilspezifische Anwendungen, Websites oder Inhalte.

Dies war nur eine kurze Zusammenfassung, aber Sie können mehr in unserem Leitfaden über Proxy-IP-Typen erfahren.

Fazit

In diesem cURL-Proxy-Leitfaden haben Sie gelernt, was cURL ist, was es zu bieten hat und wie Sie einen HTTP/HTTPS/SOCKS-Proxy einrichten. Es hat sich herausgestellt, dass man sich bei Proxy-Diensten von kostenlosen Anbietern nicht auf cURL verlassen kann. Daher ist die wichtigste technische Entscheidung, welcher Proxyanbieter verwendet werden soll. Sparen Sie Zeit und Energie und entscheiden Sie sich für den besten Anbieter auf dem Markt, Bright Data.

Bright Data betreibt die weltweit besten Proxy-Server und betreut Fortune-500-Unternehmen sowie mehr als 20.000 Kunden.

  • Rechenzentrum-Proxys – über 770.000 Rechenzentrum-IPs.
  • Residetial-Proxys – über 72 Millionen Residential-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 Proxynetzwerke auf dem Markt. Treten Sie dem größten Proxy-Netzwerk bei und erhalten Sie eine kostenlose Testversion.