SeleniumBase UC-Modus-Proxy funktioniert nicht: Ursachen und Lösungen

Die Beschwerde ist immer dieselbe: Der UC-Modus überwindet Cloudflare ohne Proxy und scheitert mit einem, oder die IP ändert sich einfach nie. Beide Symptome haben konkrete Ursachen — und keines davon ist ein SeleniumBase-Fehler.

Suchen Sie nach seleniumbase uc modus proxy und Sie landen auf denselben drei Seiten: eine Stack Overflow-Frage, bei der sich die IP über drei verschiedene Proxy-Dienste hinweg nie ändert, GitHub-Issue seleniumbase/SeleniumBase#3046 ("UC-Modus funktioniert nicht mit Proxy", eingereicht im August 2024 in Version 4.29.9, geschlossen als nicht reproduzierbar), und ein Diskussionsthread, in dem die Antwort des Maintainers zwei Sätze lang ist: Proxies mit Authentifizierung benötigen eine Chrome-Erweiterung, und Sie haben möglicherweise einfach einen schlechten Proxy. Beide Hälften dieser Antwort sind korrekt und zusammen erklären sie fast jedes Versagen. Hier ist die ausführliche Version sowie die Debug-Reihenfolge, die die Ursache findet.

Zwei verschiedene Fehler, die identisch aussehen

Bevor Sie etwas ändern, finden Sie heraus, welches Problem Sie haben, da die Lösungen nichts gemeinsam haben. Fehler A: Die Exit-IP ändert sich nie. Ihr Skript läuft, Seiten laden, und das Ziel sieht Ihre echte Adresse — der Proxy war nie im Weg. Fehler B: Der Proxy funktioniert und die Seite blockiert Sie. Der UC-Modus segelt ohne Proxy durch Cloudflare und trifft dann auf eine Herausforderungsschleife, sobald Sie einen hinzufügen, was genau das ist, was Issue #3046 beschreibt. Fehler A ist ein Infrastrukturproblem. Fehler B ist ein Problem mit dem IP-Ruf. Einen als den anderen zu behandeln, ist der Grund, warum diese Threads seitenlang laufen.

Warum authentifizierte Proxies eine Erweiterung benötigen — und warum das im UC-Modus wichtig ist

Chrome hat keine Möglichkeit, Proxy-Anmeldedaten über die Befehlszeile bereitzustellen. Das --proxy-server-Flag verwirft stillschweigend jedes eingebettete user:pass@, und die resultierende 407-Herausforderung erscheint als nativer Dialog, den WebDriver nicht berühren kann. Wenn Sie also einen Proxy-String mit Anmeldedaten übergeben, generiert SeleniumBase eine kleine Chrome-Erweiterung im Handumdrehen, schreibt sie in einen temporären Ordner und lädt sie beim Start, damit sie die Herausforderung für Sie beantworten kann. Das ist der Mechanismus, auf den der Maintainer verweist, und derselbe, der in unserem Leitfaden zu authentifizierten Proxies in Selenium beschrieben wird.

Der UC-Modus fügt bewegliche Teile hinzu: Er startet zuerst Chrome, hängt danach einen gepatchten Chromedriver an und trennt den Treiber während verdeckter Aktionen. Die Erweiterung muss geladen werden, bevor irgendetwas davon passiert, und wenn nicht, wird keine Ausnahme ausgelöst — Chrome surft direkt, und Sie erhalten Fehler A. Die übliche Ursache ist Versionsdrift. Chrome 137 änderte das Verhalten von Erweiterungen so stark, dass die Proxy-Authentifizierung nicht mehr funktionierte, bis SeleniumBase ein Update veröffentlichte, sodass eine alte festgelegte Version plus ein aktuelles Chrome jedes Mal stillschweigend fehlschlägt. Zuerst aktualisieren, dann debuggen.

SeleniumBase UC-Modus-Proxy-Formate, die tatsächlich funktionieren

Formatfehler machen einen überraschend großen Anteil der Berichte über "ignorierte Proxies" aus. SeleniumBase nimmt den Proxy als einfachen String, mit oder ohne Anmeldedaten, sowohl in den Driver- als auch in den SB-Managern und auf der Befehlszeile:

from seleniumbase import Driver, SB

# Authenticated: SeleniumBase builds a proxy-auth extension for this
driver = Driver(uc=True, proxy="USER:PASS@gate.quantumproxies.io:PORT")

# IP-whitelisted: no credentials, no extension
with SB(uc=True, proxy="gate.quantumproxies.io:PORT") as sb:
    sb.uc_open_with_reconnect("https://httpbin.org/ip", 4)
    print(sb.get_text("body"))     # must NOT be your own IP

# Same thing from pytest:
#   pytest test_x.py --uc --proxy=USER:PASS@gate.quantumproxies.io:PORT

Drei Regeln, die sich daraus ergeben. Umwickeln Sie den String nicht mit http:// und Anmeldedaten gleichzeitig, es sei denn, Sie haben überprüft, dass Ihre Version damit umgehen kann — USER:PASS@HOST:PORT ist die dokumentierte Form. Erwarten Sie nicht, dass SOCKS5 mit Anmeldedaten überhaupt funktioniert: Das ist eine Chromium-Einschränkung, identisch mit der, die wir für Playwright SOCKS5-Authentifizierung behandeln, und kein Framework umgeht sie. Und wenn Ihr Passwort @ oder : enthält, ändern Sie es in etwas Alphanumerisches, anstatt einen Parser zu debuggen.

Die Lösung, die die gesamte Fehlerklasse entfernt

Wenn die Maschine, die Ihren Scraper ausführt, eine stabile öffentliche IP hat, authentifizieren Sie diese anstelle der Anfrage. Registrieren Sie die Adresse bei Ihrem Anbieter — jeder QuantumProxies-Plan unterstützt IP-Whitelisting neben user:pass — und geben Sie dann einen einfachen host:port an. Keine Anmeldedaten bedeuten keine Erweiterung: eine Komponente weniger, die bei einem Chrome-Update kaputtgeht, eine Datei weniger, die in einen Browser geladen wird, den Sie unauffällig halten möchten. Auf einem VPS ist dies die wertvollste Änderung in diesem Beitrag.

Das Limit ist topologisch, nicht technisch: Whitelisting authentifiziert eine Maschine, sodass autoskalierte Container, CI-Runner und alles hinter einem rotierenden NAT weiterhin Anmeldedaten benötigen. Für diese behalten Sie den Erweiterungspfad bei und halten SeleniumBase aktuell.

Flussdiagramm, wie SeleniumBase UC-Modus einen proxied Chrome-Browser startet: Authentifizierungserweiterung, späte Chromedriver-Anbindung, sauberer Wohn-Exit-IP
Jedes Kästchen ist ein Ort, an dem der Proxy aus der Kette fallen kann. Whitelisting löscht das erste, das auch dasjenige ist, das bei Chrome-Updates kaputtgeht.

Überprüfen Sie die Exit-IP, bevor Sie den UC-Modus beschuldigen

Dies ist Schritt null und die meisten Leute überspringen ihn. Beweisen Sie, dass der Datenverkehr isoliert über den Proxy verlässt, bevor Sie eine Stealth-Einstellung berühren. Testen Sie dieselben Anmeldedaten zuerst außerhalb des Browsers — wenn curl sie nicht verwenden kann, wird es kein Framework tun:

# 1. Does the proxy work at all, outside any browser?
curl -x http://USER:PASS@gate.quantumproxies.io:PORT https://httpbin.org/ip

# 2. Is the toolchain current? (Chrome 137+ broke older extension handling)
pip install -U seleniumbase && sbase get chromedriver

# 3. Does the proxy work WITHOUT the stealth patches?
python -c "from seleniumbase import Driver; \
d=Driver(proxy='USER:PASS@gate.quantumproxies.io:PORT'); \
d.get('https://httpbin.org/ip'); \
print(d.find_element('tag name','body').text); d.quit()"

Wenn Schritt 1 fehlschlägt, liegt das Problem beim Proxy oder den Anmeldedaten. Wenn Schritt 1 besteht und Schritt 3 fehlschlägt, liegt das Problem bei der Erweiterung oder der Chrome-Version. Wenn beide bestehen und nur uc=True fehlschlägt, dann — und nur dann — ist es eine UC-Modus-Interaktion. Zu wissen, welchen Exit Sie tatsächlich erhalten haben, ist genauso wichtig wie zu wissen, dass Sie einen erhalten haben: Unser kostenloser IP-Qualitätsprüfer berichtet über die Adresse, ihren Typ und ihren Ruf, was den Unterschied zwischen "der Proxy funktioniert" und "der Proxy wird durchkommen" ausmacht.

Wenn der Proxy funktioniert und Cloudflare trotzdem gewinnt

Dies ist Fehler B, und es ist kein Fehler in irgendetwas. Der UC-Modus lässt den Browser menschlich aussehen; er kann das Netzwerk nicht wie ein Wohnnetzwerk aussehen lassen. Leiten Sie einen Stealth-Browser durch ein Rechenzentrum-Subnetz, das bereits von hundert anderen Scrapers verbrannt wurde, und Sie erhalten die harte Version der Herausforderung — diejenige, die sich nie auflöst, egal wie oft Sie darauf klicken. Kein Browser-Framework löst das, weil das Urteil gefällt wird, bevor der Fingerabdruck überhaupt gelesen wird. Unsere Notizen zu Cloudflare-Fehler 1020 und zum Vermeiden von CAPTCHAs beim Scraping landen beide am selben Ort: Das CAPTCHA ist ein Symptom, der IP-Ruf ist die Ursache.

Drei Dinge ändern das Ergebnis. Wechseln Sie zu Wohn-IPs: Echte Haushaltsadressen in über 200 Ländern tragen einen Ruf, den ein Rechenzentrumsbereich nicht haben kann. Verwenden Sie eine Sticky-Session für alles mit einem Login oder einem Warenkorb, da eine Rotation während des Flusses als Sitzungsentführung gelesen wird, und rotierende Exits für breite zustandslose Crawls. Und passen Sie das Exit-Land an die von Ihnen emulierte Region an — ein deutscher Exit mit einem en-US-Locale und einer New Yorker Zeitzone wird als Anomalie gewertet.

Zwei Umgebungsdetails schließen den Kreis. Der UC-Modus ist im Headless-Modus erkennbar, daher verwenden Sie unter Linux das virtuelle Display (xvfb=True) anstelle von headless=True — deshalb lösen sich mehrere Berichte über "funktioniert unter Windows, stürzt unter Ubuntu ab", sobald das Display behoben ist, und warum PyAutoGUI-basierte Helfer wie uc_gui_click_captcha() ein Display benötigen, um irgendetwas zu klicken. Und testen Sie incognito=True in beide Richtungen mit einem Auth-Proxy: Erweiterungen und Inkognito sind ein fragiles Paar, und Ihre Anmeldedaten werden in einer Erweiterung übertragen.

Debug-Checkliste für SeleniumBase UC-Modus-Proxy-Probleme, geordnet von der Exit-IP-Verifizierung bis zu Änderungen der Stealth- und Proxy-Typen
Arbeiten Sie die linke Spalte von oben nach unten ab. Die meisten Tickets schließen sich auf den ersten beiden Zeilen, lange bevor jemand eine Stealth-Einstellung berühren muss.

Die Debug-Checkliste, in der Reihenfolge

CDP-Modus, der dokumentierte Nachfolger des einfachen UC-Modus, ändert nichts davon: Die Proxy-Einschränkungen kommen von Chrome, nicht vom Framework, daher gilt dieselbe Checkliste. Für die plattformübergreifende Ansicht, wer authentifizierte Proxies unterstützt, zeigt unsere Anti-Detect-Framework-Proxy-Karte dies nebeneinander an.

Häufig gestellte Fragen

Warum ändert sich meine IP nicht mit SeleniumBase UC-Modus?

Fast immer, weil die Proxy-Auth-Erweiterung nicht geladen wurde, sodass Chrome direkt surfte. Nichts löst einen Fehler aus, wenn das passiert. Aktualisieren Sie SeleniumBase, bestätigen Sie, dass der Proxy-String USER:PASS@HOST:PORT ist, und testen Sie dieselben Anmeldedaten mit curl. Wenn die Maschine eine stabile öffentliche IP hat, whitelisten Sie diese und lassen Sie die Anmeldedaten ganz weg.

Warum umgeht der UC-Modus Cloudflare ohne Proxy, aber nicht mit einem?

Weil Ihre eigene Verbindung einen sauberen Ruf hat und der Proxy-Exit nicht. Gemeinsame Rechenzentrumsbereiche sind stark markiert, und eine markierte IP erhält die harte Herausforderung, die keine Automatisierung klären kann. Verschieben Sie den Job auf Wohn- oder mobile Exits und testen Sie erneut, bevor Sie eine Stealth-Einstellung ändern — der Browser war nie das Problem.

Funktioniert der SeleniumBase UC-Modus mit SOCKS5-Proxies?

Ohne Anmeldedaten, ja. Mit Anmeldedaten, nein — Chromium hat nie eine SOCKS5-Benutzername/Passwort-Authentifizierung implementiert, daher kann kein Selenium-Familien-Framework sie hinzufügen. Verwenden Sie den HTTP-Endpunkt desselben Gateways mit Anmeldedaten oder whitelisten Sie Ihre IP und halten Sie den SOCKS5-Endpunkt unauthentifiziert.

Kann ich den UC-Modus mit einem Proxy im Headless-Modus ausführen?

Sie können, aber Sie sollten es nicht. Der UC-Modus ist im Headless-Modus erkennbar, und die CAPTCHA-Hilfsmethoden benötigen ein echtes Display, da sie die Maus über PyAutoGUI steuern. Auf einem Linux-Server verwenden Sie xvfb=True für ein virtuelles Display; diese Kombination ist das Ziel der gepflegten Beispiele.

Wie verwende ich Proxy-Rotation mit SeleniumBase?

Zeigen Sie auf ein rotierendes Gateway, anstatt eine Liste zu verwalten: Jede neue Verbindung erhält einen anderen Exit aus dem Pool, ohne Codeänderungen. Für Abläufe, die eine Identität über mehrere Seiten hinweg beibehalten müssen, fordern Sie eine Sticky-Session in den Benutzername-Parametern an, damit der Exit für das Sitzungsfenster gehalten wird, und starten Sie pro Identität einen neuen Treiber.

Der UC-Modus kämpft nicht gegen Ihren Proxy. Er stapelt eine Stealth-Startsequenz auf einen Anmeldemechanismus, für den Chrome nie für die Automatisierung entworfen wurde, und dann erledigt eine verbrannte IP den Rest. Entfernen Sie die Erweiterung durch Whitelisting, überprüfen Sie den Exit, bevor Sie irgendetwas anderes anfassen, und geben Sie dem Browser eine IP, die noch nicht verbraucht wurde.

Führen Sie den UC-Modus auf sauberen Wohn-IPs aus