Guida a Selenium · 2 min di lettura

Impostazione del proxy Selenium in Python e Java

Selenium può instradare un browser attraverso un proxy in un paio di righe — ma i proxy autenticati necessitano di un'estensione o di un helper in uscita, perché Chrome non accetterà USER:PASS nella riga di comando. Ecco il modello affidabile.

Il problema di autenticazione in Selenium

Setting an unauthenticated proxy in Selenium is trivial: add --proxy-server=http://host:3128 to Chrome options, or fill Selenium's Proxy object, and you are done. The moment the proxy needs a username and password, that simple path breaks — Chrome refuses credentials inline, and unlike Puppeteer or Playwright, Selenium has no built-in authenticate() hook to answer the 407 challenge.

La soluzione robusta e cross-language è una piccola estensione di Chrome generata a runtime che porta le tue credenziali e risponde alla richiesta di autenticazione del proxy tramite l'API webRequest. Funziona in modalità headless, non ha bisogno di servizi extra e si comporta allo stesso modo in Python e Java. Con s4m punti l'estensione a proxy.s4m.online:3128 (HTTP) e il tuo USER:PASS. Vedi la pagina del proxy e la guida all'autenticazione per ulteriori informazioni; per un'opzione senza autenticazione durante i test, la lista gratuita ha proxy aperti che puoi inserire direttamente nel flag della riga di comando.

Proxy autenticato tramite un'estensione generata

Questo helper Python scrive un'estensione Chrome usa e getta contenente le tue credenziali, quindi la carica. Sostituisci USER:PASS prima di eseguire.

python
import os, zipfile, tempfile
from selenium import webdriver

HOST, PORT, USER, PASS = "proxy.s4m.online", 3128, "USER", "PASS"

manifest = '{"version":"1.0.0","manifest_version":2,"name":"s4m-proxy",'\
  '"permissions":["proxy","webRequest","webRequestBlocking","<all_urls>"],'\
  '"background":{"scripts":["bg.js"]}}'

bg = ('var c={mode:"fixed_servers",rules:{singleProxy:'
      '{scheme:"http",host:"%s",port:%d}}};'
      'chrome.proxy.settings.set({value:c,scope:"regular"},function(){});'
      'chrome.webRequest.onAuthRequired.addListener('
      'function(d){return {authCredentials:{username:"%s",password:"%s"}};},'
      '{urls:["<all_urls>"]},["blocking"]);') % (HOST, PORT, USER, PASS)

path = os.path.join(tempfile.mkdtemp(), "s4m_proxy.zip")
with zipfile.ZipFile(path, "w") as z:
    z.writestr("manifest.json", manifest)
    z.writestr("bg.js", bg)

opts = webdriver.ChromeOptions()
opts.add_extension(path)
driver = webdriver.Chrome(options=opts)
driver.get("https://api.ipify.org")
print("Exit IP:", driver.find_element("tag name", "body").text)
driver.quit()

# ----- Java (unauthenticated proxy) -----
// Proxy p = new Proxy();
// p.setHttpProxy("proxy.s4m.online:3128");
// ChromeOptions o = new ChromeOptions();
// o.setProxy(p);
// WebDriver driver = new ChromeDriver(o);

Scegliere il proprio approccio

Scegli in base al fatto che il proxy necessiti di credenziali.

Nessuna autenticazione? Usa il flag

Per un proxy non autenticato, aggiungi semplicemente --proxy-server=http://host:3128 a ChromeOptions, o imposta l'oggetto Proxy di Selenium. Nient'altro necessario.

Auth? Genera un'estensione

Per i proxy USER:PASS, invia una piccola estensione runtime che risponde suAuthRequired. Funziona senza interfaccia e si comporta allo stesso modo tra i vari linguaggi.

Endpoint HTTP per browser

Usa proxy.s4m.online:3128 (HTTP). SOCKS5 autenticato all'interno di un browser è inaffidabile, quindi mantieni SOCKS5 per CLI e client di libreria.

Mantieni l'estensione privata

L'estensione generata incorpora le tue credenziali in un file temporaneo. Scrivilo in una directory temporanea privata e puliscilo dopo l'esecuzione.

Affidabilità e aspettative oneste

Selenium guida un vero browser, che è sia il suo punto di forza che il suo costo: è più pesante di un client HTTP puro, quindi mantieni le sessioni mirate e chiudi i driver prontamente. Se hai bisogno solo di HTML, un client HTTP dietro un proxy è molto più economico — vedi scraping con requests. Rivolgiti a Selenium quando è necessaria la resa JavaScript o una vera interazione dell'utente.

Come sempre, un proxy cambia il tuo IP, non la tua impronta digitale. I proxy s4m sono datacenter — ideali per test funzionali, monitoraggio e scraping moderato, ma rilevabili come datacenter su siti ostili. Quando un login o una lista di autorizzazione si aspetta un indirizzo stabile, aggiungi un IP personale dedicato. Per progetti più recenti, considera Playwright, la cui autenticazione proxy nativa evita completamente la danza delle estensioni. Verifica le uscite con gli strumenti e leggi la documentazione API per automatizzare la rotazione delle credenziali.

FAQ

Domande, risposte

Perché non posso mettere USER:PASS nel flag proxy di Selenium?

Chrome ignora le credenziali nel flag --proxy-server e invece solleva un prompt di autenticazione nativa a cui un browser headless non può rispondere. La soluzione affidabile è una piccola estensione di Chrome in esecuzione che risponde a onAuthRequired con il tuo nome utente e password.

C'è un modo più semplice per i proxy non autenticati?

Sì. Senza credenziali puoi semplicemente aggiungere --proxy-server=http://host:3128 a ChromeOptions, o compilare l'oggetto Proxy di Selenium in Java. L'estensione è necessaria solo quando il proxy richiede USER:PASS.

Dovrei usare SOCKS5 o HTTP con Selenium?

Usa l'endpoint HTTP sulla porta 3128 per i browser. SOCKS5 autenticato in un browser è inaffidabile; mantieni SOCKS5 per client da riga di comando e librerie.

Sarebbe più facile Playwright?

Spesso, sì. Playwright accetta le credenziali proxy nativamente nel suo oggetto proxy, quindi salti completamente l'estensione. Selenium è ancora la scelta giusta quando il tuo progetto dipende già da esso.

Guida i browser attraverso un proxy

Proxy di data center autenticati su proxy.s4m.online, pronti per Selenium tramite un'estensione generata. Pagamento a consumo, con un'opzione IP dedicato per accessi stabili.

Le persone hanno trovato questa pagina cercando

Frasi di ricerca reali a cui questa pagina risponde — i collegamenti aprono la pagina che le tratta in dettaglio.