Guida a Puppeteer · 2 min di lettura

Impostazione del proxy Puppeteer con autenticazione

Puppeteer prende il server proxy come flag di avvio, ma il nome utente e la password vanno da un'altra parte — tramite page.authenticate(). Ecco il modello corretto per i proxy s4m autenticati, con codice Node completo.

Perché il solo flag non è sufficiente

Chromium — the browser Puppeteer drives — accepts a proxy through the --proxy-server command-line flag. The catch is that Chromium's flag format does not accept credentials inline: you cannot write --proxy-server=http://USER:PASS@host:3128 and expect it to work. When the proxy challenges for authentication, Chromium raises a native auth prompt that a headless browser cannot answer on its own.

Puppeteer's answer is page.authenticate({ username, password }). You pass the bare host and port to the launch flag, then hand the credentials to the page, and Puppeteer responds to the proxy's 407 Proxy Authentication Required challenge for you. With s4m that means launching with --proxy-server=http://proxy.s4m.online:3128 and authenticating with your USER:PASS. The HTTP endpoint (port 3128) is the right one here — Chromium's proxy flag speaks HTTP and SOCKS, but authenticated SOCKS5 with a browser is fiddly, so HTTP is the reliable choice. See the proxy overview and the proxy authentication guide.

Avvio autenticato di Puppeteer

L'host del proxy va nel flag di avvio; USER:PASS passa attraverso page.authenticate(). Sostituisci le credenziali prima di eseguire.

javascript
// npm install puppeteer
const puppeteer = require("puppeteer");

const HOST = "proxy.s4m.online";
const PORT = 3128;             // HTTP proxy endpoint
const USER = "USER";
const PASS = "PASS";

(async () => {
  const browser = await puppeteer.launch({
    headless: "new",
    args: [
      `--proxy-server=http://${HOST}:${PORT}`,
      // credentials are NOT allowed here — see page.authenticate below
      "--no-sandbox",
    ],
  });

  const page = await browser.newPage();

  // This answers the proxy's 407 challenge:
  await page.authenticate({ username: USER, password: PASS });

  await page.goto("https://api.ipify.org?format=json", {
    waitUntil: "networkidle0",
    timeout: 30000,
  });
  console.log("Exit IP:", await page.evaluate(() => document.body.innerText));

  await browser.close();
})();

Cose che confondono le persone

Gli errori che si trasformano in una pagina bianca o in un 407.

Le credenziali vanno alla pagina

Non inserire mai USER:PASS in --proxy-server; Chromium lo ignora. Chiama sempre page.authenticate() prima della tua prima navigazione, una volta per pagina.

Usa l'endpoint HTTP

SOCKS5 autenticato in un browser è inaffidabile. Indica --proxy-server a http://proxy.s4m.online:3128 e lascia che page.authenticate gestisca il login.

Autenticati prima di andare

Chiama page.authenticate() prima di page.goto(), altrimenti la prima richiesta colpisce il proxy senza credenziali e restituisce 407.

Un contesto, un'identità

Ogni contesto del browser porta la propria autenticazione. Per più identità, avvia contesti separati piuttosto che ri-autenticare una pagina condivisa.

Blocchi, impronte digitali e onestà

Un proxy nasconde il tuo IP; non nasconde che stai automatizzando un browser. I moderni sistemi anti-bot esaminano anche le proprietà del navigatore, i tempi e le impronte TLS. Se un obiettivo segnala Chromium headless, un proxy da solo non risolverà il problema — potresti aver bisogno di impostazioni di viewport e User-Agent realistiche e di un ritmo simile a quello umano, e anche in quel caso alcuni siti sono semplicemente off-limits per l'automazione.

Sii onesto anche riguardo al tipo di proxy: i proxy s4m sono datacenter, che è perfetto per testare, monitorare e siti moderatamente difesi, ma gli obiettivi fortemente difesi potrebbero bloccare gli intervalli dei datacenter. Quando hai bisogno di un'uscita stabile per un login o una lista di autorizzazione, aggiungi un IP personale dedicato. Preferisci Playwright? Il modello è quasi identico — consulta la guida ai proxy di Playwright. Verifica la tua uscita con i strumenti e prototipa contro la lista di proxy gratuita.

FAQ

Domande, risposte

Perché la mia richiesta Puppeteer restituisce 407?

Perché il proxy sta richiedendo l'autenticazione e non hai risposto. Chiama page.authenticate({ username, password }) prima del tuo primo page.goto() — le credenziali nel flag --proxy-server vengono ignorate da Chromium.

Puppeteer può utilizzare un proxy SOCKS5?

Il flag proxy di Chromium può puntare a SOCKS, ma SOCKS5 autenticato in un browser è inaffidabile. Usa l'endpoint HTTP sulla porta 3128 con page.authenticate() per una configurazione affidabile.

Devo autenticare ogni pagina?

Sì — chiama page.authenticate() una volta per pagina (o per contesto del browser) prima di navigare. Ogni contesto porta le proprie credenziali.

Un proxy mi impedirà di essere rilevato come un bot?

No. Un proxy cambia solo il tuo IP. I sistemi anti-bot ispezionano anche le impronte e il comportamento del browser, quindi un proxy è necessario ma non sufficiente contro la rilevazione aggressiva.

Esegui Chrome headless dietro un proxy

Proxy di datacenter autenticati su proxy.s4m.online, pronti per page.authenticate() di Puppeteer. Pagamento a consumo, con un IP dedicato opzionale 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.