Senza KYC — niente documento, selfie o altri documenti. Paga in crypto: BTC, USDT, USDC, ETH, SOL, LTC
Lingua: Italiano
Inizia ora

Doc · Puppeteer · Chrome for Testing

Autenticazione proxy Puppeteer con proxy residenziali e proxy mobili 4G

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.

Ultimo aggiornamento: · 4 minuti di lettura

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

Indirizzo proxy--proxy-server=http://gw.crawlrelay.com:7777 in args, o proxyServer su un contesto browser
Credenzialiawait page.authenticate({ username, password }) prima della navigazione
Sessioni separatebrowser.createBrowserContext({ proxyServer }): un contesto per sessione
SOCKS5Non con autenticazione in Chrome: usa la porta HTTP
Risparmiare trafficopage.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
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
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.

Se curl funziona con nome utente e password uguali e Puppeteer no, leggi 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 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 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.

Da 0,50 USD/GB · senza KYC

Inizia ora