La alternativa a puppeteer-extra-plugin-stealth de código abierto
El plugin stealth sigue siendo la forma más instalada de agregarle evasiones a Puppeteer, con unas 840,000 descargas semanales, pero no publica una versión desde marzo de 2023. Cada evasión es un parche de JavaScript sobre un Chrome estándar, y los parches de JavaScript se delatan solos. Clearcote fija esos valores de forma nativa en el motor.
¿Qué es puppeteer-extra-plugin-stealth?
puppeteer-extra-plugin-stealth (de berstend) es un conjunto de módulos de evasión en JavaScript que se inyectan con page.evaluateOnNewDocument antes de que se ejecuten los scripts de la página. Cada uno parchea una sola señal: navigator.webdriver, los plugins, chrome.runtime, el vendor de WebGL, los iframes, los códecs y más. Tiene licencia MIT y es enormemente popular, con unas 840,000 descargas semanales en npm, y su enfoque se portó a playwright-stealth y a selenium-stealth.
Además, en la práctica no tiene mantenimiento: la última versión en npm (2.11.2) salió en marzo de 2023, y el repositorio no cambia desde mediados de 2024. El límite estructural es anterior a eso. Son sobrescrituras de JavaScript sobre un motor estándar, y las sobrescrituras se delatan mediante Function.prototype.toString, descriptores de propiedad alterados y relecturas desde Web Workers o iframes de origen cruzado donde el parche no está presente. No cambia los valores nativos, no toca TLS ni HTTP/2 y no aborda la fuga de CDP de Runtime.enable. Su propio README admite que impedir todas las formas de detectar Chromium en modo headless probablemente sea imposible.
Clearcote vs puppeteer-extra-plugin-stealth
| Característica | Clearcote | puppeteer-extra-plugin-stealth |
|---|---|---|
| Enfoque | Parches en C++ a nivel del motor: valores nativos | Evasiones en JavaScript inyectadas en cada documento |
| Rastro detectable | Ninguno: nativo en cada realm (página, workers, iframes) | Visible con toString, descriptores y relecturas desde workers e iframes |
| TLS / coherencia de red | Sigue al Chrome declarado (JA3/JA4 + HTTP/2) | No se aborda |
| Framework | Playwright y Puppeteer (Python, Node, .NET) | Puppeteer (Node); playwright-extra para Playwright |
| Mantenimiento | Activo | Última versión: marzo de 2023 |
| Licencia | Build abierto BSD-3 | MIT |
| Costo | Build abierto gratis; build más reciente gratis con GitHub | Gratis y abierto |
Comparación elaborada en septiembre de 2026. Licencia de puppeteer-extra-plugin-stealth: Código abierto (MIT). Los detalles cambian, así que consulta su proyecto para ver lo más reciente.
Por qué los equipos eligen Clearcote
Nativo, no sobrescrito
Cada evasión del plugin stealth es una sobrescritura de JavaScript que un detector puede atrapar. Clearcote fija los valores en el motor, así que se leen como nativos y no hay ninguna sobrescritura que encontrar.
Coherente entre realms
Los parches de JavaScript aplicados a la página no coinciden en los Web Workers ni en los iframes de origen cruzado. Los valores a nivel del motor coinciden en todas partes, lo que cierra ese tipo de señal.
La capa de red
El plugin no tiene acceso a TLS ni a HTTP/2. El handshake de Clearcote sigue la versión de Chrome declarada, así que lo que viaja por la red coincide con el JavaScript.
Mantenido y verificado
Clearcote se comprueba con tests abiertos en cada versión. Las evasiones del plugin son de principios de 2023, y desde entonces Chrome avanzó decenas de versiones.
Cuándo puppeteer-extra-plugin-stealth puede ser mejor opción
- Ya usas Puppeteer y quieres un paquete de evasiones de una sola línea para objetivos poco exigentes.
- Necesitas algo con licencia MIT para sumar a un scraper de Node existente.
- Para páginas de prueba públicas y detección más antigua, es rápido y a veces suficiente.
Preguntas frecuentes
¿puppeteer-extra-plugin-stealth todavía tiene mantenimiento?
No de forma activa. La última versión en npm, 2.11.2, se publicó en marzo de 2023, y el repositorio no se actualiza desde julio de 2024. Todavía se instala y se usa mucho, pero sus evasiones no siguieron el ritmo de Chrome.
¿Por qué se detectan los parches stealth de JavaScript?
Porque son sobrescrituras sobre una función real. Un detector puede convertirla en cadena (una función nativa muestra [native code]; una sobrescritura muestra su propio código fuente), inspeccionar el descriptor de la propiedad o volver a leer el valor desde un iframe o un Web Worker nuevo donde el parche no está aplicado. Los cambios a nivel del motor evitan esto porque hacen que el valor sea nativo en todas partes.
¿En qué se diferencia Clearcote del plugin stealth?
El plugin inyecta evasiones en JavaScript en un Chrome estándar; Clearcote es un Chromium modificado en el que los valores son nativos del motor y coherentes entre workers e iframes, con una persona TLS/HTTP-2 a la que el plugin no tiene acceso.
¿Hay una versión para Playwright?
Sí: playwright-extra puede cargar el mismo plugin en Node, y playwright-stealth lo porta a Python. Los dos comparten el mismo diseño basado en sobrescrituras de JavaScript.
Lecturas relacionadas
Prueba la alternativa de código abierto basada en Chromium
Gratis y de código abierto, un reemplazo directo para Playwright y Puppeteer, coherente hasta el handshake TLS.
Gratis para un navegador con GitHub. Sin tarjeta.