Inicie con un proxy y autentíquese#
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();Asigna un identificador de sesión distinto a cada flujo independiente cuando el gateway lo admita. Confirma la duración y los parámetros geográficos en los datos de conexión. Un dispositivo residencial puede desconectarse antes del plazo solicitado; una sesión persistente no garantiza la misma IP durante días. Para una dirección fija, compara productos estáticos dedicados.
Un proxy por navegador#
El parámetro de inicio --proxy-server define la ruta predeterminada del navegador. Puppeteer actual también admite proxyServer en browser.createBrowserContext(), con credenciales mediante page.authenticate(). Usa contextos distintos para configuraciones de proxy diferentes y directorios de datos separados para perfiles persistentes; verifica la salida en cada contexto.
Bloquear imágenes, fuentes y medios#
await page.setRequestInterception(true);
page.on("request", (req) => {
const t = req.resourceType();
if (["image", "media", "font", "stylesheet"].includes(t)) return req.abort();
req.continue();
});consistencia#
- conjunto
Accept-Languagey la zona horaria del país de salida:page.setExtraHTTPHeaders({\"Accept-Language\": \"de-DE,de;q=0.9\"})ypage.emulateTimezone(\"Europe/Berlin\"). - Deshabilite las fugas de WebRTC con
--force-webrtc-ip-handling-policy=disable_non_proxied_udpen los argumentos de lanzamiento. - Mantenga un navegador por cuenta; reutilice su directorio de datos de usuario si la cuenta debe parecerse a un dispositivo que regresa.
Errores que encontrarás#
| Síntoma | causa | Arreglar |
|---|---|---|
| neto::ERR_TUNNEL_CONNECTION_FAILED | La puerta de enlace rechazó CONNECT: credenciales, parámetro o sin salida | Reproducir con cURL -v para leer el código de la puerta de enlace |
| net::ERR_PROXY_AUTH_UNSUPPORTED / mensajes | autentificar() llamado después de la navegación | Llame a page.authenticate antes de ir a |
| Misma IP en todos los navegadores | Se reutiliza la misma identificación de sesión | Utilice un -sid- distinto por navegador u omítalo |
| Primera carga muy lenta | Salida del hogar y página pesada. | Bloquear recursos; aumentar el tiempo de espera a 45 s |
Preguntas que hace la gente#
¿Puede Puppeteer usar SOCKS5 con una contraseña?
Chrome no admite la autenticación SOCKS5. Utilice el proxy HTTP en el puerto 9000 con page.authenticate, o incluya la IP de su servidor en la lista blanca y pase --proxy-server=socks5://res.proxy-cyber.com:9001.