SeleniumBase UC Mode Proxy Non Funzionante: Cause e Soluzioni

Il reclamo è sempre lo stesso: UC Mode supera Cloudflare senza un proxy e fallisce con uno, oppure l'IP semplicemente non cambia mai. Entrambi i sintomi hanno cause concrete — e nessuno è un bug di SeleniumBase.

Cerca seleniumbase uc mode proxy e atterri sulle stesse tre pagine: una domanda su Stack Overflow dove l'IP non cambia mai con tre diversi servizi proxy, un problema su GitHub seleniumbase/SeleniumBase#3046 ("UC mode non funziona con il proxy", segnalato ad agosto 2024 sulla versione 4.29.9, chiuso come impossibile da riprodurre), e un thread di discussione dove la risposta del manutentore è lunga due frasi: i proxy con autenticazione necessitano di un'estensione Chrome, e potresti semplicemente avere un proxy difettoso. Entrambe le parti di quella risposta sono corrette, e insieme spiegano quasi ogni fallimento. Ecco la versione lunga, più l'ordine di debug che trova la causa.

Due diversi fallimenti che sembrano identici

Prima di cambiare qualcosa, scopri quale problema hai, perché le soluzioni non condividono nulla. Fallimento A: l'IP di uscita non cambia mai. Il tuo script si esegue, le pagine si caricano, e il target vede il tuo vero indirizzo — il proxy non era mai nel percorso. Fallimento B: il proxy funziona e il sito ti blocca. UC Mode attraversa Cloudflare senza proxy, poi incontra un loop di sfida nel momento in cui ne aggiungi uno, esattamente come descritto nel problema #3046. Il fallimento A è un problema di instradamento. Il fallimento B è un problema di reputazione IP. Trattare uno come l'altro è il motivo per cui questi thread durano per pagine.

Perché i proxy autenticati necessitano di un'estensione — e perché è importante in UC Mode

Chrome non ha un modo da riga di comando per fornire credenziali proxy. Il flag --proxy-server scarta silenziosamente qualsiasi user:pass@ che incorpori, e la sfida risultante 407 si manifesta come un dialogo nativo che WebDriver non può toccare. Quindi, quando passi una stringa proxy contenente credenziali, SeleniumBase genera al volo una piccola estensione Chrome, la scrive in una cartella temporanea e la carica all'avvio in modo che possa rispondere alla sfida per te. Questo è il meccanismo a cui si riferisce il manutentore, e lo stesso descritto nella nostra guida ai proxy autenticati in Selenium.

UC Mode aggiunge parti mobili intorno a questo: lancia prima Chrome, collega un chromedriver patchato successivamente, e disconnette il driver durante le azioni stealth. L'estensione deve essere caricata prima che accada qualsiasi cosa, e se non lo fa, nulla solleva un'eccezione — Chrome naviga direttamente, e ottieni il Fallimento A. La causa usuale è la deriva di versione. Chrome 137 ha cambiato il comportamento delle estensioni abbastanza da rompere l'autenticazione proxy fino a quando SeleniumBase non ha rilasciato un aggiornamento, quindi una vecchia versione bloccata più un Chrome attuale fallisce silenziosamente ogni volta. Aggiorna prima, fai debug dopo.

Formati di proxy SeleniumBase UC Mode che funzionano effettivamente

Gli errori di formato rappresentano una quota sorprendente di segnalazioni "proxy ignorato". SeleniumBase accetta il proxy come una stringa semplice, con o senza credenziali, sia nei gestori Driver che SB e sulla riga di comando:

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

Tre regole che ne derivano. Non avvolgere la stringa in http:// e credenziali allo stesso tempo a meno che non hai verificato che la tua versione lo gestisca — USER:PASS@HOST:PORT è la forma documentata. Non aspettarti che SOCKS5 con credenziali funzioni affatto: è una limitazione di Chromium, identica a quella che copriamo per l'autenticazione SOCKS5 di Playwright, e nessun framework la corregge. E se la tua password contiene @ o :, cambiala in qualcosa di alfanumerico piuttosto che fare debug di un parser.

La soluzione che elimina l'intera classe di fallimenti

Se la macchina che esegue il tuo scraper ha un IP pubblico stabile, autenticati invece della richiesta. Registra l'indirizzo con il tuo provider — ogni piano QuantumProxies supporta il whitelisting IP insieme a user:pass — poi passa un semplice host:port. Nessuna credenziale significa nessuna estensione: un componente in meno che si rompe su un aggiornamento di Chrome, un file in meno caricato in un browser che vuoi mantenere poco appariscente. Su un VPS questo è il cambiamento di maggior valore in questo post.

Il limite è topologico, non tecnico: il whitelisting autentica una macchina, quindi i container autoscalati, i runner CI e qualsiasi cosa dietro un NAT rotante necessitano ancora di credenziali. Per questi, mantieni il percorso dell'estensione e mantieni SeleniumBase aggiornato.

Diagramma di flusso di come SeleniumBase UC Mode lancia un browser Chrome con proxy: estensione di autenticazione, attacco tardivo del chromedriver, IP di uscita residenziale pulito
Ogni casella è un punto in cui il proxy può uscire dalla catena. Il whitelisting elimina la prima, che è anche quella che si rompe sugli aggiornamenti di Chrome.

Verifica l'IP di uscita prima di incolpare UC Mode

Questo è il passo zero e la maggior parte delle persone lo salta. Dimostra che il traffico esce attraverso il proxy, in isolamento, prima di toccare un'impostazione stealth. Testa le stesse credenziali fuori dal browser prima — se curl non può usarle, nessun framework potrà:

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

Se il passo 1 fallisce, il problema è il proxy o le credenziali. Se il passo 1 passa e il passo 3 fallisce, il problema è l'estensione o la versione di Chrome. Se entrambi passano e solo uc=True fallisce, allora — e solo allora — è un'interazione UC Mode. Sapere quale uscita hai effettivamente ottenuto è importante quanto sapere che ne hai ottenuta una: il nostro controllo qualità IP gratuito riporta l'indirizzo, il suo tipo e la sua reputazione, che è la differenza tra "il proxy funziona" e "il proxy passerà".

Quando il proxy funziona e Cloudflare vince ancora

Questo è il Fallimento B, e non è un bug in nulla. UC Mode fa sembrare il browser umano; non può far sembrare la rete residenziale. Instrada un browser stealth attraverso una sottorete di datacenter che un centinaio di altri scraper hanno già bruciato e ottieni la versione difficile della sfida — quella che non si risolve mai quante volte la clicchi. Nessun framework browser risolve questo, perché il verdetto è emesso prima che l'impronta digitale venga letta. I nostri appunti su Cloudflare errore 1020 e su evitare i CAPTCHA durante lo scraping finiscono entrambi nello stesso punto: il CAPTCHA è un sintomo, la reputazione IP è la causa.

Tre cose cambiano l'esito. Passa a IP residenziali: veri indirizzi domestici in oltre 200 paesi portano una reputazione che una gamma di datacenter non può. Usa una sessione sticky per qualsiasi cosa con un login o un carrello, poiché la rotazione a metà flusso viene letta come un dirottamento di sessione, e uscite rotanti per ampie scansioni senza stato. E abbina il paese di uscita alla località che emuli — un'uscita tedesca con una località en-US e un fuso orario di New York viene valutata come un'anomalia.

Due dettagli ambientali chiudono il cerchio. UC Mode è rilevabile in modalità headless, quindi su Linux usa il display virtuale (xvfb=True) piuttosto che headless=True — è per questo che diversi rapporti "funziona su Windows, si blocca su Ubuntu" si risolvono una volta sistemato il display, e perché gli helper basati su PyAutoGUI come uc_gui_click_captcha() hanno bisogno di un display per cliccare qualsiasi cosa. E testa incognito=True in entrambi i modi con un proxy di autenticazione: le estensioni e l'incognito sono una coppia fragile, e le tue credenziali viaggiano in un'estensione.

Checklist di debug per problemi di proxy SeleniumBase UC Mode, ordinata dalla verifica dell'IP di uscita ai cambiamenti di stealth e tipo di proxy
Lavora la colonna sinistra dall'alto verso il basso. La maggior parte dei ticket si chiude sulle prime due righe, molto prima che qualcuno debba toccare un'impostazione stealth.

La checklist di debug, in ordine

CDP Mode, il successore documentato della semplice UC Mode, non cambia nulla di questo: i vincoli del proxy provengono da Chrome, non dal framework, quindi la stessa checklist si applica. Per la vista cross-framework di chi supporta i proxy autenticati, la nostra mappa dei proxy dei framework anti-detect lo espone fianco a fianco.

Domande frequenti

Perché il mio IP non cambia con SeleniumBase UC Mode?

Quasi sempre perché l'estensione proxy-auth non è stata caricata, quindi Chrome ha navigato direttamente. Nulla solleva un errore quando ciò accade. Aggiorna SeleniumBase, conferma che la stringa proxy è USER:PASS@HOST:PORT, e testa le stesse credenziali con curl. Se la macchina ha un IP pubblico stabile, mettilo in whitelist e rimuovi completamente le credenziali.

Perché UC Mode supera Cloudflare senza un proxy ma non con uno?

Perché la tua connessione ha una reputazione pulita e l'uscita del proxy no. Le gamme di datacenter condivise sono pesantemente segnalate, e un IP segnalato riceve la sfida difficile che nessuna automazione può superare. Sposta il lavoro su uscite residenziali o mobili e testa di nuovo prima di cambiare qualsiasi impostazione stealth — il problema non è mai stato il browser.

SeleniumBase UC Mode funziona con i proxy SOCKS5?

Senza credenziali, sì. Con credenziali, no — Chromium non ha mai implementato l'autenticazione SOCKS5 con nome utente/password, quindi nessun framework della famiglia Selenium può aggiungerla. Usa l'endpoint HTTP dello stesso gateway con credenziali, o metti in whitelist il tuo IP e mantieni l'endpoint SOCKS5 non autenticato.

Posso eseguire UC Mode con un proxy in modalità headless?

Puoi, ma non dovresti. UC Mode è rilevabile in modalità headless, e i metodi helper CAPTCHA necessitano di un display reale perché guidano il mouse tramite PyAutoGUI. Su un server Linux usa xvfb=True per un display virtuale; quella combinazione è ciò che gli esempi mantenuti mirano.

Come posso usare la rotazione proxy con SeleniumBase?

Punta a un gateway rotante piuttosto che gestire una lista: ogni nuova connessione ottiene un'uscita diversa dal pool, senza modifiche al codice. Per i flussi che devono mantenere un'identità attraverso diverse pagine, richiedi una sessione sticky nei parametri del nome utente in modo che l'uscita si mantenga per la finestra di sessione, e avvia un driver fresco per identità.

UC Mode non sta combattendo il tuo proxy. Sta impilando una sequenza di lancio stealth su un meccanismo di credenziali che Chrome non ha mai progettato per l'automazione, e poi un IP bruciato completa il lavoro. Rimuovi l'estensione mettendo in whitelist, verifica l'uscita prima di toccare qualsiasi altra cosa, e dai al browser un IP che non era già stato speso.

Esegui UC Mode su IP residenziali puliti