Volver al blog

Puppeteer Navegador de Huellas Dactilares no Detectadas Con Scrapeless

James Thompson
James Thompson

Scraping and Proxy Management Expert

09-Jul-2026

TL;DR:

  • Puppeteer ya habla el Protocolo de Chrome DevTools, así que puppeteer.connect() lo conecta a Scrapeless con una URL. Intercambia un puppeteer.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.webdriver como false, 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.

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.goto alcanza el contenido.
  • Localiza la sesión: fija proxyCountry para que una página se resuelva como la ve un visitante en ese mercado.
  • Envía una huella digital consistente: pasa un objeto de fingerprint para 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 profileId para 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.

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-core instalado (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 Copy
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 Copy
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 Copy
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 Copy
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.webdriver es false, así que la primera verificación que realiza un sitio se lee como un Chrome real.
  • sessionTTL está 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.

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.

Artículos más populares

Catalogar