SOCKS5-Konfigurator-Leitfaden: Browser, SSH, curl, git und Python
Eine praktische Schritt-für-Schritt-Anleitung zur SOCKS5-Konfiguration für Firefox, macOS, Linux, SSH Dynamic Forwarding, curl, git und Python — einschließlich der Unterscheidung zwischen socks5 und socks5h, die die meisten Geo- und DNS-Leaks verursacht.
Die Suche nach einem SOCKS5-Konfigurator bedeutet normalerweise, dass Sie bereits einen Host, einen Port und möglicherweise einen Benutzernamen und ein Passwort haben – und Sie möchten, dass ein Browser, eine Shell oder ein Skript den Datenverkehr darüber leitet. Es gibt keinen einzigen universellen Konfigurator, aber jede Stelle, an der Sie SOCKS5 konfigurieren, benötigt dieselben wenigen Werte, und die Eigenheiten sind vorhersehbar. Dieser Leitfaden behandelt die Setups, die tatsächlich verwendet werden.
Was SOCKS5 ist, in etwa 60 Sekunden
SOCKS5 (RFC 1928) ist ein Proxy-Protokoll auf der Transportschicht. Ihr Client öffnet eine Verbindung zum Proxy, bittet ihn, ein Ziel zu erreichen, und leitet dann Bytes in beide Richtungen weiter. Aus diesem Design ergeben sich zwei Konsequenzen:
- Der Proxy analysiert oder verändert keine Anwendungsprotokolle, daher transportiert er HTTPS-, SSH- und beliebigen TCP-Verkehr ohne spezielle Konfiguration.
- SOCKS5 verschlüsselt nichts. Die Vertraulichkeit kommt vom Zielprotokoll (HTTPS, SSH) oder davon, dass der Tunnel über einen verschlüsselten Transport wie SSH läuft.
Die Authentifizierung mit Benutzername und Passwort für SOCKS5 ist eine separate Spezifikation, RFC 1929. Die Client-Unterstützung dafür ist unterschiedlich, und diese Unterschiede verursachen einen großen Teil der Konfigurationsprobleme.
Die Werte, die Sie vor dem Start benötigen
- Host — der Proxy-Hostname oder die IP-Adresse.
- Port — der vom Anbieter oder Tunnel bereitgestellte Listening-Port.
- Authentifizierung — ein Benutzername und ein Passwort, IP-Allowlisting oder keine.
- Schema — ob Ihr Tool
socks5://odersocks5h://erwartet.
socks5:// vs socks5h:// und warum DNS Ihr Geo bestimmt
| Schema | Wer löst DNS auf | Verschlüsselt Verkehr | Verwenden, wenn |
|---|---|---|---|
socks5:// |
Ihr Rechner | nein | lokale DNS-Auflösung akzeptabel ist |
socks5h:// |
der Proxy | nein | Sie möchten, dass Lookups und Geo zum Proxy passen |
http://-Präfix |
Ihr Rechner | nein | Sie verwenden einen HTTP-Proxy, nicht SOCKS |
https://-Präfix |
Ihr Rechner | TLS zum Proxy | der Anbieter einen TLS-verpackten Proxy-Endpunkt anbietet |
Das h bedeutet, dass der Hostname vom Proxy aufgelöst wird. socks5:// zu verwenden, wenn Sie socks5h:// wollten, ist die häufigste Ursache für einen Proxy, der funktioniert, aber trotzdem die falsche Region anzeigt, und es kann auch die von Ihnen besuchten Hostnamen gegenüber Ihrem lokalen Resolver offenlegen. Nur einige Tools – curl, git über libcurl und bestimmte Python-Bibliotheken – beachten die socks5h-Konvention; GUI-Anwendungen bieten es stattdessen normalerweise als Kontrollkästchen an.
SOCKS5 in Firefox konfigurieren
Firefox ist der einfachste Mainstream-Browser, um ihn auf einen SOCKS5-Proxy zu richten, da er seine eigenen Proxy-Einstellungen beibehält, anstatt die des Betriebssystems zu übernehmen.
- Öffnen Sie die Einstellungen und suchen Sie nach Netzwerkeinstellungen, oder navigieren Sie zu Einstellungen, dann Allgemein, dann Netzwerkeinstellungen.
- Wählen Sie Manuelle Proxy-Konfiguration.
- Geben Sie Host und Port in das Feld SOCKS-Host ein und wählen Sie SOCKS v5.
- Aktivieren Sie Proxy-DNS bei Verwendung von SOCKS v5, wenn der Proxy Hostnamen auflösen soll.
- Lassen Sie die HTTP-Proxy-Felder leer, es sei denn, Sie haben auch einen HTTP-Proxy.
- Klicken Sie auf OK und laden Sie dann eine Seite, die Ihre IP-Adresse anzeigt, um die Änderung zu bestätigen.
Chrome, Edge und andere Chromium-Browser
Chromium-basierte Browser lesen die Proxy-Einstellungen des Betriebssystems. Für isolierte Tests starten Sie einen mit einem Flag und einem Wegwerf-Profil:
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--proxy-server="socks5://127.0.0.1:1080" \
--user-data-dir=/tmp/chrome-socks-test
# Linux
google-chrome --proxy-server="socks5://127.0.0.1:1080" --user-data-dir=/tmp/chrome-socks-test
Zwei Hinweise. Das separate --user-data-dir hält den Test von Ihrem normalen Profil isoliert, und das Flag ist kein zuverlässiger Ort für Anmeldedaten – wenn Ihr Proxy eine Authentifizierung erfordert, konfigurieren Sie sie in den Betriebssystemeinstellungen oder leiten Sie über einen lokalen Forwarder, anstatt einen Benutzernamen und ein Passwort in das Flag einzubetten.
macOS: SOCKS5 vom Terminal aus konfigurieren
Das Dienstprogramm networksetup schreibt genau dieselbe Einstellung, die der Bereich Netzwerk-Einstellungen anzeigt.
# Verfügbare Netzwerkdienste auflisten, wenn Sie sich beim Namen unsicher sind
networksetup -listallnetworkservices
# Ersetzen Sie "Wi-Fi" durch den Namen Ihres aktiven Dienstes
sudo networksetup -setsocksfirewallproxy "Wi-Fi" 127.0.0.1 1080
sudo networksetup -setsocksfirewallproxystate "Wi-Fi" on
# Wieder ausschalten
sudo networksetup -setsocksfirewallproxystate "Wi-Fi" off
Viele Kommandozeilen-Tools ignorieren die macOS-System-Proxy-Einstellungen vollständig und benötigen ihre eigene Konfiguration, gehen Sie also nicht davon aus, dass das Terminal abgedeckt ist, sobald dieser Befehl erfolgreich ist.
Linux und CLI-Tools: Umgebungsvariablen
export ALL_PROXY="socks5h://user:[email protected]:1080"
export all_proxy="$ALL_PROXY"
Eine große Anzahl von Kommandozeilen-Tools liest ALL_PROXY oder dessen Kleinbuchstaben-Variante. Überprüfen Sie, was derzeit gesetzt ist, mit env | grep -i proxy. Grafische Anwendungen unter Linux folgen im Allgemeinen den Proxy-Einstellungen der Desktop-Umgebung und nicht diesen Variablen, konfigurieren Sie also beide Wege oder verwenden Sie einen Wrapper wie proxychains für hartnäckige Binärdateien.
SSH: Verwandeln Sie einen Server, den Sie kontrollieren, in einen SOCKS5-Proxy
# -D aktiviert dynamische (SOCKS-)Weiterleitung, -N führt keinen Remote-Befehl aus, -C komprimiert
ssh -N -C -D 1080 [email protected]
# Fügen Sie -f hinzu, um es in den Hintergrund zu schicken
ssh -f -N -C -D 1080 [email protected]
Dies ist oft der schnellste Weg, um einen funktionierenden SOCKS5-Endpunkt zu erhalten. Auf dem Remote-Server muss nichts installiert werden, es sind keine erhöhten Rechte erforderlich, und der Sprung zwischen Ihrem Rechner und dem Server wird durch SSH verschlüsselt – was eine der Schwächen von SOCKS5 anspricht. Richten Sie Ihren Browser oder CLI auf 127.0.0.1:1080, sobald der Tunnel steht.
curl, git und Python
# DNS lokal auflösen
curl --socks5 127.0.0.1:1080 https://api.ipify.org
# DNS beim Proxy auflösen
curl --socks5-hostname 127.0.0.1:1080 https://api.ipify.org
# Mit Authentifizierung per Benutzername und Passwort
curl --socks5-hostname 127.0.0.1:1080 \
--proxy-user "USER:PASS" \
https://api.ipify.org
# git durch einen SOCKS5-Proxy leiten; git verwendet darunter libcurl
git config --global http.proxy socks5h://127.0.0.1:1080
git config --global https.proxy socks5h://127.0.0.1:1080
# Rückgängig machen, wenn Sie fertig sind
git config --global --unset http.proxy
git config --global --unset https.proxy
# Erfordert: pip install "requests[socks]"
import requests
proxies = {
"http": "socks5h://user:[email protected]:1080",
"https": "socks5h://user:[email protected]:1080",
}
response = requests.get("https://api.ipify.org", proxies=proxies, timeout=15)
print(response.status_code, response.text)
Die requests-Bibliothek benötigt die PySocks-Abhängigkeit, bevor sie SOCKS-Proxys versteht. Ohne sie erhalten Sie einen Fehler wegen fehlender Abhängigkeiten, der ausgelöst wird, bevor überhaupt eine Verbindung versucht wird, was leicht als Proxy-Fehler fehlinterpretiert werden kann.
Fehlerbehebung bei den Fehlern, die tatsächlich auftreten
| Symptom | Wahrscheinliche Ursache | Behebung |
|---|---|---|
| Verbindung abgelehnt | Auf diesem Port hört niemand | Bestätigen Sie den Port und dass der Proxy oder SSH-Tunnel läuft |
| SOCKS5-Authentifizierung fehlgeschlagen | Falsche Anmeldedaten, oder der Proxy erwartet eine zugelassene IP | Überprüfen Sie die Anmeldedaten erneut; lassen Sie sie weg, wenn Sie zugelassen sind |
| Die Website zeigt immer noch die falsche Region | DNS wurde lokal aufgelöst, weil Sie socks5:// verwendet haben |
Wechseln Sie zu socks5h:// oder aktivieren Sie Remote-DNS |
| 407 Proxy-Authentifizierung erforderlich | Sie zeigen auf einen HTTP-Proxy-Port, nicht auf SOCKS | Überprüfen Sie die Portliste des Anbieters |
| Funktioniert in curl, schlägt im Browser fehl | Browser verwendet Systemeinstellungen, oder eine Erweiterung überschreibt sie | Deaktivieren Sie Proxy-Erweiterungen und überprüfen Sie die Systemeinstellungen |
| UDP-Anwendungen schlagen fehl | SOCKS5-UDP-Assoziation ist clientseitig selten implementiert | Verwenden Sie stattdessen ein VPN für UDP-Datenverkehr |
Überprüfen, bevor Sie darauf vertrauen
# Vergleichen Sie die gemeldete IP mit und ohne Proxy
curl -sS https://api.ipify.org; echo
curl -sS --socks5-hostname 127.0.0.1:1080 https://api.ipify.org; echo
Wenn beide Adressen identisch sind, läuft der Datenverkehr nicht über den Proxy. Wenn Geo-Genauigkeit wichtig ist, führen Sie auch einen DNS-Leak-Test im Browser durch, um zu bestätigen, dass Lookups über den Proxy und nicht über Ihren lokalen Resolver hinausgehen.
Fazit
Ein SOCKS5-Konfigurator ist wirklich nur vier Werte, die an der richtigen Stelle angewendet werden: Host, Port, Anmeldedaten und eine Entscheidung darüber, wo DNS aufgelöst wird. Konfigurieren Sie den Browser oder das CLI-Tool, das Sie tatsächlich verwenden, bestätigen Sie die Exit-IP mit dem obigen curl-Vergleich, und verwenden Sie standardmäßig socks5h://, wann immer Geo-Genauigkeit oder DNS-Datenschutz wichtig ist.