Automatización invisible: uso de puppeteer-extra-plugin-stealth para eludir la protección contra bots
Aprenda a utilizar eficazmente técnicas de automatización sigilosa para eludir los sistemas de detección de bots mientras navega.

¿Quiere evitar los sistemas de detección de bots mientras automatiza? Chrome? La puppeteer-extra-plugin-stealth es una herramienta que ayuda a ocultar las huellas de automatización, lo que dificulta que los sitios web detecten bots.
Puntos clave:
- Lo que hace: Marcadores de automatización de máscaras (como
navigator.webdriver) e imita el comportamiento del navegador real. - Cómo funciona: Ajusta las huellas dactilares del navegador, introduce patrones de navegación naturales y administra los detalles de la sesión.
- Por qué es importante: Ayuda a evitar la detección por parte de sistemas anti-bot avanzados como los desafíos CAPTCHA y la toma de huellas dactilares del navegador.
- Preparar: Instalar
Puppeteer,puppeteer-extra, y el complemento oculto a través de npm or HiloUtilice el complemento oculto para configurar su navegador para que se comporte como un usuario real.
Ejemplo rápido:
<span class="hljs-keyword">import</span> puppeteer <span class="hljs-keyword">from</span> <span class="hljs-string">'puppeteer-extra'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-title class_">StealthPlugin</span> <span class="hljs-keyword">from</span> <span class="hljs-string">'puppeteer-extra-plugin-stealth'</span>;
puppeteer.<span class="hljs-title function_">use</span>(<span class="hljs-title class_">StealthPlugin</span>());
(<span class="hljs-title function_">async</span> () => {
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-literal">true</span> });
<span class="hljs-keyword">const</span> page = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">newPage</span>();
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(<span class="hljs-string">'https://bot.sannysoft.com'</span>);
<span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">close</span>();
})();
Esta herramienta es perfecta para automatizar tareas en sitios web con detección estricta de bots. Aprende a configurarla, optimizar su configuración y simular un comportamiento humano para pasar desapercibido.
Nodejs Titiritero Tutorial #7 - Detección de bypass usando ...
Instalación y configuración
Para comenzar, deberá instalar los paquetes necesarios y configurarlos para minimizar la detección durante la automatización. Esta sección abarca el proceso de instalación, la configuración inicial y las pruebas para garantizar que todo funcione correctamente.
Instalación de paquete requerida
Primero, instale Titiritero, Titiritero adicional, y Plugin oculto. Abra su terminal y ejecute el siguiente comando:
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Si está utilizando Yarn, utilice este comando en su lugar:
yarn add puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Pasos de configuración inicial
Tras la instalación, configura tu archivo JavaScript para integrar el complemento oculto. Este es el código que necesitas:
<span class="hljs-keyword">import</span> puppeteer <span class="hljs-keyword">from</span> <span class="hljs-string">'puppeteer-extra'</span>;
<span class="hljs-keyword">import</span> <span class="hljs-title class_">StealthPlugin</span> <span class="hljs-keyword">from</span> <span class="hljs-string">'puppeteer-extra-plugin-stealth'</span>;
puppeteer.<span class="hljs-title function_">use</span>(<span class="hljs-title class_">StealthPlugin</span>());
(<span class="hljs-title function_">async</span> () => {
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-literal">true</span> });
<span class="hljs-keyword">const</span> page = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">newPage</span>();
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(<span class="hljs-string">'https://nowsecure.nl/'</span>);
<span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">close</span>();
})();
Importante: Asegúrese de importar Puppeteer desde 'puppeteer-extra' en lugar de 'puppeteer' para acceder a la funcionalidad añadida [ 2 ].
Una vez que haya completado la configuración, es momento de verificar que todo funcione correctamente.
Probando su instalación
Ejecute estas pruebas para confirmar que su configuración funciona como se espera:
- Prueba de funcionalidad básica:Intenta navegar a un sitio que detecte bots y revisa los resultados.
- Verificación de captura de pantalla:Tome una captura de pantalla de la página de prueba para confirmar que las funciones ocultas se aplican correctamente.
- Comprobación de la puntuación de reCAPTCHAObserve sus puntuaciones reCAPTCHA v3 para determinar si hay alguna mejora.
Para una verificación rápida, utilice el siguiente script:
(<span class="hljs-title function_">async</span> () => {
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({ <span class="hljs-attr">headless</span>: <span class="hljs-literal">true</span> });
<span class="hljs-keyword">const</span> page = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">newPage</span>();
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(<span class="hljs-string">'https://bot.sannysoft.com'</span>);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(<span class="hljs-number">5000</span>);
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">screenshot</span>({ <span class="hljs-attr">path</span>: <span class="hljs-string">'stealth-test.png'</span> });
<span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">close</span>();
})();
Este script tomará una captura de pantalla de la página de prueba. Revísala para comprobar si tu navegador funciona como un Chrome normal sin mostrar señales de automatización.
Una vez que su configuración pase estas pruebas, estará listo para sumergirse en las funciones avanzadas del complemento, que se tratan en la siguiente sección.
Características principales de Stealth
La puppeteer-extra-plugin-stealth Utiliza diversas técnicas para hacer que la navegación automatizada sea más difícil de detectar.
Enmascaramiento de identidad del navegador
El complemento modifica las propiedades clave del navegador para simular un navegador Chrome típico. Estas incluyen:
- Reemplazar el valor predeterminado
HeadlessChromeagente de usuario con uno más natural - Configuración realista
Accept-Languagecabeceras - Ajuste de la compatibilidad de códecs para la reproducción de medios
- Modificación
navigator.vendorpara que coincida con el comportamiento estándar de Chrome
Estos cambios ayudan a crear un perfil de navegador que imita al de un usuario normal, no al de un bot. Además, el complemento emplea técnicas antihuella digital para reducir aún más el riesgo de detección.
Métodos antihuellas
| Característica | Método | Proposito |
|---|---|---|
| Emulación del procesador | Limita los procesadores lógicos a 4 | Imita el hardware de usuario típico |
| Emulación de complementos | Simulacros de navigator.mimeTypes y complementos | Imita la funcionalidad estándar de Chrome |
| Propiedades de la ventana | Agrega externalWidth y externalHeight | Completa la simulación del navegador. |
| Propiedades del proveedor | Ajusta el identificador de Google de Chrome | Ayuda a evitar la detección de automatización |
Estos métodos garantizan que el navegador se comporte de una manera que se alinea con lo que los sitios web esperan de los usuarios reales.
Eliminación de marcadores de automatización
Para disfrazar aún más la automatización, el complemento elimina o modifica los signos reveladores de la actividad del bot:
- Elimina el
navigator.webdriverpropiedad - Añade
chrome.appychrome.csiobjetos que están presentes en los navegadores Chrome habituales - Esconde el
sourceurlatributo en los scripts de Puppeteer - Ajusta
permissionsPropiedades para que coincidan con el comportamiento natural del navegador
Gestión de CAPTCHA
El complemento también ayuda a reducir los desafíos de CAPTCHA al mantener un comportamiento consistente del navegador y administrar las sesiones eficazmente. Esto crea un patrón de navegación que se alinea con la actividad humana, lo que le permite eludir la mayoría de las pruebas de detección de bots en plataformas como sannysoft.com. [ 2 ]. Sin embargo, los sistemas anti-bots avanzados, como los utilizados por Cloudflare, aún puede detectar la automatización en algunos casos [ 1 ].
sbb-itb-23997f1
Configuración personalizada
La configuración personalizada le permite modificar las configuraciones ocultas y el comportamiento del navegador, ayudándole a evitar la detección de manera más efectiva.
Configuración del módulo Stealth
Puppeteer Stealth te permite administrar sus módulos de evasión para sitios web específicos. Puedes habilitarlos o deshabilitarlos según tus necesidades:
<span class="hljs-keyword">const</span> <span class="hljs-title class_">StealthPlugin</span> = <span class="hljs-built_in">require</span>(<span class="hljs-string">'puppeteer-extra-plugin-stealth'</span>)
<span class="hljs-keyword">const</span> stealth = <span class="hljs-title class_">StealthPlugin</span>({
<span class="hljs-attr">webglVendor</span>: <span class="hljs-string">"Google Inc. (Intel)"</span>,
<span class="hljs-attr">webglRenderer</span>: <span class="hljs-string">"Intel Iris OpenGL Engine"</span>,
<span class="hljs-attr">navigator</span>: {
<span class="hljs-attr">platform</span>: <span class="hljs-string">"MacIntel"</span>,
<span class="hljs-attr">languages</span>: [<span class="hljs-string">"en-US"</span>, <span class="hljs-string">"en"</span>]
}
})
Después de configurar los módulos ocultos, puede ajustar el comportamiento del navegador para imitar mejor la actividad real del usuario.
Configuración del comportamiento del navegador
Ajuste los parámetros del navegador para imitar una experiencia de navegación genuina:
| Categoría: | Proposito | |
|---|---|---|
| Identidad de usuario | Agente de usuario, plataforma, idiomas | Crea una identidad de navegador consistente |
| Perfil de hardware | Proveedor de WebGL, Dimensiones de pantalla | Imita las características reales del dispositivo. |
| Entorno de ejecución | Objetos de tiempo de ejecución de Chrome, propiedades del navegador | Emula el comportamiento normal del navegador. |
Introduzca retrasos naturales entre acciones para que la automatización sea menos detectable:
<span class="hljs-keyword">const</span> <span class="hljs-title function_">randomDelay</span> = (<span class="hljs-params">min, max</span>) => {
<span class="hljs-keyword">return</span> <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">floor</span>(<span class="hljs-title class_">Math</span>.<span class="hljs-title function_">random</span>() * (max - min + <span class="hljs-number">1</span>) + min);
}
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(<span class="hljs-title function_">randomDelay</span>(<span class="hljs-number">1000</span>, <span class="hljs-number">3000</span>));
Agregar estos retrasos ayuda a que su automatización se asemeje al comportamiento humano.
Configuración de proxy
El uso de proxies durante el inicio del navegador mejora el anonimato:
<span class="hljs-keyword">const</span> browser = <span class="hljs-keyword">await</span> puppeteer.<span class="hljs-title function_">launch</span>({
<span class="hljs-attr">args</span>: [
<span class="hljs-string">`--proxy-server=http://proxy.example.com:8080`</span>,
<span class="hljs-string">'--disable-features=IsolateOrigins,site-per-process'</span>
]
});
Probablemente sea imposible evitar todas las formas de detectar el cromo sin cabeza, pero debería ser posible dificultarlo tanto que resulte prohibitivo en costos o genere demasiados falsos positivos como para que sea viable. — TiZho, colaborador de GitHub [ 3 ]
Rote los servidores proxy y configure la conmutación por error automática para mantener una conectividad fiable. Estas configuraciones ayudan a minimizar los riesgos de detección y a garantizar un rendimiento estable.
Mejores prácticas de sigilo
Para mantener las sesiones automatizadas bajo el radar, una planificación y ejecución cuidadosas son clave.
Patrones de navegación naturales
Simule una navegación realista agregando retrasos y acciones aleatorias:
<span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">emulateHumanBehavior</span>(<span class="hljs-params">page</span>) {
<span class="hljs-comment">// Random scrolling behavior</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">evaluate</span>(<span class="hljs-function">() =></span> {
<span class="hljs-variable language_">window</span>.<span class="hljs-title function_">scrollBy</span>({
<span class="hljs-attr">top</span>: <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">random</span>() * <span class="hljs-number">500</span>,
<span class="hljs-attr">behavior</span>: <span class="hljs-string">'smooth'</span>
});
});
<span class="hljs-comment">// Random pauses between actions</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(<span class="hljs-number">1500</span> + <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">random</span>() * <span class="hljs-number">2500</span>);
}
| Patrón de comportamiento | Implementación | Proposito |
|---|---|---|
| Movimiento del raton | Curvas y velocidades aleatorias | Imita el movimiento natural del cursor. |
| Interacción de la página | Variar la profundidad de desplazamiento y las pausas | Simula hábitos de lectura |
| Tiempo de navegación | Retrasos aleatorios (1.5–4 segundos) | Evita patrones de tiempo predecibles |
| Velocidad de entrada | Intervalos de pulsaciones de teclas aleatorios | Imita el comportamiento de escritura humano |
Estas interacciones simuladas funcionan junto con las configuraciones descritas anteriormente.
Gestión de sesiones
La gestión adecuada de sesiones garantiza la coherencia de la configuración oculta. Utilice el almacenamiento persistente para guardar las cookies y los datos de sesión:
<span class="hljs-keyword">const</span> browserContext = <span class="hljs-keyword">await</span> browser.<span class="hljs-title function_">createIncognitoBrowserContext</span>({
<span class="hljs-attr">userDataDir</span>: <span class="hljs-string">'./sessions/user1'</span>,
<span class="hljs-attr">persistentContext</span>: <span class="hljs-literal">true</span>
});
También puedes gestionar las cookies de forma eficaz:
<span class="hljs-comment">// Remove specific cookies but keep session-critical data</span>
<span class="hljs-keyword">await</span> page.<span class="hljs-title function_">deleteCookie</span>({
<span class="hljs-attr">name</span>: <span class="hljs-string">'_ga'</span>,
<span class="hljs-attr">domain</span>: <span class="hljs-string">'.example.com'</span>
});
Pautas de uso
Combine las técnicas anteriores con estos pasos prácticos para una mejor automatización:
Solicitud de gestión de tarifas:Comience con un retraso de 2 segundos entre solicitudes y auméntelo si surgen CAPTCHAs.
Gestión de errores :Crear un sistema de reintentos para manejar solicitudes fallidas:
<span class="hljs-keyword">const</span> maxRetries = <span class="hljs-number">3</span>; <span class="hljs-keyword">const</span> baseDelay = <span class="hljs-number">2000</span>; <span class="hljs-keyword">async</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">fetchWithRetry</span>(<span class="hljs-params">page, url</span>) { <span class="hljs-keyword">for</span> (<span class="hljs-keyword">let</span> i = <span class="hljs-number">0</span>; i < maxRetries; i++) { <span class="hljs-keyword">try</span> { <span class="hljs-keyword">return</span> <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">goto</span>(url); } <span class="hljs-keyword">catch</span> (error) { <span class="hljs-keyword">await</span> page.<span class="hljs-title function_">waitForTimeout</span>(baseDelay * <span class="hljs-title class_">Math</span>.<span class="hljs-title function_">pow</span>(<span class="hljs-number">2</span>, i)); } } }Rotación de proxy:Utilice varias direcciones IP para evitar ser marcado por actividad excesiva.
Probablemente sea imposible evitar todas las formas de detectar el cromo sin cabeza, pero debería ser posible dificultarlo tanto que resulte prohibitivo en costos o genere demasiados falsos positivos como para que sea viable. — TiZho, colaborador de GitHub [ 3 ]
Manténgase al tanto de la evolución de los métodos de detección antibots y ajuste su configuración según sea necesario. Estas prácticas complementan las técnicas de sigilo descritas anteriormente en este artículo.
Conclusión
A continuación se muestra un resumen rápido de los puntos principales y consejos para su uso. Titiritero-extra-plugin-stealth de manera efectiva.
Beneficios principales
Complemento extra sigiloso de Puppeteer Ayuda a automatizar la navegación sin ser marcado. Funciona ocultando los marcadores de automatización mediante módulos de evasión integrados. [ 2 ].
Algunas características clave incluyen:
- Eliminar el identificador 'HeadlessChrome' de los encabezados del agente de usuario.
- Ocultar marcadores de automatización críticos, como
navigator.webdriver. - Ajustar las huellas dactilares del navegador para imitar el comportamiento del usuario real.
- Permitiendo estrategias de evasión personalizadas para las necesidades específicas del sitio web.
Consejos para la implementación
Para perfeccionar su configuración de automatización, tenga en cuenta estas estrategias:
| Area de enfoque | Estrategia | Resultado |
|---|---|---|
| Módulos de evasión | Habilite solo las funciones que necesita | Menor riesgo de detección, mejor rendimiento |
| Gestión de errores | Utilice la lógica de reintento con retroceso exponencial | Manejo más confiable de problemas temporales |
| Manejo de sesiones | Utilice contextos de navegador persistentes | Perfil de sigilo consistente en todas las sesiones |
Sugerencias adicionales:
- Comience con la configuración de sigilo predeterminada y luego ajústela para adaptarla a sus necesidades.
- Manténgase actualizado sobre las nuevas técnicas anti-bot y ajuste su enfoque en consecuencia.
- Combine funciones ocultas con comportamientos de navegación naturales para obtener mejores resultados.
- Concéntrese en la gestión consistente de la sesión para evitar la detección.
Aunque ninguna configuración es 100% infalible, combinar múltiples tácticas de evasión dificulta considerablemente la detección. El éxito depende de una configuración cuidadosa y de actualizaciones periódicas de los métodos. Estos consejos, junto con las funciones del plugin, sientan las bases para una automatización indetectable.
Artículos relacionados con
- Cómo funciona la detección de navegadores sin interfaz gráfica y cómo evitarla
- Automatización de formularios con Puppeteer: entrada de texto, llenado de formularios y simulación de usuario
- Gestión de agentes de usuario en Puppeteer para la emulación de dispositivos
- Estrategias para eludir la protección de Cloudflare con Puppeteer



