Puppeteer Navegador de Huellas Dactilares no Detectadas Con Scrapeless
Scraping and Proxy Management Expert
TL;DR:
- Puppeteer ya habla el Protocolo de Chrome DevTools, así que
puppeteer.connect()lo conecta a Scrapeless con una URL. Intercambia unpuppeteer.launch()local por una conexión al navegador en la nube y cada script se ejecuta con una identidad limpia. - Un navegador local de Puppeteer filtra automatización en tres ejes: la bandera
navigator.webdriver, una huella digital predeterminada sin cabeza, y tu propia IP de salida. Los sistemas anti-bot puntúan los tres juntos. - El Navegador de Scraping de Scrapeless responde a los tres del lado del servidor: Chromium real desarrollado internamente, una huella digital consistente por sesión sin indicación de
webdriver, y salida residencial en más de 195 países. - Tu código de Puppeteer permanece sin cambios.
page.goto,page.evaluate, selectores y esperas se comportan exactamente como lo hacen localmente; solo la línea de conexión se desplaza. - Verificado en vivo: una sesión de
puppeteer.connect()leyónavigator.webdrivercomofalse, reportó una IP de salida residencial de EE. UU. y devolvió el título real de la página objetivo. - Gratis para comenzar. Las nuevas cuentas de Scrapeless incluyen tiempo de ejecución gratuito para el Navegador de Scraping: regístrate en app.scrapeless.com.
Introducción: conectar Puppeteer a un navegador que lee limpio
Puppeteer controla un Chromium real a través del Protocolo de DevTools. Lanza ese Chromium en tu propia máquina y cada script hereda las señales que hacen que la automatización sea obvia: se anuncia a sí mismo a través de la propiedad navigator.webdriver, envía fuentes y comportamientos de canvas predeterminados sin cabeza, y sale desde una IP que los servicios de reputación ya reconocen.
Puedes parchear cada uno de esos con un complemento de sigilo y luego seguir parcheando a medida que Chromium y los detectores se mueven. Hay un camino más corto. Puppeteer se conecta a cualquier navegador que exponga un punto final de DevTools a través de puppeteer.connect(), y el Navegador de Scraping de Scrapeless es un punto final del Protocolo de Chrome DevTools alcanzado a través de una URL de WebSocket. Apunta Puppeteer a él y la huella digital, la superficie de comportamiento y la IP de salida se mueven del lado del servidor: tu script permanece donde está.
Lo que puedes hacer con ello
- Ejecutar scripts contra sitios protegidos por anti-bot: el navegador en la nube despeja los desafíos durante la renderización, así que
page.gotoalcanza el contenido. - Localiza la sesión: fija
proxyCountrypara que una página se resuelva como la ve un visitante en ese mercado. - Envía una huella digital consistente: pasa un objeto de
fingerprintpara que el agente de usuario, la plataforma, la pantalla y la zona horaria se mantengan coherentes. - Persistir el estado de inicio de sesión: lleva un
profileIdpara que las cookies y el almacenamiento local sobrevivan entre ejecuciones. - Escala más allá de tu máquina: las sesiones se ejecutan en la nube, no en tu laptop.
- Mantén la automatización idéntica:
page.evaluate, selectores, clics y esperas no cambian.
Por qué el Navegador de Scraping de Scrapeless
El Navegador de Scraping de Scrapeless es un navegador en la nube personalizable, anti-detección, diseñado para rastreadores web y agentes de IA. Para Puppeteer específicamente, aporta:
- Chromium real desarrollado internamente que ejecuta JavaScript de página exactamente como Chrome, por lo que las SPA y los desafíos se resuelven.
- Una huella digital consistente por sesión: sin indicaciones de
navigator.webdriver, sin filtraciones de predeterminados sin cabeza. - Salida residencial en más de 195 países, seleccionada por sesión con un solo valor de
proxyCountry. - Persistencia de sesión a través de
profileId, por lo que un flujo autenticado conserva su estado. - Una superficie de conexión: cada opción es un parámetro de consulta en el mismo punto final de WebSocket.
Obtén tu clave API en el plan gratuito en app.scrapeless.com.
Requisitos previos
- Node.js 18 o superior
puppeteer-coreinstalado (no se necesita Chromium empaquetado: te conectas a uno remoto)- Una cuenta de Scrapeless y clave API: regístrate en app.scrapeless.com
Los detalles completos de conexión se encuentran en la documentación del Navegador de Scraping.
Instalar
Usa puppeteer-core: se envía sin una descarga local de Chromium, ya que el navegador vive en la nube.
bash
npm install puppeteer-core
export SCRAPELESS_API_KEY=tu_token_api_aquí # clave gratuita en https://app.scrapeless.com
Configurar la conexión
El punto final es wss://browser.scrapeless.com/api/v2/browser, y cada opción es un parámetro de consulta. Fija proxyCountry a una región residencial.
javascript
import { URLSearchParams } from "node:url";
function scrapelessEndpoint(extra = {}) {
```javascript
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: "180", // segundos
proxyCountry: "US",
...extra,
});
return `wss://browser.scrapeless.com/api/v2/browser?${params}`;
}
Conectar y ejecutar
Reemplaza puppeteer.launch() con puppeteer.connect() y pasa el punto de enlace. Todo lo posterior es estándar de Puppeteer.
javascript
import puppeteer from "puppeteer-core";
import { URLSearchParams } from "node:url";
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: "180",
proxyCountry: "US",
});
const endpoint = `wss://browser.scrapeless.com/api/v2/browser?${params}`;
const browser = await puppeteer.connect({ browserWSEndpoint: endpoint });
const page = await browser.newPage();
await page.goto("https://www.scrapeless.com/en", { waitUntil: "domcontentloaded", timeout: 60000 });
console.log("título:", await page.title());
console.log("navigator.webdriver:", await page.evaluate(() => navigator.webdriver));
await page.goto("https://httpbin.io/ip", { waitUntil: "domcontentloaded", timeout: 60000 });
console.log("ip de salida:", JSON.parse(await page.evaluate(() => document.body.innerText)).origin);
await browser.close();
Una ejecución en vivo de este script imprimió el título de la página Kit de herramientas de rastreo web sin esfuerzo - Scrapeless, navigator.webdriver: false, y una IP de salida residencial de EE.UU. — la misma API de Puppeteer que ya usas, proveniente del navegador en la nube.
Obtén tu clave de API en el plan gratuito: app.scrapeless.com
Enviar una huella digital consistente
Un objeto fingerprint mantiene la identidad anunciada del navegador coherente — el agente de usuario, la plataforma, la pantalla y la zona horaria están de acuerdo. Codifícalo en JSON, codifícalo en URL y pásalo como un parámetro más. La especificación W3C WebDriver requiere que la automatización conforme exponga la bandera webdriver; el navegador en la nube no la lleva, por lo que nada contradice la huella digital que envías.
javascript
const fingerprint = {
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
platform: "Windows",
screen: { width: 1920, height: 1080 },
localization: { languages: ["en-US", "en"], timezone: "America/New_York" },
};
const endpoint = scrapelessEndpoint({ fingerprint: encodeURIComponent(JSON.stringify(fingerprint)) });
Dónde se detiene Puppeteer localmente
Ejecutar Puppeteer en tu propio Chromium está bien para páginas abiertas y sin protección. La fricción comienza donde el objetivo califica el navegador: un desafío intersticial que se detiene en una IP de centro de datos, una página que toma huellas digitales de los valores predeterminados sin cabezal, o un muro de inicio de sesión que quiere una identidad estable a lo largo de las visitas. Cada uno es un problema de huella digital, comportamiento o IP — exactamente los tres que el navegador en la nube maneja del lado del servidor. Conectarse a Scrapeless transfiere esos casos a una sesión gestionada mientras tus llamadas a page permanecen idénticas.
Lo que recibes
La sesión se comporta como cualquier sesión de Puppeteer — page.goto, page.evaluate, page.$$eval, y las cookies funcionan. Algunas observaciones honestas de ejecutarlo sobre el navegador en la nube:
navigator.webdriveresfalse, así que la primera verificación que realiza un sitio se lee como un Chrome real.sessionTTLestá en segundos aquí — configúralo lo suficientemente largo como para cubrir el flujo completo; la sesión se cierra cuando expira.- La IP de salida coincide con
proxyCountry— las páginas restringidas por geolocalización se resuelven como un visitante local las ve. - Calienta la sesión para páginas rebeldes — carga primero la página de inicio del sitio antes de la página protegida, de modo que la superficie comportamental se lea como una visita normal.
Conclusión: mismo Puppeteer, navegador más limpio
Puppeteer decide qué hacer; Scrapeless decide cómo se ve el navegador para el sitio. La integración es una línea — puppeteer.connect() contra el navegador en la nube — y el resto de tu script permanece sin cambios. Fija proxyCountry a una región residencial, pasa una fingerprint coherente, y reutiliza un profileId para flujos autenticados. Para ejecutar el mismo navegador en la nube desde Python, consulta la guía de scrapier de Scrapling, y compara planes en la página de precios de Scrapeless.
¿Listo para construir tu canal de rastreo Puppeteer?
Únete a nuestra comunidad para reclamar un plan gratuito y conectarte con desarrolladores que construyen canales Puppeteer: Discord · Telegram.
Regístrate en app.scrapeless.com para obtener de forma gratuita el tiempo de ejecución del Scraping Browser y apunta puppeteer.connect() al navegador en la nube que tus objetivos no pueden identificar.
FAQ
Q: ¿Tengo que cambiar mi código de Puppeteer?
No. Cambias cómo se obtiene el navegador — puppeteer.connect({ browserWSEndpoint }) en lugar de puppeteer.launch(). Cada llamada a page después de eso es idéntica.
Q: ¿puppeteer o puppeteer-core?
Usa puppeteer-core. Omite la descarga de Chromium empaquetado porque te conectas al navegador en la nube en lugar de lanzar uno local.
Q: ¿Necesito un proxy?
No. La salida residencial está integrada: establece proxyCountry a una región o ANY. No hay un proxy separado que configurar.
Q: ¿Es sessionTTL en segundos o milisegundos?
Para la conexión del Scraping Browser aquí son segundos — 180 son tres minutos. Configúralo para cubrir todo el flujo.
Q: ¿Es legal el web scraping con Puppeteer?
Acceder a datos disponibles públicamente generalmente está permitido, pero las reglas varían según la jurisdicción y el sitio. Revisa los términos de servicio del objetivo, respeta las directivas de robots y consulta a un abogado para cualquier cosa sensible.
En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.



