cURL Proxy-Anleitung: HTTP- und SOCKS5-Proxies in der Befehlszeile prüfen
Diese Anleitung zeigt für cURL die Verbindung von Socks5Proxy-HTTP- und SOCKS5-Proxys, Authentifizierung, Antwortzeitmessung und ein Shell-Skript zur Listenprüfung.
Warum ist es gut, Proxies mit cURL zu testen?
cURL ist auf fast allen Servern und Entwicklungsumgebungen installiert und ermöglicht die schnellste Überprüfung, ob ein Proxy korrekt funktioniert. Bei Problemen im Code oder in den Browser-Einstellungen kann ein Test mit cURL helfen, Proxy-Probleme von Code-Problemen zu unterscheiden.
Beispiel mit IP 198.51.100.23, HTTP-Port 8000, SOCKS5-Port 1080, Benutzername spx_user, Passwort spx_pass.
Wie verbinde ich mich mit einem HTTP-Proxy?
Geben Sie die Proxy-Adresse in die Option -x (oder --proxy) ein. Benutzername und Passwort können entweder in die Adresse eingefügt oder mit der Option -U separat angegeben werden. Wenn Sie eine HTTPS-Adresse anfordern, erstellt cURL einen Tunnel mit CONNECT und sendet die Anfrage verschlüsselt darin.
# user and password inside the proxy URL
curl -x http://spx_user:spx_pass@198.51.100.23:8000 https://api.ipify.org
# or with -U
curl -x http://198.51.100.23:8000 -U spx_user:spx_pass https://api.ipify.orgWie verbinde ich mich mit einem SOCKS5-Proxy?
--socks5-hostname führt die Domain-Namensauflösung über den Proxy durch. Die DNS-Anfragen Ihres Servers werden nicht nach außen sichtbar, und die Namensauflösung erfolgt basierend auf dem Land des Proxys. --socks5 führt die Namensauflösung auf Ihrem Server durch und sendet dann nur die IP an den Proxy. In den meisten Fällen wird --socks5-hostname empfohlen.
Das Adressformat socks5h:// funktioniert gleichwertig mit -x.
# DNS is resolved by the proxy
curl --socks5-hostname 198.51.100.23:1080 --proxy-user spx_user:spx_pass https://api.ipify.org
# same thing with a proxy URL
curl -x socks5h://spx_user:spx_pass@198.51.100.23:1080 https://api.ipify.orgWie prüfe ich Antwortzeit und Status zusammen?
Mit der Option -w können Sie die Verbindungszeit, die Zeit bis zum ersten Byte, die Gesamtzeit und den Antwortcode in einer Zeile ausgeben. Dies ist nützlich, um die Geschwindigkeit von Proxys in verschiedenen Ländern zu vergleichen oder festzustellen, ob die Zielseite oder der Proxy langsam ist.
Verwerfen Sie den Hauptteil mit -o /dev/null und schalten Sie den Fortschrittsanzeiger mit -s aus, um nur das Ergebnis sauber anzuzeigen.
curl -s -o /dev/null \
-x http://spx_user:spx_pass@198.51.100.23:8000 \
-w "code=%{http_code} connect=%{time_connect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
https://example.com/Wie prüfe ich die gesamte Liste auf einmal?
Wenn Sie die Liste über die API erhalten und jede Zeile mit cURL ausführen, können Sie den Status aller Proxys auf einmal überprüfen. Das folgende Skript empfängt eine Liste im ip:port:user:pass-Format und gibt die Antwort-IP und die benötigte Zeit für jede Zeile aus. Es gibt ein Zeitlimit, um bei Zeilen ohne Antwort nicht hängen zu bleiben.
#!/bin/sh
KEY="YOUR_API_KEY"
curl -s -H "Authorization: Bearer $KEY" \
"https://socks5proxy.io/api/v1/proxies/download?format=ip:port:user:pass&protocol=http" > proxies.txt
while IFS=: read -r ip port user pass; do
out=$(curl -s -m 15 -x "http://$user:$pass@$ip:$port" -w " %{time_total}s" https://api.ipify.org)
echo "$ip:$port $out"
done < proxies.txtKann die API selbst mit cURL aufgerufen werden?
Ja. Guthabenabfrage, aktive Pläne und Proxy-Listen benötigen nur den Authorization: Bearer-Header. JSON-Antworten lassen sich mit Tools wie jq filtern.
curl -H "Authorization: Bearer YOUR_API_KEY" https://socks5proxy.io/api/v1/account
curl -H "Authorization: Bearer YOUR_API_KEY" "https://socks5proxy.io/api/v1/proxies?country=us&protocol=socks5"Kann der Proxy auch über Umgebungsvariablen festgelegt werden?
Ja. cURL und viele CLI-Tools lesen die Umgebungsvariablen http_proxy, https_proxy und all_proxy. Wenn Sie diese in der Shell festlegen, verwenden Tools wie cURL, wget und pip innerhalb dieser Shell denselben Proxy. Für SOCKS5 setzen Sie all_proxy auf socks5h://Adresse.
Tragen Sie Adressen, die nicht über den Proxy laufen sollen, kommagetrennt in no_proxy ein. So vermeiden Sie, dass interne Server oder localhost versehentlich über den Proxy laufen.
export https_proxy="http://spx_user:spx_pass@198.51.100.23:8000"
export http_proxy="$https_proxy"
export no_proxy="localhost,127.0.0.1"
curl https://api.ipify.org
# SOCKS5 for every tool that reads all_proxy
export all_proxy="socks5h://spx_user:spx_pass@198.51.100.23:1080"Wie vergleiche ich die Ergebnisse von HTTP- und SOCKS5-Proxys?
Vergleichen Sie Antwortzeiten und -IPs bei Anfragen über beide Ports derselben IP - so sehen Sie, welche Methode in Ihrer Umgebung schneller ist. Meist ähnlich, bei großer Entfernung oder langsamer DNS können Unterschiede auftreten.
Die Antwort-IP sollte bei beiden Methoden gleich sein. Falls nicht, haben Sie möglicherweise Ports verschiedener Zeilen gemischt - bitte prüfen Sie die Liste erneut.
for p in "http://spx_user:spx_pass@198.51.100.23:8000" "socks5h://spx_user:spx_pass@198.51.100.23:1080"; do
curl -s -m 15 -x "$p" -w " %{time_total}s\n" https://api.ipify.org
doneWie überprüft der Server die IPs für die IP-Autorisierung?
Der Wert, der für die IP-Autorisierung registriert wird, ist die öffentliche IPv4-Adresse, die Ihr Server beim Zugriff auf das Internet verwendet. Sie können diesen Wert sofort überprüfen, indem Sie curl -4 https://api.ipify.org ohne Proxy ausführen. Wenn Sie diesen Wert im IP-Autorisierungsfeld des Dashboards registrieren, kann sich der Server ohne Benutzername und Passwort verbinden.
curl -4 -s https://api.ipify.orgKann ein Proxy den Inhalt von HTTPS-Seiten sehen?
Wenn Sie eine HTTPS-Adresse über einen HTTP-Proxy anfordern, erstellt cURL zunächst einen CONNECT-Tunnel zum Zielserver und stellt dann direkt eine verschlüsselte Verbindung her. Der Proxy weiß nur, zu welchem Server die Verbindung hergestellt wird, und kann den verschlüsselten Inhalt nicht sehen. Mit der Option -v sehen Sie den CONNECT-Schritt und den verschlüsselten Verbindungsprozess.
Gleiches gilt für SOCKS5. Der Proxy leitet die Verbindung weiter, die Verschlüsselung erfolgt zwischen cURL und dem Zielserver. Daher ist es sicherer, die Zertifikatsprüfungsoption (-k) nicht zu verwenden, da das Zertifikat des Zielservers auch über den Proxy geprüft wird.
Wenn Sie --socks5-hostname verwenden, wird auch der Domainname, den Sie verbinden möchten, vom Proxy aufgelöst, sodass er nicht in den DNS-Anfrageprotokollen Ihres Servers erscheint.
curl -v -o /dev/null -x http://spx_user:spx_pass@198.51.100.23:8000 https://example.com/ 2>&1 | grep -E "CONNECT|HTTP/|SSL connection"Wie lese ich cURL-Fehlermeldungen?
Received HTTP code 407 from proxy after CONNECT bedeutet Authentifizierungsfehler. Überprüfen Sie Benutzername und Passwort oder die im IP-Autorisierung registrierten Server-IPs. Wenn das Passwort @ oder : enthält, geben Sie es nicht in die Adresse ein, sondern verwenden Sie -U oder --proxy-user.
Failed to connect oder Connection timed out tritt auf, wenn der Port nicht passt oder Ihre Server-Firewall ausgehende Verbindungen blockiert. Verwenden Sie für HTTP-Adressen HTTP-Ports und für SOCKS5 SOCKS5-Ports, und stellen Sie sicher, dass die ausgehenden Ports geöffnet sind. Die Option -v zeigt den Verbindungsprozess Schritt für Schritt an, was die Fehlersuche erleichtert.