Zum Inhalt springen
GProxy
Registrierung
Гайды 5 Min. Lesezeit 32 Aufrufe

Verwenden von Proxy mit cURL

Dieser Artikel beschreibt, wie man Proxys effektiv mit cURL verwendet. Finden Sie Befehlsbeispiele für sichere, anonyme und effiziente Webanfragen.

Verwenden von Proxy mit cURL

Die Verwendung eines Proxys mit cURL erfordert die Angabe der Adresse und des Ports des Proxyservers mittels der Befehlszeilenoption -x oder --proxy, wodurch cURL-Anfragen über einen Vermittlungsserver geleitet werden können.

Dieser Artikel beschreibt die verschiedenen Methoden und Befehlszeilenoptionen, die in cURL für die Interaktion mit Proxydiensten zur Verfügung stehen, einschließlich grundlegender HTTP/HTTPS-Proxys, authentifizierter Proxys, SOCKS-Proxys und der Konfiguration über Umgebungsvariablen.

Grundlegende Proxy-Konfiguration

Die gängigste Methode, cURL zur Verwendung eines Proxys anzuweisen, ist die Option -x oder --proxy, gefolgt von der Adresse und dem Port des Proxyservers.

HTTP/HTTPS-Proxy

Um eine HTTP- oder HTTPS-Anfrage über einen HTTP/HTTPS-Proxy zu leiten, geben Sie die Proxy-Adresse und den Port an.

Syntax:

curl -x [protocol://][user:password@]proxyhost[:port] [URL]

Beispiele:

  1. Verwendung eines HTTP-Proxys für ein HTTP-Ziel:
    bash curl -x http://your.proxy.server:8080 http://example.com
    Dieser Befehl weist cURL an, die Anfrage für http://example.com über your.proxy.server auf Port 8080 unter Verwendung des HTTP-Proxy-Protokolls zu senden.

  2. Verwendung eines HTTP-Proxys für ein HTTPS-Ziel:
    bash curl -x http://your.proxy.server:8080 https://secure.example.com
    Beim Proxying eines HTTPS-Ziels über einen HTTP-Proxy verwendet cURL typischerweise die CONNECT-Methode, um einen Tunnel durch den Proxy zum Zielserver aufzubauen. Der SSL/TLS-Handshake erfolgt dann direkt zwischen cURL und secure.example.com, ohne dass der HTTP-Proxy an der Verschlüsselung beteiligt ist.

  3. Verwendung eines HTTPS-Proxys für ein HTTP-Ziel:
    bash curl -x https://your.secure.proxy.server:8443 http://example.com
    Dies leitet die Anfrage über einen Proxy, der selbst HTTPS verwendet. Die Verbindung zwischen cURL und your.secure.proxy.server ist verschlüsselt.

Authentifizierte Proxys

Viele Proxydienste erfordern eine Authentifizierung. cURL unterstützt verschiedene Authentifizierungsmethoden für Proxys, hauptsächlich Basic, NTLM und Digest.

Basic Authentication

Für Proxys, die einen Benutzernamen und ein Passwort erfordern, verwenden Sie die Option --proxy-user oder betten Sie die Anmeldeinformationen direkt in die Proxy-URL ein.

Syntax:

curl -x [protocol://]proxyhost[:port] --proxy-user "username:password" [URL]
curl -x [protocol://]username:password@proxyhost[:port] [URL]

Beispiele:

  1. Verwendung von --proxy-user:
    bash curl -x http://your.proxy.server:8080 --proxy-user "proxyuser:proxypass" http://example.com

  2. Einbetten von Anmeldeinformationen in die URL:
    bash curl -x http://proxyuser:proxypass@your.proxy.server:8080 http://example.com
    Sonderzeichen im Benutzernamen oder Passwort müssen URL-kodiert werden, falls sie vorhanden sind. Zum Beispiel sollte ein Passwort p@ssword als p%40ssword angegeben werden.

Andere Authentifizierungsmethoden

Während Basic Authentication üblich ist, unterstützt cURL auch andere Methoden für spezifische Umgebungen.

  • --proxy-ntlm: Aktiviert die NTLM-Authentifizierung für den Proxy.
  • --proxy-digest: Aktiviert die Digest-Authentifizierung für den Proxy.

Beispiel (NTLM):

curl -x http://your.proxy.server:8080 --proxy-ntlm --proxy-user "DOMAIN\proxyuser:proxypass" http://example.com

SOCKS-Proxys

SOCKS (Socket Secure)-Proxys arbeiten auf einer niedrigeren Ebene als HTTP-Proxys und verarbeiten verschiedene Netzwerkprotokolle. cURL unterstützt SOCKS4, SOCKS4a und SOCKS5.

SOCKS5-Proxy

SOCKS5 ist das vielseitigste SOCKS-Protokoll, das IPv4, IPv6, UDP und Authentifizierung unterstützt.

Syntax:

curl --socks5 [user:password@]proxyhost[:port] [URL]

Beispiele:

  1. Grundlegender SOCKS5-Proxy:
    bash curl --socks5 your.socks5.server:1080 http://example.com
    Standardmäßig löst cURL den Hostnamen example.com lokal auf, bevor die IP-Adresse an den SOCKS5-Proxy gesendet wird.

  2. SOCKS5-Proxy mit Remote-DNS-Auflösung:
    bash curl --socks5-hostname your.socks5.server:1080 http://example.com
    Die Option --socks5-hostname weist cURL an, den Hostnamen example.com an den SOCKS5-Proxy zu senden, sodass der Proxy die DNS-Auflösung durchführen kann. Dies ist entscheidend für Anonymität und das Umgehen von Geo-Einschränkungen, bei denen eine lokale DNS-Auflösung Ihren Standort verraten könnte.

  3. SOCKS5-Proxy mit Authentifizierung:
    bash curl --socks5-hostname socksuser:sockspass@your.socks5.server:1080 http://example.com

SOCKS4/SOCKS4a-Proxy

SOCKS4 ist ein älteres Protokoll, hauptsächlich für IPv4, und unterstützt keine Authentifizierung. SOCKS4a erweitert SOCKS4, um dem Proxy die Auflösung von Hostnamen zu ermöglichen.

Syntax:

curl --socks4 proxyhost[:port] [URL]
curl --socks4a proxyhost[:port] [URL]

Beispiel (SOCKS4a):

curl --socks4a your.socks4.server:1080 http://example.com

Ähnlich wie --socks5-hostname stellt --socks4a sicher, dass der Proxy den Ziel-Hostnamen auflöst.

Proxying von HTTPS-Zielen mit SSL/TLS

Wenn cURL eine HTTPS-Anfrage über einen HTTP-Proxy leitet, initiiert es eine CONNECT-Anfrage an den Proxy. Der Proxy stellt dann einen TCP-Tunnel zum Ziel-HTTPS-Server her. cURL führt den SSL/TLS-Handshake direkt mit dem Zielserver durch diesen Tunnel durch.

SSL-Zertifikatsprüfung

Standardmäßig überprüft cURL das SSL-Zertifikat des Zielservers. Wenn das Zertifikat ungültig, abgelaufen oder selbstsigniert ist, bricht cURL die Verbindung ab.

  • --insecure oder -k: Deaktiviert die SSL-Zertifikatsprüfung. Mit Vorsicht verwenden, hauptsächlich für Tests oder bekannte vertrauenswürdige Umgebungen mit selbstsignierten Zertifikaten.
    bash curl -x http://your.proxy.server:8080 https://self-signed.example.com -k

  • --cacert [file]: Gibt ein benutzerdefiniertes CA-Zertifikatsbündel zur Überprüfung an.
    bash curl -x http://your.proxy.server:8080 https://secure.example.com --cacert /path/to/custom_ca.pem

Umgebungsvariablen für die Proxy-Konfiguration

cURL kann Proxy-Einstellungen auch aus Umgebungsvariablen übernehmen. Dies ist nützlich für systemweite oder sitzungsweite Proxy-Konfigurationen, ohne die Option -x für jeden Befehl angeben zu müssen.

Gängige Umgebungsvariablen

  • http_proxy: Proxy für HTTP-Anfragen.
  • https_proxy: Proxy für HTTPS-Anfragen.
  • all_proxy: Ein Fallback-Proxy für alle Protokolle, wenn http_proxy oder https_proxy nicht gesetzt sind.
  • no_proxy: Eine durch Kommas getrennte Liste von Hostnamen, Domänen oder IP-Adressen, die den Proxy umgehen sollen.

Syntax:

export http_proxy="http://your.proxy.server:8080"
export https_proxy="http://your.proxy.server:8080" # Hinweis: Oft wird ein HTTP-Proxy für HTTPS-Ziele verwendet
export no_proxy="localhost,127.0.0.1,.localdomain"

Beispiele:

  1. HTTP-Proxy einstellen:
    bash export http_proxy="http://proxyuser:proxypass@your.proxy.server:8080" curl http://example.com

  2. HTTPS-Proxy einstellen (über HTTP-Proxy):
    bash export https_proxy="http://your.proxy.server:8080" curl https://secure.example.com

  3. Proxy für bestimmte Hosts umgehen:
    bash export http_proxy="http://your.proxy.server:8080" export no_proxy="internal.example.com" curl http://internal.example.com # Diese Anfrage umgeht den Proxy curl http://external.example.com # Diese Anfrage verwendet den Proxy

Präzedenz

Befehlszeilenoptionen haben Vorrang vor Umgebungsvariablen. Wenn -x angegeben wird, überschreibt es alle http_proxy, https_proxy oder all_proxy Umgebungsvariablen.

Fehlerbehebung bei Proxy-Verbindungen

Beim Auftreten von Problemen mit cURL und Proxys können verschiedene Optionen bei der Diagnose helfen.

  • --verbose oder -v: Liefert detaillierte Informationen über die Anfrage und Antwort, einschließlich Proxy-Verbindungsversuchen, Headern und SSL/TLS-Aushandlung. Dies ist oft der erste Schritt beim Debugging.
    bash curl -v -x http://your.proxy.server:8080 http://example.com

  • --trace [file]: Schreibt eine vollständige Ablaufverfolgung aller eingehenden und ausgehenden Daten, einschließlich Header und Body, in eine angegebene Datei.
    bash curl --trace debug.log -x http://your.proxy.server:8080 http://example.com

  • Proxy-Server-Logs: Überprüfen Sie die Logs Ihres Proxyservers auf Verbindungsversuche, Authentifizierungsfehler oder Fehlermeldungen im Zusammenhang mit Ihren cURL-Anfragen.

  • Netzwerkkonnektivität: Überprüfen Sie, ob der Computer, auf dem cURL ausgeführt wird, den Proxyserver auf dem angegebenen Port mit Tools wie ping, telnet oder netcat erreichen kann.
    bash telnet your.proxy.server 8080
    Eine erfolgreiche telnet-Verbindung zeigt eine grundlegende Netzwerk-Erreichbarkeit an.

Vergleich der wichtigsten Proxy-Optionen

cURL-Option Beschreibung Protokolle Authentifizierung DNS-Auflösung
-x, --proxy Generische Proxy-Spezifikation (HTTP/HTTPS-Proxy) HTTP, HTTPS Ja Lokal
--proxy-user Gibt Benutzername und Passwort für die Proxy-Authentifizierung an HTTP, HTTPS Ja N/A
--socks5 SOCKS5-Proxy, standardmäßig lokale DNS-Auflösung Alle Ja Lokal
--socks5-hostname SOCKS5-Proxy, Remote-DNS-Auflösung Alle Ja Remote (Proxy)
--socks4 SOCKS4-Proxy, lokale DNS-Auflösung Alle Nein Lokal
--socks4a SOCKS4a-Proxy, Remote-DNS-Auflösung Alle Nein Remote (Proxy)
http_proxy (env) Umgebungsvariable für HTTP-Proxy HTTP Ja Lokal
https_proxy (env) Umgebungsvariable für HTTPS-Proxy (oft ein HTTP-Proxy für Tunneling) HTTPS Ja Lokal
all_proxy (env) Umgebungsvariable für alle Protokolle, falls andere nicht gesetzt sind Alle Ja Lokal
no_proxy (env) Umgebungsvariable zur Angabe von Hosts, die den Proxy umgehen sollen N/A N/A N/A
Aktualisiert: 03.03.2026
Zurück zur Kategorie

Testen Sie unsere Proxys

20.000+ Proxys in über 100 Ländern weltweit

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.