Integrazioni · Intermedio

Utilizzo dei proxy con Puppeteer e Chrome senza testa

Imposta un proxy all'avvio del browser o in un contesto del browser Puppeteer supportato, quindi fornisci le credenziali prima della navigazione. Controlla l'uscita assegnata all'interno di ciascun contesto e mantieni flussi di lavoro indipendenti in sessioni separate.

2 minuti di lettura 5 sezioni Verificato Redazione Proxy Cyber

Avvia con un proxy ed esegui l'autenticazione#

Node.js
import puppeteer from "puppeteer";

const browser = await puppeteer.launch({
  headless: true,
  args: ["--proxy-server=http://res.proxy-cyber.com:9000", "--no-first-run"],
});
const page = await browser.newPage();
await page.authenticate({ username: "USER-cc-us-sid-run1-ttl-30m", password: "PASS" });

await page.goto("https://api.ipify.org", { waitUntil: "domcontentloaded", timeout: 45000 });
console.log(await page.evaluate(() => document.body.innerText));
await browser.close();

Utilizza un identificatore di sessione distinto per ciascun flusso di lavoro indipendente, laddove il gateway assegnato lo supporti. Conferma la durata consentita e i parametri di posizione nei dettagli della connessione. Un dispositivo residenziale può disconnettersi prima della durata richiesta; una sessione persistente non è garanzia dello stesso IP per giorni. Per un indirizzo fisso, confronta un prodotto statico dedicato.

Un proxy per browser#

L'impostazione --proxy-server a livello di lancio si applica al routing predefinito di quel browser. L'attuale Puppeteer supporta anche proxyServer in browser.createBrowserContext(), con credenziali fornite tramite page.authenticate(). Utilizzare contesti separati per impostazioni proxy diverse e directory di dati utente separate per profili persistenti; verificare l'uscita all'interno di ciascun contesto.

Blocca immagini, caratteri e contenuti multimediali#

Richiedi intercettazione
await page.setRequestInterception(true);
page.on("request", (req) => {
  const t = req.resourceType();
  if (["image", "media", "font", "stylesheet"].includes(t)) return req.abort();
  req.continue();
});

Coerenza#

  • Impostato Accept-Language e il fuso orario del paese di uscita: page.setExtraHTTPHeaders({\"Accept-Language\": \"de-DE,de;q=0.9\"}) e page.emulateTimezone(\"Europe/Berlin\").
  • Disabilita le perdite WebRTC con --force-webrtc-ip-handling-policy=disable_non_proxied_udp negli argomenti di lancio.
  • Mantieni un browser per account; riutilizzare la directory dei dati utente se l'account dovesse assomigliare a un dispositivo di ritorno.

Errori che incontrerai#

SintomoCausaCorreggi
net::ERR_TUNNEL_CONNECTION_FAILEDIl gateway ha rifiutato la CONNECT: credenziali, parametri o nessuna uscitaRiprodurre con cURL -v per leggere il codice del gateway
net::ERR_PROXY_AUTH_UNSUPPORTED / richiedeauthenticate() chiamato dopo la navigazioneChiama page.authenticate prima di andare a
Stesso IP in ogni browserStesso ID sessione riutilizzatoUtilizzare un -sid- distinto per browser oppure ometterlo
Primo caricamento molto lentoUscita domestica più pagina pesanteBloccare le risorse; aumentare il timeout a 45 s

Domande che le persone fanno#

Puppeteer può utilizzare SOCKS5 con una password?

Chrome non supporta l'autenticazione SOCKS5. Utilizza il proxy HTTP sulla porta 9000 con page.authenticate o inserisci nella whitelist l'IP del tuo server e passa --proxy-server=socks5://res.proxy-cyber.com:9001.

Il tuo conto

Gestisci i tuoi proxy in un unico account

Confronta reti, effettua ordini e segui il tuo saldo e le richieste di supporto da un'unica dashboard. Il nostro team esamina i pagamenti e fornisce i dettagli di connessione dopo la consegna.

Crea un account