# Proxy in Playwright: configurazione con autenticazione, Python e Node | ProxyJam

Come impostare un proxy in Playwright per browser o per contesto, con nome utente e password in HTTP, e perché SOCKS5 richiede la whitelist IP. Codice testato.

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

Dai a Playwright un indirizzo ISP statico, all’avvio o per un singolo contesto del browser. Gli esempi sono stati eseguiti in Chromium, Firefox e WebKit su un proxy locale prima della pubblicazione.


Passa proxy con server, username e password a chromium.launch, oppure a browser.new_context per limitarlo a un contesto. In HTTP, tutti e tre i motori si autenticano con quei campi. In SOCKS5 nessuno di essi accetta nome utente e password: Playwright si rifiuta di avviarsi. Metti il tuo IP nella whitelist del proxy e indica solo il server socks5://.


## Impostare un proxy in Playwright

1. **Copia host, porta, nome utente e password** Da I miei proxy nella dashboard oppure dall’ordine nell’API. Ogni indirizzo ha i suoi quattro valori.
2. **Scegli l’ambito** Con `launch` è l’intero browser a usare il proxy. Con `new_context` lo usa solo quel contesto, quindi uno stesso script può far girare più contesti tramite indirizzi diversi.
3. **Passa l’oggetto proxy** `{"server": "http://HOST:PORT", "username": "USERNAME", "password": "PASSWORD"}`. Le credenziali vanno nei loro campi, mai dentro l’URL del server.
4. **Passi a SOCKS5? Togli le credenziali** Playwright non può autenticarsi su un proxy SOCKS5, quindi passa l’ordine a SOCKS5, ammetti l’IP della tua macchina con la chiamata whitelist delle schede del codice e lascia solo `socks5://HOST:PORT`, con la nuova porta. 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.
5. **Verifica l’indirizzo di uscita** Apri una volta [What Is My IP](/it/what-is-my-ip/) in una pagina di quel browser o contesto, prima dell’esecuzione vera.

## Codice testato per Playwright

Eseguito con Playwright 1.64 per Python e per Node. Gli esempi HTTP inviano nome utente e password e richiedono un ordine senza whitelist impostata; quello SOCKS5 si basa sulla whitelist e richiede di passare prima il proxy a SOCKS5, il che dà una nuova porta. Sostituisci i valori in maiuscolo con quelli del tuo ordine.

### Python

Proxy per l’intero browser, Python.

```
# pip install playwright && playwright install chromium
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://HOST:PORT",
        "username": "USERNAME",
        "password": "PASSWORD",
    })
    page = browser.new_page()
    page.goto("https://example.com/")
    print(page.title())
    browser.close()
```

### Node.js

Proxy per l’intero browser, Node.

```
// npm i playwright && npx playwright install chromium
const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({
    proxy: {
      server: 'http://HOST:PORT',
      username: 'USERNAME',
      password: 'PASSWORD',
    },
  });
  const page = await browser.newPage();
  await page.goto('https://example.com/');
  console.log(await page.title());
  await browser.close();
})();
```

### Per contesto

Proxy per un contesto del browser.

```
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    # The proxy belongs to this context only; another context can use
    # a different address, or none.
    context = browser.new_context(proxy={
        "server": "http://HOST:PORT",
        "username": "USERNAME",
        "password": "PASSWORD",
    })
    page = context.new_page()
    page.goto("https://example.com/")
    print(page.title())
    browser.close()
```

### SOCKS5

SOCKS5 con un IP in whitelist.

```
# Switch the proxy to SOCKS5 and put your machine's IP on its whitelist:
# Chromium cannot send a SOCKS5 username and password.
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={"server": "socks5://HOST:PORT"})
    page = browser.new_page()
    page.goto("https://example.com/")
    print(page.title())
    browser.close()
```

### 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"]}'
```


## Che cosa accetta ciascun browser di Playwright

|  | HTTP con password | SOCKS5 con password | SOCKS5, in whitelist |
|---|---|---|---|
| Chromium | Funziona | Rifiutato all’avvio | Funziona |
| Firefox | Funziona | Rifiutato all’avvio | Funziona |
| WebKit | Funziona | Rifiutato all’avvio | Funziona |

Testato il 2026-10-22 con Playwright 1.64 per Python su macOS: ogni motore è stato avviato su un proxy locale che richiedeva una password e su uno che ammetteva un client in whitelist. Rifiutato significa che Playwright si è fermato all’avvio con un errore.


## Come si inserisce l’indirizzo nel modello di Playwright

- **Un contesto, un indirizzo:** Ogni contesto del browser può avere il suo IP statico, dal suo ordine
- **Accesso HTTP:** Campi username e password, accettati da Chromium, Firefox e WebKit
- **Accesso SOCKS5:** Solo tramite indirizzo IPv4 in whitelist, impostato tramite l’API o l’MCP
- **Stabilità:** L’IP resta lo stesso tra un’esecuzione e l’altra per l’intero periodo che hai pagato

## Che cosa va storto con i proxy in Playwright

### Credenziali nella stringa del server

Playwright legge nome utente e password dai loro campi. Se li scrivi invece nell’URL del server, non vengono inviati affatto: nel nostro test la prima navigazione è rimasta bloccata fino al timeout, senza alcun messaggio che indicasse le credenziali.

### Una password SOCKS5

Tutti i motori rifiutano l’autenticazione SOCKS5, e l’errore arriva all’avvio, prima che si apra qualsiasi pagina. La soluzione non è un’altra libreria: metti in whitelist l’IP da cui gira il tuo script e togli le credenziali.

### Aspettarsi che new_page cambi l’indirizzo

Le pagine condividono il proxy del loro contesto, e i contesti condividono quello del browser a meno che non ne abbiano uno proprio. Per usare due indirizzi in parallelo, crea due contesti, ciascuno con il suo proxy.

### Saltare il controllo dell’uscita

Un errore di battitura nella porta o un proxy ancora impostato su HTTP falliscono in modo evidente, ma un contesto creato senza l’oggetto proxy esce direttamente e in silenzio. Carica una pagina che restituisce l’IP una volta per ogni contesto che configuri.


## Domande sui proxy in Playwright

### Come si imposta un proxy con autenticazione in Playwright?

Passa un oggetto con server, username e password, a launch oppure a new_context. Con un proxy HTTP, Chromium, Firefox e WebKit inviano tutti quelle credenziali quando il proxy le chiede.

### Posso usare un proxy SOCKS5 con password in Playwright?

No. Playwright si ferma all’avvio con un errore che dice che il browser non supporta l’autenticazione dei proxy SOCKS5, in tutti e tre i motori. Metti in whitelist l’IP da cui gira il tuo script, poi passa solo il server socks5; la nostra whitelist vale in SOCKS5 come in HTTP.

### Come si usa un proxy diverso per ogni pagina?

Dai a ogni contesto del browser il suo proxy e apri la pagina in quel contesto. Le pagine dentro un contesto ne condividono sempre il proxy, quindi un proxy per pagina significa un contesto per pagina.

### La configurazione è la stessa in Python e in Node?

Lo stesso oggetto con gli stessi tre campi: Python lo scrive come dizionario, Node come oggetto letterale. Entrambi gli esempi di questa pagina sono stati eseguiti con Playwright 1.64.

### Posso usare il proxy per lo scraping?

I test delle tue pagine per regione, i controlli di qualità, la verifica degli annunci, le ricerche di prezzi e di mercato, il monitoraggio SEO e la tutela del marchio si svolgono senza revisione preventiva secondo la nostra politica di utilizzo accettabile. La sola disponibilità pubblica non autorizza a raccogliere dati, i dati personali richiedono una base giuridica dichiarata, e l’indirizzo non supera CAPTCHA, rilevamento dei bot, limiti di frequenza o ban; la politica vieta di provarci.


Contesti e indirizzi statici corrispondono uno a uno: un contesto per mercato o per lavoro, ciascuno che raggiunge la destinazione dallo stesso IP, invariato, a ogni esecuzione dello script. Acquista tanti indirizzi quanti sono i contesti che fai girare dalla [pagina dei proxy ISP](/it/isp-proxies/), confronta i piani nella [pagina dei prezzi](/it/pricing/) e scarica senza browser con la guida per [Python requests](/it/integrations/python-requests/).



## Fonti

- [Playwright documentation, Network: HTTP proxy](https://playwright.dev/python/docs/network#http-proxy): l’opzione proxy all’avvio e per contesto
- [Playwright API, BrowserType.launch](https://playwright.dev/python/docs/api/class-browsertype#browser-type-launch): i campi server, bypass, username e password
- [RFC 1929, Username/Password Authentication for SOCKS V5](https://www.rfc-editor.org/rfc/rfc1929): l’accesso SOCKS5 che i browser non implementano




Playwright pilota Chromium, Firefox e WebKit con un’unica API, e il proxy fa parte del modo in cui si crea un browser o un contesto. Questo rende facile usare più indirizzi in un solo script, ed è anche il punto in cui si trova il suo unico limite rigido: SOCKS5 con password.

## Proxy in Playwright con Python

L’esempio Python avvia Chromium con il proxy per l’intero browser; l’esempio per contesto lo limita invece a un solo contesto. Per cambiare motore basta sostituire chromium con firefox o webkit; l’oggetto proxy resta lo stesso.

## Autenticazione del proxy in Playwright

I tre motori rispondono al 407 del proxy con nome utente e password presi dall’oggetto proxy quando il proxy parla HTTP. Un proxy SOCKS5 non riceve questa risposta da nessuno di essi, ed è per questo che l’esempio SOCKS5 non contiene credenziali e si basa sulla whitelist.

## Proxy per pagina in Playwright, e bypass

Non si può associare un proxy a una singola pagina. L’unità è il contesto: crea un contesto per indirizzo e apri al suo interno le pagine che devono condividere quell’indirizzo. In Playwright i contesti costano poco, quindi uno script che controlla un negozio online da tre paesi tiene aperti tre contesti, ciascuno creato dal suo ordine.

L’oggetto proxy accetta anche un campo bypass, un elenco di host separati da virgole da raggiungere direttamente. Usalo per i tuoi servizi interni o per un server di test locale, così che esca tramite l’indirizzo che paghi solo il traffico destinato al mondo esterno.

