Skip to content
Advanced / 9 min read

Einen lokalen SOCKS5-Konfigurator erstellen, um ChangeMyIP-Proxys zu verketten und zu rotieren (Windows, macOS, Linux)

Verwandle jede App in eine App mit Proxy: Betreibe einen lokalen SOCKS5-Konfigurator mit gost, verkette zwei ChangeMyIP-Endpunkte für Länder-zu-Länder-Routing und rotiere über Residential-Knoten.

Windows macOS Linux SOCKS5 Privatsphäre/Anonymität

Überblick

Ein SOCKS5-Konfigurator ist ein kleiner lokaler Dienst, der auf einem Port auf Ihrem Rechner lauscht und alles, was Ihre Apps darüber senden, an einen vorgeschalteten Proxy oder durch eine Proxy-Kette weiterleitet. Er ist die praktische Antwort, wenn eine Anwendung keine eigenen Proxy-Einstellungen hat oder wenn Sie möchten, dass mehrere voneinander unabhängige Apps eine einzige Proxy-Konfiguration gemeinsam nutzen, statt jede einzeln zu bearbeiten.

In diesem Tutorial erstellen Sie diesen Konfigurator mit gost, einem Open-Source-Proxy-Tool, und richten ihn auf ChangeMyIP-SOCKS5-Endpunkte aus. Anschließend fügen Sie einen zweiten Hop für Länder-zu-Länder-Verkettung hinzu, rotieren innerhalb eines Hops über mehrere Endpunkte, halten Anmeldedaten verborgen und betreiben den Listener dauerhaft unter Windows, macOS und Linux.

Jeder SOCKS5-Anbieter funktioniert mit der folgenden Konfiguration. ChangeMyIP dient als Beispiel, weil es SOCKS5 auf dedizierten und gemeinsamen Datacenter-Endpunkten sowie rotierenden Residential-Endpunkten anbietet und weil die pauschale monatliche Abrechnung bedeutet, dass ein dauerhaft laufender lokaler Listener keine Kosten pro Anfrage verursacht.

Voraussetzungen

  • Ein ChangeMyIP-Tarif, der SOCKS5-Zugriff enthält, sowie Host, Port, Benutzername und Passwort Ihres Endpunkts aus dem Dashboard.
  • Einen Endpunkt für jeden Hop, den Sie verketten möchten (Verkettung benötigt zwei unabhängige Endpunkte).
  • Berechtigung, einen Listener an 127.0.0.1:1080 oder einem beliebigen freien lokalen Port zu binden.
  • curl zur Überprüfung.
  • Grundlegende Vertrautheit mit dem Bearbeiten einer YAML-Datei.

Wie der Konfigurator zwischen Ihren Apps und ChangeMyIP sitzt

Datenverkehrsweg:

  1. Eine App öffnet eine SOCKS5-Verbindung zu 127.0.0.1:1080.
  2. Der Konfigurator nimmt sie an und leitet die Sitzung an den ersten ChangeMyIP-Endpunkt weiter (den Entry-Hop).
  3. Wenn ein zweiter Hop definiert ist, öffnet der Entry-Endpunkt eine Verbindung zum Exit-Endpunkt.
  4. Der Exit-Endpunkt stellt die ausgehende Anfrage und die Antwort läuft die Kette zurück.

Was Ihnen das bringt:

  • Einen einzigen lokalen Port, den jede App nutzen kann, auch Apps ohne integrierte Proxy-Einstellungen.
  • Remote-DNS-Auflösung, sodass Namensauflösungen nicht an Ihren lokalen Resolver leaken, wenn Sie das Schema socks5h verwenden.
  • Deterministischer Egress: ein Datacenter-Endpunkt für eine stabile IP oder ein rotierender Residential-Endpunkt, wenn Sie IP-Vielfalt benötigen.
  • Chain-Routing: Erzwingen Sie den Datenverkehr durch ein bestimmtes Standortpaar, indem Sie zwei Endpunkte verketten.

Schritte

  1. Klassifizieren Sie die ChangeMyIP-Endpunkte, die Sie verwenden werden. Kopieren Sie Host, Port, Benutzername und Passwort für jeden und notieren Sie, ob es sich um einen dedizierten Datacenter-Endpunkt, einen gemeinsamen Datacenter-Endpunkt oder einen rotierenden Residential-Endpunkt handelt.
Rolle im Konfigurator Endpunkttyp Wann verwenden
Entry-Hop Dediziertes Datacenter Schneller, stabiler erster Abschnitt; halten Sie ihn nahe an Ihrer eigenen Region, um Latenz zu begrenzen
Entry-Hop Residential rotierend Wenn der erste Abschnitt nicht auf ein einzelnes Datacenter-Subnetz zurückweisen soll
Exit-Hop Datacenter oder Residential im Zielland Wenn die endgültige IP in einem bestimmten Land oder einer Stadt erscheinen muss
Einzelner Hop (keine Kette) Beides Alltägliches Routing, bei dem eine Exit-IP ausreicht
  1. Installieren Sie gost. Laden Sie das Release-Archiv für Ihr Betriebssystem und Ihre Architektur von der offiziellen gost-Releases-Seite herunter und entpacken Sie es.

Windows (PowerShell):

Expand-Archive -Path .\gost_*_windows_amd64.zip -DestinationPath .\gost
.\gost\gost.exe -V

macOS und Linux (verwenden Sie das darwin- oder linux-Archiv und den passenden amd64- oder arm64-Build):

tar -xzf gost_*_linux_amd64.tar.gz
sudo install -m 0755 gost /usr/local/bin/gost
gost -V
  1. Erstellen Sie die Konfigurator-Konfiguration für einen einzelnen Hop. Speichern Sie sie als gost.yaml und schränken Sie sie ein, da sie Anmeldedaten enthält.
chmod 600 gost.yaml
services:
  - name: socks-in
    addr: "127.0.0.1:1080"
    handler:
      type: socks5
      chain: cmi-single
    listener:
      type: tcp

chains:
  - name: cmi-single
    hops:
      - name: hop-exit
        nodes:
          - name: exit-dc
            addr: proxy-host.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD

Ersetzen Sie proxy-host.example:1080 durch den Endpunkt aus Ihrem ChangeMyIP-Dashboard und tragen Sie die mit Ihrem Tarif ausgegebenen Anmeldedaten ein.

  1. Starten Sie den Listener und führen Sie einen Smoke-Test durch.
gost -C gost.yaml

Bestätigen Sie in einem zweiten Terminal, dass die Exit-IP zum Proxy gehört und nicht zu Ihnen:

curl --silent --show-error --proxy socks5h://127.0.0.1:1080 https://api.ipify.org
echo
curl --silent https://api.ipify.org
echo

Die erste Anfrage sollte die ChangeMyIP-Endpunktadresse melden; die zweite meldet Ihre eigene Verbindung.

  1. Fügen Sie einen zweiten Hop hinzu, um zwei Standorte zu verketten. Die Anfrage durchläuft App, dann Entry-Endpunkt, dann Exit-Endpunkt, dann die Zielseite. Die Seite sieht die Exit-Endpunktadresse; der Exit-Endpunkt sieht den Entry-Endpunkt als seinen Client.
services:
  - name: socks-in
    addr: "127.0.0.1:1080"
    handler:
      type: socks5
      chain: cmi-two-hop
    listener:
      type: tcp

chains:
  - name: cmi-two-hop
    hops:
      - name: hop-entry
        nodes:
          - name: entry-de
            addr: entry-host.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD
      - name: hop-exit
        nodes:
          - name: exit-us
            addr: exit-host.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD
  1. Rotieren Sie innerhalb eines Hops über Endpunkte mit einem Selector. So verteilen Sie den Datenverkehr auf mehrere unterschiedliche Adressen, statt einen Knoten festzulegen.
      - name: hop-exit
        selector:
          strategy: round
          maxFails: 1
          failTimeout: 30s
        nodes:
          - name: exit-us-1
            addr: exit-us-1.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD
          - name: exit-us-2
            addr: exit-us-2.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD
          - name: exit-us-3
            addr: exit-us-3.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD

Wenn Sie die Adressen lieber nicht selbst auflisten möchten, richten Sie den Hop auf einen einzelnen rotierenden Residential-Endpunkt: ChangeMyIP rotiert die IP auf seiner Seite, und der Konfigurator benötigt nur einen Knoten. Der Pool deckt 40+ Länder, 300+ Städte und 1000+ Subnetze ab, sodass Sie die Rotation über viele verschiedene Netzwerke verteilen können, wenn eine Aufgabe davon abhängt, wie unzusammenhängende Besucher zu erscheinen.

  1. Richten Sie Ihre Anwendungen auf den lokalen Listener aus. Browser-Proxy-Einstellungen verwenden einen SOCKS5-Host 127.0.0.1 und Port 1080, mit aktiviertem Remote-DNS, sodass Namen durch den Proxy aufgelöst werden. Kommandozeilen-Tools akzeptieren normalerweise ein Flag oder eine Umgebungsvariable:
export ALL_PROXY=socks5h://127.0.0.1:1080
export HTTPS_PROXY=socks5h://127.0.0.1:1080

Manche Tools ignorieren diese Variablen und benötigen ein explizites Flag, zum Beispiel curl --proxy socks5h://127.0.0.1:1080. Bevorzugen Sie für alles Datenschutzrelevante immer das Schema socks5h gegenüber socks5.

  1. Halten Sie den Konfigurator am Laufen. Unter Linux ist eine systemd-Unit die sauberste Option:
[Unit]
Description=Local SOCKS5 configurator (gost)
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/gost -C /etc/gost/gost.yaml
Restart=on-failure
User=proxyuser
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
sudo install -m 0600 gost.yaml /etc/gost/gost.yaml
sudo systemctl daemon-reload
sudo systemctl enable --now gost
systemctl status gost

Erstellen Sie unter Windows eine Aufgabe in der Aufgabenplanung, die bei der Anmeldung gost.exe -C C:\gost\gost.yaml ausführt, und stellen Sie sie so ein, dass sie ausgeführt wird, unabhängig davon, ob der Benutzer angemeldet ist. Führen Sie unter macOS denselben Befehl beim Testen aus einem Terminal aus und verpacken Sie ihn dann in einen LaunchAgent, damit er beim Anmelden startet.

Kette und DNS-Verhalten überprüfen

Wiederholen Sie eine Anfrage in einer Schleife, um zu sehen, ob die Rotation tatsächlich stattfindet:

for i in 1 2 3; do
  curl --silent --proxy socks5h://127.0.0.1:1080 https://api.ipify.org
  echo
done

Überprüfen Sie den gemeldeten Standort der Exit-Adresse:

curl --silent --proxy socks5h://127.0.0.1:1080 https://ifconfig.co/json
  • Ein einzelner Hop gibt die Adresse dieses Endpunkts zurück. Eine Zwei-Hop-Kette gibt die Exit-Endpunktadresse zurück, niemals die Entry-Adresse. Wenn Sie die Entry-Adresse sehen, wird die Kette nicht angewendet.
  • Das Schema socks5h bittet den Proxy, Hostnamen aufzulösen. Einfaches socks5:// löst lokal auf, was Ihren Resolver und Ihren ungefähren Standort leaken kann, obwohl der Datenverkehr selbst über den Proxy läuft.
  • Wenn jede Anfrage dieselbe Adresse zurückgibt, obwohl ein Selector konfiguriert ist, prüfen Sie, ob maxFails und failTimeout Knoten ausschließen und ob der Endpunkt selbst keine sticky Datacenter-Adresse ist.

Fehlerbehebung

Symptom Wahrscheinliche Ursache Behebung
Failed to connect to 127.0.0.1 port 1080 Listener läuft nicht oder ist an einen anderen Port gebunden Starten Sie gost -C gost.yaml und prüfen Sie den addr-Wert in der Konfiguration
SOCKS5-Authentifizierungsfehler Falscher Benutzername, falsches Passwort oder falscher Endpunkt-Host Kopieren Sie die Anmeldedaten erneut aus dem Dashboard und testen Sie den Endpunkt direkt mit curl
Jede Anfrage läuft in eine Zeitüberschreitung Firewall blockiert ausgehenden Zugriff auf den Endpunkt-Port, oder Ihre Quell-IP ist nicht autorisiert Testen Sie den rohen Endpunkt ohne den Konfigurator und erlauben Sie dann die Verbindung in Ihrer Firewall
Die gemeldete IP ist Ihre eigene Die App umgeht den Listener, oder Sie haben socks5:// statt socks5h:// verwendet Richten Sie die App auf 127.0.0.1:1080 und wechseln Sie das Schema auf socks5h
Die IP ändert sich nie Ein einzelner Knoten ohne Selector oder ein sticky Datacenter-Endpunkt Fügen Sie einen Selector mit mehreren Knoten hinzu oder verschieben Sie den Hop auf einen rotierenden Residential-Endpunkt
Verkettung funktioniert, ist aber langsam Zwei Hops verdoppeln die Round-Trip-Zeit Reduzieren Sie auf einen Hop oder platzieren Sie den Entry-Hop näher an Ihrer eigenen Region
Konfigurationsänderungen haben keine Wirkung Ein älterer Prozess läuft noch Starten Sie den Dienst mit systemctl restart gost neu oder stoppen Sie den Terminalprozess und starten Sie ihn erneut

Zusammenfassung

  • Ein lokaler SOCKS5-Konfigurator, hier mit gost erstellt, gibt jeder Anwendung auf dem Rechner einen Proxy-Endpunkt unter 127.0.0.1:1080, unabhängig davon, ob die App Proxys unterstützt.
  • Ein Hop bietet stabilen Egress; zwei Hops bieten Länder-zu-Länder-Routing, wobei die Exit-Endpunktadresse diejenige ist, die Websites sehen.
  • Selectors rotieren innerhalb eines Hops über mehrere Endpunkte, während ein rotierender Residential-Endpunkt die Rotation auf Anbieterseite übernimmt.
  • Verwenden Sie das Schema socks5h, damit DNS durch den Proxy aufgelöst wird, und überprüfen Sie das Ergebnis mit einer wiederholten curl-Schleife und einer Geolokalisierungsabfrage.
  • Halten Sie die YAML-Datei auf 0600 und führen Sie den Listener als Dienst aus, damit er Neustarts und Abmeldungen übersteht.