# Autenticazione proxy Puppeteer con proxy residenziali e proxy mobili 4G

> Autenticazione proxy Puppeteer: --proxy-server più page.authenticate(), una sessione per contesto browser, intercettazione richieste per risparmiare traffico.

- URL: https://crawlrelay.com/it/docs/puppeteer/
- Ultimo aggiornamento: 2026-10-13
- Publisher: CrawlRelay (https://crawlrelay.com)

Chrome prende l'indirizzo proxy da un flag di avvio e le credenziali da page.authenticate(). Usa un contesto browser per sessione così le credenziali non trapelano tra i lavori.

**Risposta rapida — Come uso un proxy autenticato in Puppeteer?**

Avvia Chrome con `--proxy-server=http://gw.crawlrelay.com:7777`, poi chiama `page.authenticate({ username, password })` prima della prima `goto`. Chrome ignora le credenziali scritte nel flag. I proxy residenziali **CrawlRelay** leggono il paese e la sessione sticky dal nome utente, così ogni pagina o contesto ha il proprio exit. Il traffico costa 0,50 USD/GB da 50 GB. Pagato in crypto, senza KYC.

## Configurazione Puppeteer in breve

| Attributo | Valore |
| --- | --- |
| Indirizzo proxy | `--proxy-server=http://gw.crawlrelay.com:7777` in `args`, o `proxyServer` su un contesto browser |
| Credenziali | `await page.authenticate({ username, password })` prima della navigazione |
| Sessioni separate | `browser.createBrowserContext({ proxyServer })`: un contesto per sessione |
| SOCKS5 | Non con autenticazione in Chrome: usa la porta HTTP |
| Risparmiare traffico | `page.setRequestInterception(true)` e abortisci immagini, font e media |

## Come configuro un singolo proxy autenticato?

Questo è il modello minimo. Il blocco `try … finally` chiude Chrome anche se una navigazione fallisce, cosa importante su server dove browser orfani si accumulano.

*Node.js (modulo ES): un browser, un exit*

```javascript
import puppeteer from "puppeteer";

const browser = await puppeteer.launch({
  args: ["--proxy-server=http://gw.crawlrelay.com:7777"],
});
try {
  const page = await browser.newPage();
  await page.authenticate({ username: "USERNAME-country-us", password: "PASSWORD" });
  await page.setRequestInterception(true);
  page.on("request", (req) =>
    ["image", "font", "media"].includes(req.resourceType()) ? req.abort() : req.continue()
  );
  const res = await page.goto("https://example.com/", { waitUntil: "domcontentloaded", timeout: 60000 });
  console.log(res.status(), await page.title());
} finally {
  await browser.close();
}
```

## Come gestisco più sessioni o paesi in un solo browser?

Crea un contesto browser per sessione. Un contesto è un profilo isolato con propri cookie, cache e stato rete, così le credenziali di un contesto non filtrano in un altro. Dai a ogni contesto un nome utente con il proprio paese o ID sessione.

*Node.js: un contesto per sessione sticky*

```javascript
import puppeteer from "puppeteer";
import { randomUUID } from "node:crypto";

const GATEWAY = "http://gw.crawlrelay.com:7777";
const browser = await puppeteer.launch();

async function visit(country, url) {
  const session = randomUUID().replaceAll("-", "").slice(0, 10);
  const context = await browser.createBrowserContext({ proxyServer: GATEWAY });
  try {
    const page = await context.newPage();
    await page.authenticate({
      username: `USERNAME-country-${country}-session-${session}-ttl-20`,
      password: "PASSWORD",
    });
    await page.goto(url, { waitUntil: "domcontentloaded", timeout: 60000 });
    return { country, session, ip: await page.evaluate(() => document.body.innerText.trim()) };
  } finally {
    await context.close();
  }
}

try {
  const results = await Promise.all([
    visit("us", "https://api.ipify.org"),
    visit("gb", "https://api.ipify.org"),
  ]);
  console.table(results);
} finally {
  await browser.close();
}
```

## Perché Puppeteer mostra 407 o ERR_TUNNEL_CONNECTION_FAILED?

Perché Chrome non ha inviato le credenziali o ha inviato quelle sbagliate. Controlla tre cose:

1. `page.authenticate()` si esegue **prima** della prima `goto` su quella pagina.
2. Il flag `--proxy-server` o `proxyServer` contiene solo schema, host e porta, senza parte `user:pass@`.
3. Il nome utente non ha errori nella parte di destinazione: testalo prima con curl, come mostrato nella pagina [407](https://crawlrelay.com/it/docs/errors/407-proxy-authentication-required/).

Se curl funziona con nome utente e password uguali e Puppeteer no, leggi [ERR_TUNNEL_CONNECTION_FAILED](https://crawlrelay.com/it/docs/errors/err-tunnel-connection-failed/).

## Quanto traffico consuma una pagina Puppeteer?

Tutto quello che Chrome scarica viene conteggiato: HTML, script, stili, immagini, font e chiamate API della pagina. L'HTTP Archive Web Almanac 2025 ha misurato un peso medio pagina di 2.164 KB su mobile e 2.412 KB su desktop. Bloccare immagini, font e media con intercettazione richieste di solito riduce il peso a poche centinaia di KB, e rispondere con risposte cache per script ripetuti lo taglia ancora. Usa [proxy mobili 4G rotanti](https://crawlrelay.com/it/mobile-proxies/) solo per le pagine che ne hanno bisogno: il traffico mobile costa 1,50 USD/GB da 5 GB, i proxy residenziali 0,50 USD/GB da 50 GB.

## Puppeteer e proxy: domande

### Posso mettere nome utente e password in --proxy-server?

No. Chrome ignora le credenziali nel flag `--proxy-server`, e la prima richiesta HTTPS fallisce con un 407 nascosto dietro `ERR_TUNNEL_CONNECTION_FAILED`. Metti solo `http://host:port` nel flag e passa le credenziali con `page.authenticate()` a ogni nuova pagina.

### Come faccio a cambiare IP tra pagine in Puppeteer?

Apri ogni pagina in un nuovo contesto browser, oppure dai a ogni pagina un nome utente senza ID sessione. Un contesto nuovo apre connessioni nuove, e ogni connessione nuova di solito ottiene un exit residenziale diverso. Dentro una pagina, Chrome riusa le connessioni, quindi richieste allo stesso sito spesso condividono exit fino a chiusura connessione.

### page.authenticate() funziona con intercettazione richieste?

Sì. Puppeteer gestisce da sé la sfida di autenticazione del proxy, e il tuo handler per l'intercettazione deve solo chiamare `continue()` o `abort()` su ogni richiesta. Imposta prima `authenticate()`, poi attiva l'intercettazione, come nel primo esempio.

### Conviene usare plugin stealth di puppeteer-extra con proxy?

Non documentiamo né supportiamo tool pensati per nascondere l'automazione o bypassare i controlli bot. Il loro scopo è aggirare i filtri anti-automazione dei siti, cosa che la nostra [Acceptable Use Policy](https://crawlrelay.com/it/acceptable-use/) non permette. Visualizza pagine pubbliche con moderazione e usa API ufficiali quando disponibili.

### Quale Chrome usa Puppeteer con il proxy?

Le versioni recenti di Puppeteer scaricano una build matching di Chrome for Testing e la usano per default. I flag proxy e `page.authenticate()` funzionano in modo identico rispetto a Chrome normale. Se punti Puppeteer a un tuo Chrome con `executablePath`, mantieni quel browser aggiornato.

**Usa Puppeteer con proxy residenziali** 5,94 USD per 10 GB, 0,50 USD/GB da 50 GB. [Vedi i prezzi](https://crawlrelay.com/it/pricing/) · [Guida Node.js](https://crawlrelay.com/it/docs/node/)

---

CrawlRelay: CrawlRelay è un servizio di proxy residenziali rotanti e proxy mobili 4G/5G primo per sviluppatori: traffico pay-as-you-go senza scadenza da 0,50 USD/GB, pagato in crypto, senza caricamento documenti. Senza KYC — niente documento, selfie o altri documenti. Paga in crypto.
