Avvia con un proxy ed esegui l'autenticazione#
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#
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-Languagee il fuso orario del paese di uscita:page.setExtraHTTPHeaders({\"Accept-Language\": \"de-DE,de;q=0.9\"})epage.emulateTimezone(\"Europe/Berlin\"). - Disabilita le perdite WebRTC con
--force-webrtc-ip-handling-policy=disable_non_proxied_udpnegli 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#
| Sintomo | Causa | Correggi |
|---|---|---|
| net::ERR_TUNNEL_CONNECTION_FAILED | Il gateway ha rifiutato la CONNECT: credenziali, parametri o nessuna uscita | Riprodurre con cURL -v per leggere il codice del gateway |
| net::ERR_PROXY_AUTH_UNSUPPORTED / richiede | authenticate() chiamato dopo la navigazione | Chiama page.authenticate prima di andare a |
| Stesso IP in ogni browser | Stesso ID sessione riutilizzato | Utilizzare un -sid- distinto per browser oppure ometterlo |
| Primo caricamento molto lento | Uscita domestica più pagina pesante | Bloccare 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.