Wie man cURL mit Proxy verwendet

Nutzen Sie diesen detaillierten Leitfaden mit Codebeispielen, um Ihren Einstieg in cURL mit Proxys zu erleichtern.
12 min lesen
How to Use cURL With Proxy blog image

In diesem Beitrag behandeln wir:

  • Was ist curl
  • Installation von curl.
  • Was Sie benötigen, um Proxys zu verwenden
  • Wie man einen HTTP/HTTPS-Proxy in curl angibt.
  • Wie man SOCKS-Proxys in curl einrichtet
  • Tipps und Tricks, die Sie kennen sollten
  • Welche Proxys sind am besten für curl geeignet?

Was Ist cURL?

cURL, kurz für “Client URL”, ist ein Tool, um Daten über das Internet mithilfe von URLs zu senden und zu empfangen. Als Softwareprojekt bietet es sowohl eine Bibliothek (libcurl) als auch ein Kommandozeilen-Tool (curl). Hier konzentrieren wir uns auf curl, das Kommandozeilen-Tool zur Datenübertragung ü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. Das macht curl zum beliebtesten und am weitesten verbreiteten Kommandozeilen-HTTP-Client der Welt. 

cURL ist äußerst vielseitig und stellt eine gängige Lösung für verschiedene Aufgaben dar, wie das Senden 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 Proxy-Unterstützung.

Installation von curl

Lassen Sie uns nun lernen, wie man curl auf Ihrem Rechner installiert.

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 wird Windows mit einer Kopie von curl ausgeliefert. Gleichzeitig ist der Befehl curl ein Alias für den PowerShell-Befehl Invoke-WebRequest. 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”. So führt PowerShell curl aus und nicht Invoke-Request.

Zum Beispiel können Sie die aktuelle Version von curl, die auf Ihrem Windows-Rechner installiert ist, im Terminal überprüfen mit:

curl.exe --version

Das sollte etwas Ähnliches wie dieses ausgeben:

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-Nutzer sind, ersetzen Sie alle “curl”-Vorkommen in den Befehlen des Artikels durch den String “curl.exe”. Andernfalls richten Sie 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 nach der spezifischen Distribution, die Sie verwenden. Beliebte Linux-Distributionen wie Ubuntu und Fedora bringen es standardmäßig mit. So können Sie curl direkt im Terminal verwenden.

In anderen Distributionen ist curl möglicherweise nicht enthalten. In diesem Fall können Sie es über den Paketmanager der Distribution hinzufügen. Auf einem Debian-basierten Betriebssystem können Sie curl mit folgendem 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 des Clients ab, leitet sie an den Server weiter, empfängt die Antwort vom Server und sendet sie an den Client zurück. Dieser Mittler-Ansatz erhöht die Anonymität und hilft, Netzwerkbeschränkungen zu umgehen. Das liegt daran, dass der Zielserver die Anfragen als von der IP und dem Standort des gewählten Proxy-Servers kommend sieht und nicht von Ihnen.

Um mit curl und Proxy-Diensten zu beginnen, benötigen Sie zunächst Zugang zu einem Proxy. Konkret lautet die Syntax einer Proxy-URL:

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

Dies besteht aus:

  • <PROTOCOL>: Das Protokoll zur Verbindung mit dem Proxy-Server. Wird kein Protokoll angegeben, verwendet curl standardmäßig http://.
  • <HOST>: Die erforderliche IP-Adresse oder URL des Hostnamens des Proxy-Servers.
  • <PORT>: Die Portnummer, auf die der Proxy-Server hört. Wird kein Port angegeben, verwendet curl standardmäßig 1080.
  • <USERNAME>: Der optionale Benutzername, der bei erforderlicher Authentifizierung anzugeben ist.
  • <PASSWORD>: Das optionale Passwort, das bei erforderlicher Authentifizierung anzugeben ist.

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

Es ist Zeit, einen gültigen HTTP-Proxy zu beschaffen!

Sie können einen kostenlos auf Free Proxy List erhalten, wie unten gezeigt:

IP Address: 71.19.249.97; Port: 8443

Das bedeutet, die Proxy-URL lautet:

http://71.19.249.97:8443

Eine solche Lösung zu wählen, ist zu Lernzwecken in Ordnung, aber Sie können sich in einem realen Szenario nicht darauf verlassen. Kostenlose Proxy-Dienste sind unzuverlässig, fehleranfällig, langsam, datenhungrig und kurzlebig. Verwenden Sie sie nicht!

Die Lösung? Premium-Proxys von Bright Data, dem besten Anbieter auf dem Markt. Erstellen Sie ein Konto und testen Sie unsere zuverlässigen Proxys.

Beachten Sie, dass Premium-Lösungen durch Authentifizierung geschützt sind. Angenommen, das Protokoll ist HTTP, der Host ist 71.103.203.109 und der Port ist 9321, und das Anmeldepaar ist 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 angibt

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 curl-Praxis empfiehlt, URLs mit doppelten Anführungszeichen zu umgeben, um Probleme mit Sonderzeichen zu vermeiden.

Führen Sie es aus und Sie sollten etwas wie folgt erhalten:

{

  "origin": "194.33.243.7"

}

Das HTTPBin-Projekt ermöglicht es Ihnen, Informationen über Ihre HTTP-Anfragen zu erhalten. Im Detail gibt der Endpunkt /ip die Ursprungs-IP der Anfrage zurück, also die IP-Adresse der Maschine, die die Anfrage durchgeführt hat. Mit anderen Worten, er gibt Ihre IP zurück. 

Nach dem Einrichten eines Proxys in curl sollten Sie die IP-Adresse des Proxy-Servers sehen und nicht Ihre eigene.

Es gibt mehrere Möglichkeiten, einen Proxy in curl einzurichten. Lassen Sie uns nun die beliebtesten Ansätze zur Angabe eines HTTP/HTTPS-Proxys in curl betrachten.

Verwendung eines Kommandozeilenarguments

curl bietet zwei Kommandozeilenargumente, um eine Proxy-URL festzulegen:

  • -x
  • --proxy

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

Die Syntax zur Verwendung von curl mit Proxy-Diensten wird also zu:

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

Oder:

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

Hinweis: Kommandozeilenoptionen unterscheiden in curl zwischen Groß- und Kleinschreibung. Zum Beispiel haben -x und -X zwei unterschiedliche Bedeutungen.

Wenn Sie jetzt Folgendes starten:

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"

Sollten Sie Folgendes erhalten:

{

  "origin": "71.19.249.97"

}

Der Ursprung entspricht der IP des Proxy-Servers. Das bedeutet, dass die Ziel-Website die Anfrage wie gewünscht als vom Proxy kommend sieht. Großartig!

Vergessen Sie nicht, dass kostenlose Proxys kurzlebig sind, sodass der obige Server wahrscheinlich nicht mehr aktiv ist, wenn Sie diesen Artikel lesen. Im Falle eines Fehlers ersetzen Sie ihn durch einen frischen Proxy.

Verwendung von Umgebungsvariablen

Eine weitere Möglichkeit, einen Proxy in curl zu verwenden, besteht darin, die folgenden zwei Umgebungsvariablen festzulegen:

  • http_proxy: Die URL des Proxy-Servers, der verwendet werden soll, um auf URLs mit dem HTTP-Protokoll zuzugreifen.
  • https_proxy: Die URL des Proxy-Servers, der verwendet werden soll, um auf URLs mit dem HTTP-Protokoll zuzugreifen.

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

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

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

Die beiden Befehle werden also zu:

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 Proxys laufen, ohne die Option -x verwenden zu müssen:

Auch dies wird zurückgeben:

curl https://httpbin.org/ip

{

  "origin": "71.19.249.97"

}

Um die curl-Proxys abzuschalten, heben Sie die Umgebungsvariablen auf mit:

unset http_proxy

unset https_proxy

Oder unter Windows:

$env:http_proxy = ""

$env:https_proxy = ""

curl kehrt zu seinem Standardverhalten zurück, und https://httpbin.org/ip gibt nun Ihre IP zurück.

Verwendung einer Konfigurationsdatei

Sie können global einen Proxy für curl festlegen, 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

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

Fügen Sie die folgende Zeile zur .curlrc-Datei 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 es neu. 

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 ENTER, um auf das Verzeichnis zuzugreifen. 

Dies sollte Sie zu C:Users<YOUR_USER>AppDataRoaming führen.

Jetzt wird curl automatisch den in der Konfigurationsdatei angegebenen Proxy verwenden:

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

Sie erhalten:

{

  "origin": "71.19.249.97"

}

Fantastisch! Sie haben gerade gelernt, wie man curl mit Proxy-Servern auf drei verschiedene Arten verwendet!

Wie man SOCKS-Proxys in curl einrichtet

Wenn Sie einen SOCKs-Proxy verwenden möchten, bleibt die Befehlsstruktur gleich:

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

Der Hauptunterschied besteht darin, dass <PROTOCOL> socks4, socks4a, socks5 oder socks5h sein wird, anstelle von http und https.

Ein vollständiges Beispiel eines curl SOCKS-Proxys in Aktion ist:

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

Wie Sie erwarten können, lautet das Ergebnis:

{

  "origin": "94.14.109.54"

}

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

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

Dies verbindet sich mit HTTPBin über den 93.16.238.41:8721 socks4-Proxy, wobei admin334 als Benutzername und kv4NsDgc3 als Passwort zur Authentifizierung verwendet werden.

Tipps und Tricks, die Sie kennen sollten

In diesem Abschnitt sehen Sie einige interessante Tricks und wertvolle Tipps für den Umgang mit einem curl-Proxy wie ein Profi.

Proxys schnell EIN- und AUSSCHALTEN

Die Idee hier besteht darin, Aliase zu definieren, um Proxys programmatisch über Umgebungsvariablen mit benutzerdefinierten Befehlen zu setzen und aufzuheben. 

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

Wechseln 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"

Somit wäre es in unserem Beispiel:

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 Rechner 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 .bashrc-Datei festgelegten Operationen aus.

Unter Windows können Sie etwas Ähnliches mit PowerShell-Aliassen 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, für alle URLs keine Proxys zu verwenden.

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

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

Der resultierende Ursprung enthält Ihre IP, nicht die des Proxy-Servers.

SSL-Zertifikatsfehler vermeiden

Bei Verwendung von Proxys in curl können Ihre Anfragen aufgrund von SSL-Zertifikatsfehlern 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 kontaktieren und SSL-Probleme umgehen mit:

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 einfach zu verstehen, was passiert ist. Um den Fehler zu diagnostizieren und alle von curl durchgeführten Operationen zu sehen, setzen Sie die Option -v:

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

Dies gibt die Details über die hergestellten Verbindungen und die vom Tool verwendeten Header aus:

$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 sind 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, werfen Sie einen Blick auf die verschiedenen verfügbaren Proxy-Typen:

  • Datacenter-Proxys: Sie sind schnell, können aber aufgrund ihrer identifizierbaren IP-Bereiche von Websites leicht erkannt und blockiert werden.
  • Residential-Proxys: Sie garantieren ein hohes Maß an Anonymität, da sie IP-Adressen von echten Geräten an bestimmten Standorten bieten. Residential-Proxys eignen sich perfekt für den Zugriff auf Websites, die auf Geo-Beschränkungen oder Anti-Bot-Maßnahmen setzen, und zur Durchführung von Web-Scraping mit curl.
  • ISP-Proxys: Sie sind schnell, sicher und äußerst zuverlässig, da sie IPs von bei ISPs registrierten Geräten bereitstellen. ISP-Proxys stellen eine perfekte Lösung für SEO-Monitoring, Web-Browsing und Marktforschung dar.

Dies war nur eine kurze Zusammenfassung, aber Sie finden mehr Informationen in unserem Leitfaden zu Proxy-IP-Typen.

Fazit

In diesem curl-Proxy-Leitfaden haben Sie gelernt, was cURL ist, was es zu bieten hat und wie man einen HTTP/HTTPS/SOCKS-Proxy einrichtet. Wie sich herausstellt, können Sie sich bei curl nicht auf Proxy-Dienste von kostenlosen Anbietern verlassen. Die wichtigste technische Entscheidung ist also, welchen Proxy-Anbieter man wählt. Sparen Sie Zeit und Energie und entscheiden Sie sich für den Besten auf dem Markt, Bright Data.

Bright Data kontrolliert die besten Proxy-Server der Welt und bedient Fortune-500-Unternehmen und 50,000+ Kunden. Sein weltweites Proxy-Netzwerk umfasst:

Insgesamt ist das eines der größten und zuverlässigsten scraping-orientierten Proxy-Netzwerke auf dem Markt. Treten Sie noch heute dem größten Proxy-Netzwerk bei!