Kurze Antwort
Wie nutze ich einen Proxy mit curl?
Nutzen Sie curl -x http://USERNAME:[email protected]:7777 https://api.ipify.org als HTTP-Proxy oder --socks5-hostname gw.crawlrelay.com:7778 mit -U USERNAME:PASSWORD für SOCKS5. CrawlRelay Residential-Proxys nehmen das Land und eine Sticky Session im Nutzernamen, zum Beispiel USERNAME-country-de-session-t1-ttl-10. Ab 0,50 $/GB. Bezahlung mit Krypto, ohne KYC.
curl Flags, die Sie brauchen
-x / --proxy | Proxy-URL: http://host:port, Anmeldedaten optional darin enthalten |
|---|---|
-U / --proxy-user | Proxy-Anmeldedaten als USERNAME:PASSWORD, außerhalb der URL gespeichert |
--socks5-hostname | SOCKS5-Proxy mit DNS-Auflösung am Ausgang |
-v | Zeigt den CONNECT-Austausch und die Statuszeile des Proxys |
-w | Gibt Zeitmessung, Größe und %{http_connect} sowie den CONNECT-Status des Proxys aus |
--max-time, --connect-timeout | Gesamt- und Verbindungszeitlimits in Sekunden |
Was sind die grundlegenden Proxy-Befehle?
Jeder davon zeigt die Exit-IP, die die Webseite sieht.
# Rotating exit, any country
curl -x http://gw.crawlrelay.com:7777 -U USERNAME:PASSWORD https://api.ipify.org
# Country and city (city availability varies)
curl -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us-city-chicago:PASSWORD https://api.ipify.org
# Sticky: run it twice, the IP stays the same for up to 10 minutes (it can change earlier)
curl -x http://gw.crawlrelay.com:7777 -U USERNAME-country-de-session-t1-ttl-10:PASSWORD https://api.ipify.org
# SOCKS5, DNS resolved at the exit
curl --socks5-hostname gw.crawlrelay.com:7778 -U USERNAME-country-gb:PASSWORD https://api.ipify.orgWie debugge ich eine Proxy-Verbindung mit curl?
Führe mit -v aus und lese die Zeilen um CONNECT. Ein funktionierender Tunnel zeigt HTTP/1.1 200 Connection established, gefolgt vom TLS-Handshake mit der Webseite. Jeder andere Status in dieser Zeile kommt vom Proxy: 407 bedeutet Credentials, 502 oder 504 bedeutet das Exit oder Ziel. Das unten stehende -w-Format gibt die gleichen Informationen in einer Zeile aus, praktisch für Schleifen und CI-Checks.
# Full exchange, including the proxy's answer to CONNECT
curl -v -x http://gw.crawlrelay.com:7777 -U USERNAME:PASSWORD https://example.com/ -o /dev/null
# One line: proxy CONNECT status, HTTP status, compressed bytes and timings
curl -s --compressed -o /dev/null -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us:PASSWORD \
-w 'connect=%{http_connect} http=%{http_code} bytes=%{size_download} tcp=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n' \
https://example.com/Wie prüfe ich, dass Rotation und Sitzungen funktionieren?
Fordere die IP mehrmals an. Ohne Session-ID ist jeder Durchlauf eine neue Verbindung und zeigt meist eine andere IP. Mit Session-ID bleibt die IP bis zum Ablauf des TTL gleich, kann aber auch früher wechseln.
echo "rotating:"
for i in 1 2 3 4 5; do
curl -s -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us:PASSWORD https://api.ipify.org; echo
done
echo "sticky:"
for i in 1 2 3 4 5; do
curl -s -x http://gw.crawlrelay.com:7777 -U USERNAME-country-us-session-loop1-ttl-5:PASSWORD https://api.ipify.org; echo
doneWie nutze ich curl mit einem Proxy unter Windows?
Rufe curl.exe auf, nicht curl. In Windows PowerShell 5.1 ist curl ein Alias für Invoke-WebRequest, das -x oder -U nicht versteht. Windows 10 und 11 liefern das echte curl als curl.exe. In PowerShell bitte Argumente mit Sonderzeichen in Anführungszeichen setzen und ein Literal $ in einem Passwort innerhalb von einfachen Anführungszeichen schreiben.
curl.exe -x http://gw.crawlrelay.com:7777 -U 'USERNAME-country-fr:PASSWORD' https://api.ipify.orgWie stelle ich den Proxy einmalig für alle Befehle ein?
curl liest die Umgebungsvariablen https_proxy und http_proxy, viele andere Tools tun das ebenfalls. Setze sie für eine Shell-Sitzung und nutze NO_PROXY für Hosts, die nicht über den Proxy gehen sollen, z. B. deine eigene API. Vermeide, das Passwort in einer Variable zu speichern, die bei einem geteilten System an alle Kindprozesse exportiert wird.
export https_proxy="http://USERNAME-country-us:[email protected]:7777"
export http_proxy="$https_proxy"
export NO_PROXY="localhost,127.0.0.1,.internal.example"
curl https://api.ipify.org # now uses the proxy
unset https_proxy http_proxy # back to directcurl und Proxys: Fragen
Was ist der Unterschied zwischen --socks5 und --socks5-hostname?
Mit --socks5 löst curl den Hostnamen auf deinem Rechner auf und schickt die IP an den Proxy. Mit --socks5-hostname sendet es den Hostnamen, der Proxy löst ihn auf. Nutze --socks5-hostname beim Scrapen, damit DNS-Antworten zum Exit-Land passen und dein lokaler Resolver die Domains nicht sieht.
Warum sagt curl ‘CONNECT tunnel failed, response 407’?
Der Proxy hat die Credentials abgelehnt oder keine erhalten. Prüfe Benutzername und Passwort, URL-kodieren Sie Sonderzeichen in der -x-URL oder übergebe sie mit -U. Die 407-Seite listet weitere Ursachen.
Wie sehe ich, wie viele Bytes eine Seite durch den Proxy kostet?
Füge --compressed -o /dev/null -w '%{size_download}\n' hinzu. --compressed lässt curl gzip oder brotli wie dein Scraper anfragen, und %{size_download} zählt die komprimierten Bytes im Netzwerk. Ohne das sendet der Server die Seite unkomprimiert und die Zahl kann mehrfach höher liegen. Teste das an echten Seiten zur Abschätzung deines Datenvolumens pro 1.000 Seiten.
Kann curl HTTP/2 oder HTTP/3 durch den Proxy verwenden?
HTTP/2 funktioniert im CONNECT-Tunnel, wenn die Webseite es unterstützt, da der Tunnel TLS Ende-zu-Ende trägt. HTTP/3 läuft über UDP, das ein CONNECT-Tunnel durch HTTP-Proxys nicht transportiert. Nutze also HTTP/2 oder HTTP/1.1 durch das Gateway.
Teste deine Ziele von der Kommandozeile
1,50 $ für 1 GB, genug für Tausende curl-Tests.