# Proxy in Selenium: Chrome e Firefox con un IP ISP statico | ProxyJam

Come impostare un proxy in Selenium per Chrome e Firefox, perché le credenziali in --proxy-server non funzionano e come le sostituisce la whitelist IP. Codice Python testato.

- Canonical: https://proxyjam.com/it/integrations/selenium/
- Updated: 2026-10-23
- Language: it

Esegui Chrome o Firefox con Selenium tramite un indirizzo ISP statico. Ogni esempio di questa pagina è stato eseguito su un proxy locale prima della pubblicazione, e ciò che non ha funzionato è detto chiaramente.


In Chrome, passa `--proxy-server=http://HOST:PORT` come argomento; in Firefox, imposta un Proxy manuale nelle opzioni. Firefox può rispondere alla richiesta di password del proxy tramite l’handler WebDriver BiDi di Selenium, `add_authentication_handler`. Chrome nel nostro test non ci è riuscito: ignora le credenziali in `--proxy-server`, ed entrambi gli handler BiDi sono andati in timeout. Per Chrome, metti nella whitelist del proxy l’IP da cui girano i tuoi test, e il proxy non ha bisogno di credenziali, né in HTTP né in SOCKS5.


## Impostare un proxy in Selenium

1. **Trova l’IP pubblico da cui girano i tuoi test** L’indirizzo della macchina o del runner CI così come lo vede internet, non quello locale. [What Is My IP](/it/what-is-my-ip/) lo mostra.
2. **Metti quell’IP nella whitelist del proxy** Una chiamata API, `PUT /orders/ORDER_ID/whitelist`, oppure lo strumento `set_proxy_whitelist` del server MCP; la dashboard non ha ancora un comando per farlo. La whitelist accetta indirizzi IPv4 e sostituisce la lista a ogni chiamata. Finché una whitelist è impostata, il proxy ammette solo gli indirizzi della lista e nome utente e password smettono di funzionare per quell’ordine; inviando una lista vuota la whitelist si disattiva e l’accesso con password torna a funzionare.
3. **Copia host e porta dall’ordine** Da I miei proxy oppure dall’API. Con la whitelist impostata, nome utente e password non servono.
4. **Imposta il proxy nelle opzioni del browser** Chrome: `--proxy-server=http://HOST:PORT`, oppure `socks5://HOST:PORT` dopo aver passato il proxy a SOCKS5. Firefox: un `Proxy` manuale con `httpProxy` e `sslProxy`.
5. **Apri una pagina e controlla l’indirizzo di uscita** Carica una volta What Is My IP nel browser pilotato e verifica che mostri l’indirizzo che hai acquistato, poi esegui la suite.

## Codice testato per Selenium 4 in Python

L’esempio Firefox con password invia nome utente e password, quindi richiede un ordine senza whitelist impostata. Gli altri esempi per browser presuppongono che l’IP della tua macchina sia nella whitelist del proxy; quello SOCKS5 richiede anche di passare prima il proxy a SOCKS5, il che dà una nuova porta. Sostituisci i valori in maiuscolo con quelli del tuo ordine, e ORDER_ID, YOUR_API_KEY e YOUR_IP nella chiamata della whitelist.

### Chrome

Chrome tramite un proxy HTTP.

```
# The proxy has your machine's IP on its whitelist, so no credentials
# are sent: Chrome ignores them in --proxy-server anyway.
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # remove to watch the browser
options.add_argument("--proxy-server=http://HOST:PORT")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Firefox con password

Firefox risponde alla richiesta di password del proxy.

```
# Selenium 4.51+ with WebDriver BiDi; pip install selenium
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

options = webdriver.FirefoxOptions()
options.enable_bidi = True
options.add_argument("-headless")  # remove to watch the browser
options.proxy = Proxy({
    "proxyType": ProxyType.MANUAL,
    "httpProxy": "HOST:PORT",
    "sslProxy": "HOST:PORT",
})

driver = webdriver.Firefox(options=options)
try:
    # Answers the proxy's 407 with your username and password
    driver.network.add_authentication_handler(
        lambda request: request.provide_credentials("USERNAME", "PASSWORD")
    )
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Firefox

Firefox tramite un proxy HTTP in whitelist.

```
# The proxy has your machine's IP on its whitelist, so no credentials
# are sent. For a password instead, see selenium-firefox-auth.
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

options = webdriver.FirefoxOptions()
options.add_argument("-headless")  # remove to watch the browser
options.proxy = Proxy({
    "proxyType": ProxyType.MANUAL,
    "httpProxy": "HOST:PORT",
    "sslProxy": "HOST:PORT",
})

driver = webdriver.Firefox(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Chrome SOCKS5

Chrome tramite un proxy SOCKS5.

```
# Switch the proxy to SOCKS5 first, then use the port the order shows.
# The whitelist applies to SOCKS5 as well, so no credentials here either.
from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")  # remove to watch the browser
options.add_argument("--proxy-server=socks5://HOST:PORT")

driver = webdriver.Chrome(options=options)
try:
    driver.get("https://example.com/")
    print(driver.title)
finally:
    driver.quit()
```

### Chiamata whitelist

Aggiungi il tuo IP alla whitelist del proxy.

```
# Put the public IPv4 address your code runs from on the proxy's
# whitelist. Replaces the list; an empty list turns whitelisting off
# and the proxy falls back to username and password.
curl -X PUT "https://api.proxyjam.com/public/v1/orders/ORDER_ID/whitelist" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"whitelisted_ips": ["YOUR_IP"]}'
```


## Opzioni proxy in Selenium, browser per browser

|  | Proxy HTTP | Proxy SOCKS5 | Nome utente e password |
|---|---|---|---|
| Chrome | --proxy-server=http://HOST:PORT | --proxy-server=socks5://HOST:PORT | Ignorati in --proxy-server; usa la whitelist |
| Firefox | Proxy con httpProxy e sslProxy | Proxy con socksProxy e socksVersion 5 | Ha funzionato tramite add_authentication_handler (BiDi), in HTTP |
| Chrome, handler BiDi | add_auth_handler e add_authentication_handler sono andati entrambi in timeout | Non testato | Usa la whitelist finché una versione successiva di Selenium o di Chrome non cambierà le cose |

Testato il 2026-10-22 con Selenium 4.51, Chrome e Firefox in modalità headless, su un proxy locale che richiedeva una password su una porta e accettava un client in whitelist su un’altra.


## Che cosa ottiene dall’indirizzo un test nel browser

- **Nessuna password nel browser:** La whitelist ammette l’indirizzo IPv4 del tuo runner, quindi nessun segreto finisce nelle opzioni o nei log
- **Entrambi gli schemi del browser:** http:// per le pagine normali, socks5:// dopo il passaggio dell’ordine
- **Stessa origine a ogni esecuzione:** L’esecuzione di ieri e quella di oggi partono da un unico IP, mantenuto per l’intero periodo di fatturazione
- **Driver in parallelo:** Più driver possono condividere l’indirizzo, oppure ogni driver può averne uno proprio

## Che cosa va storto con Selenium e i proxy

### Credenziali dentro --proxy-server

Chrome scarta nome utente e password da quell’argomento senza alcun errore, si collega senza di essi e riceve un 407 dal proxy. La pagina allora non si carica, e sembra un problema di rete anziché di autenticazione.

### Il download del driver passa dal proxy

Quando le opzioni di Firefox contengono un proxy, Selenium Manager scarica il driver tramite quello stesso proxy. Con un proxy solo a password quel download fallisce prima che il browser parta; con la whitelist va a buon fine.

### La whitelist contiene l’indirizzo sbagliato

Un runner CI esce spesso da un IP pubblico diverso da quello del tuo portatile, e alcuni lo cambiano tra un’esecuzione e l’altra. Metti in whitelist l’indirizzo da cui girano i test, e aggiornalo quando cambia, perché ogni chiamata sostituisce la lista.

### SOCKS5 nel browser prima del passaggio

Un indirizzo impostato su HTTP non risponde in SOCKS5. Passa prima il proxy a SOCKS5 sul tuo ordine e usa la porta che mostra a quel punto; cambiare solo lo schema nell’argomento dà un browser che non riesce a collegarsi.


## Domande sui proxy in Selenium

### Come si usa un proxy con autenticazione in Selenium?

In Firefox, attiva WebDriver BiDi e registra con driver.network.add_authentication_handler un handler che fornisca nome utente e password; con Selenium 4.51 ha funzionato. In Chrome, nel nostro test, non ha funzionato nulla che invii credenziali: le ignora nello switch del proxy, ed entrambi gli handler BiDi sono andati in timeout. Per Chrome, metti in whitelist l’IP pubblico da cui girano i tuoi test, e il browser si collega senza alcuna credenziale.

### Come si imposta un proxy in Selenium con Python per Chrome?

Crea ChromeOptions, aggiungi l’argomento --proxy-server=http://HOST:PORT e passa le opzioni a webdriver.Chrome. Per SOCKS5, passa il proxy a SOCKS5 sul tuo ordine e usa socks5://HOST:PORT con la porta che l’ordine mostra a quel punto.

### La whitelist IP funziona con SOCKS5?

Sì. Un indirizzo in whitelist viene accettato senza credenziali in HTTP e in SOCKS5, ed è questo che rende SOCKS5 utilizzabile da Chrome, dato che Chrome non può inviare nome utente e password SOCKS5. La whitelist si imposta tramite l’API o il server MCP e accetta indirizzi IPv4.

### Ogni browser di una suite di test può usare un proxy diverso?

Sì, uno per driver: il proxy fa parte delle opzioni con cui parte un driver, quindi due driver possono usare due indirizzi. Non è possibile cambiare il proxy di un Chrome in esecuzione; avvia invece un nuovo driver.

### Una suite lunga cambierà indirizzo a metà strada?

No. Il driver mantiene l’indirizzo con cui è partito finché non si chiude, e l’indirizzo stesso resta assegnato a te per l’intero periodo di fatturazione. Le suite che hanno bisogno di molte origini contemporaneamente richiederebbero un pool che le cambia, e non è ancora in vendita.

### Per che cosa posso usare il proxy?

I test end-to-end del tuo prodotto, i controlli regionali del tuo negozio online, la verifica degli annunci, le ricerche di prezzo e la tutela del marchio si svolgono tutti senza revisione preventiva secondo la nostra politica di utilizzo accettabile. Pilotare un browser per superare CAPTCHA, difese anti-bot, limiti di frequenza o ban degli account è un’altra questione: l’indirizzo non lo fa, e la politica vieta di provarci.


Un indirizzo statico rende ripetibili i test nel browser: la stessa suite, eseguita la settimana prossima, arriva dallo stesso punto, quindi una variazione nel risultato viene dal sito. Ordina un indirizzo dalla [pagina dei proxy ISP](/it/isp-proxies/), consulta la [pagina dei prezzi](/it/pricing/) e imposta lo stesso indirizzo nelle semplici chiamate HTTP con la guida per [Python requests](/it/integrations/python-requests/).



## Fonti

- [Selenium documentation, Proxy](https://www.selenium.dev/documentation/webdriver/drivers/options/#proxy): come impostare un proxy nelle opzioni del browser
- [Selenium documentation, Selenium Manager](https://www.selenium.dev/documentation/selenium_manager/): come vengono scaricati i driver, e il fatto che per farlo si usa il proxy configurato
- [Chromium, network settings](https://www.chromium.org/developers/design-documents/network-settings/): lo switch `--proxy-server` e i suoi schemi




Selenium non instrada il traffico da solo: avvia un browser e gli consegna il proxy come parte delle sue opzioni. Per questo la risposta cambia tra Chrome e Firefox, e per questo l’autenticazione del proxy è il punto in cui falliscono la maggior parte delle configurazioni.

## Proxy in Selenium con Python per Chrome e Firefox

Chrome legge il proxy da uno switch della riga di comando, Firefox da un oggetto proxy nelle sue opzioni. Entrambi accettano un proxy in whitelist senza altre impostazioni; Firefox può anche rispondere alla richiesta di password del proxy tramite WebDriver BiDi, cosa che Chrome nel nostro test non ha fatto.

