Zum Inhalt springen

Proxys und geoip

Leiten Sie den Browser über Ihren eigenen Proxy, auch über SOCKS5 mit Benutzername und Passwort im lizenzierten Build, und lassen Sie geoip Zeitzone, Sprache und WebRTC-Adresse an die Exit-IP des Proxys anpassen.

Region des Proxys automatisch übernehmen (geoip)

Übergeben Sie geoip zusammen mit einem Proxy, und das SDK ermittelt die Exit-IP des Proxys — nachgeschlagen in der Offline-Datenbank geoip-all-in-one — und setzt für diese Region eine kohärente Kombination aus Zeitzone + primärer Navigator-Sprache + Accept-Language + WebRTC-IP. Sie müssen also nicht mehr für jeden Proxy die Zeitzone von Hand anpassen:

from clearcote import launch

browser = launch(
    fingerprint="user-7423",
    proxy={"server": "http://host:8080", "username": "u", "password": "p"},
    geoip=True,  # timezone + language auto-matched to the proxy's region
)

Außerdem setzt es für die Region die Geolocation und die vollständige Liste navigator.languages, funktioniert über HTTP- und SOCKS5-Proxys (inklusive Zugangsdaten) und steckt in allen drei SDKs (Geoip = true in .NET). Beim ersten Lauf wird die Datenbank heruntergeladen (rund 50 MB). Lässt sich die Region nicht ermitteln, bricht der Start mit einem GeoipError ab, statt stillschweigend mit Uhr und Sprache dieses Rechners zu starten; setzen Sie sowohl timezone als auch acceptLanguage, um trotzdem zu starten. Für den Lookup gibt es 20 Sekunden (CLEARCOTE_GEOIP_TIMEOUT_SECONDS); unter .NET heißt der Fehler GeoipException. Ohne geoip oder eine explizite timezone folgt die Zeitzone der Sprache — en-US bedeutet New York, auch hinter einem deutschen Proxy.

Lieber selbst einstellen? Verwenden Sie acceptLanguage (Node) / accept_language (Python), z. B. "en-US,en" — das setzt den Accept-Language-Header, das komplette Array navigator.languages und navigator.language —, und auch Intl / toLocaleString richten sich danach.

SOCKS5 mit Zugangsdaten

Standard-Chromium kann sich bei einem SOCKS5-Proxy überhaupt nicht authentifizieren — die Benutzername/Passwort-Subnegotiation ist schlicht nicht implementiert —, deshalb ist der übliche Workaround ein lokales Relay, das die Zugangsdaten hält. Der lizenzierte Build implementiert sie in der Engine (RFC 1929), ein Relay ist also nicht nötig. Übergeben Sie Benutzername und Passwort als separate Felder oder in der Adresse (socks5://user:pass@host:port); in beiden Fällen reicht das SDK sie an die Engine weiter. Zugangsdaten in der Adresse erfordern SDK 0.31.1 oder neuer: Bei älteren SDKs hat Playwright sie verworfen, und der Proxy sah keinen Login.

from clearcote import launch_persistent_context

ctx = launch_persistent_context(
    "./profile",
    proxy={"server": "socks5://proxy.example.net:1080", "username": "user", "password": "pass"},
)
page = ctx.pages[0] if ctx.pages else ctx.new_page()
page.goto("https://api.ipify.org?format=json")   # confirm the exit IP is the proxy's

Erfordert den lizenzierten Build (Kostenlos mit GitHub oder Pro, Engine 151 r14 oder neuer); der offene Build kann sich nicht bei einem SOCKS5-Proxy authentifizieren, verwenden Sie mit ihm also ein lokales Relay oder einen HTTP-Proxy.

Prüfen Sie immer die Exit-Adresse, bevor Sie einer Session vertrauen. Ein Proxy, der unbemerkt fail-open ausfällt, schickt den Traffic von Ihrer eigenen IP ab, und jede andere Vorsichtsmaßnahme wird bedeutungslos. Prüfen Sie die Adresse einmal beim Start gegen einen IP-Echo-Dienst, statt sie einfach vorauszusetzen.