cURL mit Proxy verwenden: Befehle und Beispiele

Veröffentlicht:

3 Min. Lesezeit

PXNET
Autor: PXNET
cURL mit Proxy verwenden

Was ist cURL?

cURL (gesprochen „körl“) ist ein Kommandozeilenwerkzeug für den Datentransfer zu und von Servern. Mit wenigen Zeilen im Terminal verschieben Sie große Datenmengen von einem Server zum nächsten.

Wie jeder Befehl folgt cURL einer festen Syntax:

curl [Optionen] [URL]

Der Teil „Optionen“ bestimmt, was der Befehl tun soll. Von diesen Parametern — auch Flags genannt — gibt es rund 380. Ein bekannter ist -o: Er schreibt den Inhalt einer Seite in eine Datei.

Als Ziel oder Quelle braucht cURL eine URL (Uniform Resource Locator), also eine besondere Form des Uniform Resource Identifier. Netzwerkprotokolle ohne URL unterstützt cURL nicht.

Unter der Haube arbeitet cURL mit der Bibliothek libcurl, die die unterstützten Protokolle mitbringt. libcurl ist portabel und verhält sich unter Linux, Windows und macOS gleich; auf diesen Systemen ist sie in der Regel vorinstalliert. Fehlt sie, laden Sie das Paket von der cURL-Website.

Welche Protokolle cURL unterstützt

cURL unterstützt Protokolle, die Daten in beide Richtungen übertragen und über eine URL adressierbar sind. HTTP ist die Voreinstellung; daneben arbeitet cURL unter anderem mit:

  • DICT
  • FILE
  • FTP und FTPS
  • GOPHER und GOPHERS
  • IMAP und IMAPS
  • LDAP und LDAPS
  • MQTT
  • POP3 und POP3S
  • RTMP und RTSP
  • SCP und SFTP
  • SMB und SMBS
  • SMTP und SMTPS
  • TELNET
  • TFTP

Warum cURL

cURL ist verbreitet, weil es vielseitig, schlicht und zuverlässig ist. Es lädt ganze Seiten herunter und überträgt Dateien in jedem unterstützten Format, und es beherrscht Benutzer-Authentifizierung, HTTP POST, Metalink, FTP-Uploads und Proxy-Unterstützung für SSL-Verbindungen. Dazu kommt:

  • ausführliche Ausgabe darüber, was gesendet und empfangen wurde — für die Fehlersuche unbezahlbar
  • Unterstützung vieler Netzwerkprotokolle
  • die Möglichkeit, mit geschweiften Klammern mehrere URL-Varianten in einem Befehl anzugeben
  • gleiches Verhalten auf allen gängigen Betriebssystemen

cURL über einen HTTP- oder HTTPS-Proxy

Zum Testen eignet sich ein Dienst, der die Quell-IP der Anfrage zurückgibt: Läuft der Proxy, sehen Sie dort dessen Adresse statt Ihrer eigenen.

Die Befehle

Öffnen Sie ein Terminal und lassen Sie sich die Optionen anzeigen:

bash
curl --help

In der langen Liste steht unter anderem:

-x, --proxy [protocol://]host[:port]

Das x ist klein geschrieben. Die Proxy-Angaben übergeben Sie mit -x oder mit --proxy; beides bedeutet dasselbe:

bash
curl -x "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"

oder

bash
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"

Bei SSL-Zertifikatsfehlern hängen Sie -k an — kleingeschrieben. Damit lässt cURL unsichere Serververbindungen zu:

bash
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip" -k

Proxy-URL und Ziel-URL stehen in doppelten Anführungszeichen. Das ist kein Zufall, sondern die empfohlene Schreibweise, damit Sonderzeichen in der URL die Shell nicht durcheinanderbringen.

Das voreingestellte Proxy-Protokoll ist HTTP. Diese beiden Befehle tun deshalb genau dasselbe:

bash
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"
curl --proxy "user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"

cURL über einen SOCKS-Proxy

bash
curl -x "socks5://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"

Je nach SOCKS-Version schreiben Sie socks4://, socks4a://, socks5:// oder socks5h://. Bei socks5h:// löst der Proxy den Hostnamen auf, nicht Ihr Rechner — für Scraping meist die bessere Wahl, weil sonst die DNS-Abfrage von Ihrer eigenen Leitung ausgeht.

Alternativ setzen Sie den Proxy mit --socks5 statt mit -x; Benutzername und Passwort gehen dann über --proxy-user.

cURL ist für Automatisierung ein sehr starkes Werkzeug und in Sachen Proxy-Unterstützung eines der vielseitigsten Kommandozeilenwerkzeuge. Weil libcurl zudem gut mit PHP zusammenarbeitet, greifen viele Webanwendungen für Scraping-Projekte darauf zurück — womit cURL zur Grundausstattung jedes Scrapers gehört. Welche Adressen Sie dabei einsetzen, entscheidet über die Erfolgsquote: Residential-Proxy für empfindliche Ziele, Datacenter-Proxy für schnelle Massenabrufe.

ChatGPT fragenClaude fragen