SeleniumBase UC Mode Proxy Werkt Niet: Oorzaken en Oplossingen

De klacht is altijd hetzelfde: UC Mode omzeilt Cloudflare zonder een proxy en faalt met één, of het IP verandert simpelweg nooit. Beide symptomen hebben concrete oorzaken — en geen van beide is een SeleniumBase-bug.

Zoek seleniumbase uc mode proxy en je komt op dezelfde drie pagina's terecht: een Stack Overflow-vraag waar het IP nooit verandert bij drie verschillende proxyservices, GitHub-issue seleniumbase/SeleniumBase#3046 ("UC mode werkt niet met proxy", ingediend in augustus 2024 op versie 4.29.9, gesloten als niet reproduceerbaar), en een discussiedraad waar het antwoord van de beheerder twee zinnen lang is: proxies met authenticatie hebben een Chrome-extensie nodig, en je hebt mogelijk gewoon een slechte proxy. Beide helften van dat antwoord zijn correct, en samen verklaren ze bijna elk falen. Hier is de lange versie, plus de debugvolgorde die de oorzaak vindt.

Twee verschillende fouten die identiek lijken

Voordat je iets verandert, bepaal welk probleem je hebt, want de oplossingen delen niets. Fout A: het exit-IP verandert nooit. Je script draait, pagina's laden, en het doel ziet je echte adres — de proxy was nooit in het pad. Fout B: de proxy werkt en de site blokkeert je. UC Mode vaart door Cloudflare zonder proxy, maar komt in een uitdagingloop zodra je er een toevoegt, precies wat issue #3046 beschrijft. Fout A is een infrastructuurprobleem. Fout B is een IP-reputatieprobleem. Het ene als het andere behandelen is waarom deze threads pagina's lang doorgaan.

Waarom geauthenticeerde proxies een extensie nodig hebben — en waarom dat belangrijk is in UC Mode

Chrome heeft geen command-line manier om proxy-credentials te leveren. De --proxy-server vlag negeert stilletjes elke user:pass@ die je invoegt, en de resulterende 407 uitdaging verschijnt als een native dialoog die WebDriver niet kan aanraken. Dus wanneer je een proxystring met credentials doorgeeft, genereert SeleniumBase ter plekke een kleine Chrome-extensie, schrijft deze naar een tijdelijke map en laadt deze bij de start om de uitdaging voor je te beantwoorden. Dat is het mechanisme waar de beheerder naar verwijst, en hetzelfde dat wordt beschreven in onze gids voor geauthenticeerde proxies in Selenium.

UC Mode voegt daar bewegende onderdelen aan toe: het start eerst Chrome, koppelt daarna een gepatchte chromedriver aan, en verbreekt de driver tijdens stealth-acties. De extensie moet worden geladen voordat dit alles gebeurt, en als dat niet gebeurt, wordt er geen uitzondering opgeworpen — Chrome surft direct, en je krijgt Fout A. De gebruikelijke oorzaak is versieverschil. Chrome 137 veranderde het extensiegedrag genoeg om proxy-authenticatie te breken totdat SeleniumBase een update uitbracht, dus een oude vastgepinde versie plus een huidige Chrome faalt elke keer stilletjes. Upgrade eerst, debug daarna.

SeleniumBase UC Mode proxyformaten die daadwerkelijk werken

Formaatfouten zijn verantwoordelijk voor een verrassend aandeel van "proxy genegeerd" meldingen. SeleniumBase accepteert de proxy als een eenvoudige string, met of zonder credentials, in zowel de Driver als SB managers en op de command line:

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

Drie regels die hieruit voortvloeien. Wikkel de string niet in http:// en credentials tegelijk tenzij je hebt bevestigd dat je versie het aankan — USER:PASS@HOST:PORT is de gedocumenteerde vorm. Verwacht niet dat SOCKS5 met credentials werkt: dat is een beperking van Chromium, identiek aan degene die we behandelen voor Playwright SOCKS5 authenticatie, en geen enkel framework lost dit op. En als je wachtwoord @ of : bevat, verander het dan in iets alfanumerieks in plaats van een parser te debuggen.

De oplossing die de hele foutklasse verwijdert

Als de machine die je scraper draait een stabiel publiek IP heeft, authenticeer die dan in plaats van het verzoek. Registreer het adres bij je provider — elk QuantumProxies-plan ondersteunt IP-whitelisting naast user:pass — en geef dan een kale host:port door. Geen credentials betekent geen extensie: een component minder die breekt bij een Chrome-update, een bestand minder geladen in een browser die je onopvallend wilt houden. Op een VPS is dit de meest waardevolle wijziging in dit bericht.

De limiet is topologisch, niet technisch: whitelisting authenticeert een machine, dus autoschaalbare containers, CI-runners en alles achter een roterende NAT hebben nog steeds credentials nodig. Voor die gevallen, houd het extensiepad en houd SeleniumBase up-to-date.

Stroomschema van hoe SeleniumBase UC Mode een geproxied Chrome-browser start: auth-extensie, late chromedriver-koppeling, schone residentiële exit-IP
Elk vak is een plek waar de proxy uit de keten kan vallen. Whitelisting verwijdert de eerste, die ook degene is die breekt bij Chrome-updates.

Verifieer het exit-IP voordat je UC Mode de schuld geeft

Dit is stap nul en de meeste mensen slaan het over. Bewijs dat het verkeer via de proxy vertrekt, geïsoleerd, voordat je een stealth-instelling aanraakt. Test dezelfde credentials eerst buiten de browser — als curl ze niet kan gebruiken, zal geen enkel framework dat kunnen:

# 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()"

Als stap 1 faalt, is het probleem de proxy of de credentials. Als stap 1 slaagt en stap 3 faalt, is het probleem de extensie of de Chrome-versie. Als beide slagen en alleen uc=True faalt, dan — en alleen dan — is het een UC Mode-interactie. Weten welke exit je daadwerkelijk hebt gekregen is net zo belangrijk als weten dat je er een hebt gekregen: onze gratis IP-kwaliteitschecker rapporteert het adres, het type en de reputatie, wat het verschil is tussen "de proxy werkt" en "de proxy zal erdoor komen".

Wanneer de proxy werkt en Cloudflare toch wint

Dit is Fout B, en het is geen bug in iets. UC Mode laat de browser er menselijk uitzien; het kan het netwerk niet residentieel laten lijken. Routeer een stealth-browser door een datacenter-subnet dat al door honderd andere scrapers is verbrand en je krijgt de harde versie van de uitdaging — degene die nooit oplost, hoe vaak je er ook op klikt. Geen enkel browserframework lost dat op, omdat het oordeel wordt geveld voordat de vingerafdruk zelfs maar wordt gelezen. Onze notities over Cloudflare error 1020 en over het vermijden van CAPTCHAs tijdens het scrapen komen beide op dezelfde plek uit: de CAPTCHA is een symptoom, IP-reputatie is de oorzaak.

Drie dingen veranderen de uitkomst. Schakel over naar residentiële IP's: echte huishoudelijke adressen in meer dan 200 landen dragen een reputatie die een datacenterbereik niet kan. Gebruik een sticky sessie voor alles met een login of een winkelwagentje, aangezien rotatie midden in de stroom wordt gelezen als sessiekaping, en roterende exits voor brede stateless crawls. En stem het exitland af op de locatie die je emuleert — een Duitse exit met een en-US locale en een New York-tijdzone scoort als een anomalie.

Twee omgevingsdetails sluiten de lus. UC Mode is detecteerbaar in headless mode, dus gebruik op Linux het virtuele display (xvfb=True) in plaats van headless=True — daarom lossen verschillende "werkt op Windows, crasht op Ubuntu" meldingen op zodra het display is gefixt, en waarom op PyAutoGUI gebaseerde helpers zoals uc_gui_click_captcha() een display nodig hebben om iets aan te klikken. En test incognito=True beide manieren met een auth-proxy: extensies en incognito zijn een fragiel paar, en je credentials reizen in een extensie.

Debug-checklist voor SeleniumBase UC Mode proxyproblemen, geordend van exit-IP-verificatie tot stealth- en proxytypewijzigingen
Werk de linkerkolom van boven naar beneden. De meeste tickets sluiten op de eerste twee regels, lang voordat iemand een stealth-instelling hoeft aan te raken.

De debug-checklist, in volgorde

CDP Mode, de gedocumenteerde opvolger van de gewone UC Mode, verandert hier niets aan: de proxybeperkingen komen van Chrome, niet van het framework, dus dezelfde checklist is van toepassing. Voor het cross-framework overzicht van wie geauthenticeerde proxies ondersteunt, legt onze anti-detect framework proxy map het zij aan zij uit.

Veelgestelde vragen

Waarom verandert mijn IP niet met SeleniumBase UC Mode?

Bijna altijd omdat de proxy-auth extensie niet is geladen, dus Chrome surfte direct. Niets geeft een foutmelding wanneer dat gebeurt. Upgrade SeleniumBase, bevestig dat de proxystring USER:PASS@HOST:PORT is, en test dezelfde credentials met curl. Als de machine een stabiel publiek IP heeft, whitelist het en laat de credentials volledig vallen.

Waarom omzeilt UC Mode Cloudflare zonder een proxy maar niet met één?

Omdat je eigen verbinding een schone reputatie heeft en de proxy-exit niet. Gedeelde datacenterranges worden zwaar gemarkeerd, en een gemarkeerd IP krijgt de harde uitdaging die geen enkele automatisering kan oplossen. Verplaats de taak naar residentiële of mobiele exits en test opnieuw voordat je een stealth-instelling wijzigt — de browser was nooit het probleem.

Werkt SeleniumBase UC Mode met SOCKS5 proxies?

Zonder credentials, ja. Met credentials, nee — Chromium heeft nooit SOCKS5 gebruikersnaam/wachtwoord authenticatie geïmplementeerd, dus geen enkel Selenium-familie framework kan het toevoegen. Gebruik het HTTP-eindpunt van dezelfde gateway met credentials, of whitelist je IP en houd het SOCKS5-eindpunt ongeauthenticeerd.

Kan ik UC Mode met een proxy in headless mode draaien?

Je kunt, maar je zou het niet moeten doen. UC Mode is detecteerbaar in headless mode, en de CAPTCHA-helpermethoden hebben een echt display nodig omdat ze de muis via PyAutoGUI aansturen. Gebruik op een Linux-server xvfb=True voor een virtueel display; die combinatie is waar de onderhouden voorbeelden op gericht zijn.

Hoe gebruik ik proxyrotatie met SeleniumBase?

Wijs naar een roterende gateway in plaats van een lijst te beheren: elke nieuwe verbinding krijgt een andere exit uit de pool, zonder codewijzigingen. Voor stromen die één identiteit over meerdere pagina's moeten behouden, vraag een sticky sessie aan in de gebruikersnaamparameters zodat de exit houdt voor het sessievenster, en start een nieuwe driver per identiteit.

UC Mode vecht niet tegen je proxy. Het stapelt een stealth-startvolgorde bovenop een credential-mechanisme waar Chrome nooit voor ontworpen is voor automatisering, en dan voltooit een verbrand IP de klus. Verwijder de extensie door te whitelisten, verifieer de exit voordat je iets anders aanraakt, en geef de browser een IP dat nog niet was opgebruikt.

Draai UC Mode op schone residentiële IP's