¿Quiere eludir los sistemas de detección de bots mientras automatiza Chrome? 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:
- Qué hace: Enmascara marcadores de automatización (como
navigator.webdriver) e imita el comportamiento de un navegador real. - Cómo funciona: Ajusta las huellas del navegador, introduce patrones de navegación naturales y gestiona los detalles de las sesiones.
- Por qué es importante: Ayuda a evitar la detección por sistemas antibot avanzados, como los desafíos CAPTCHA y la identificación mediante huellas del navegador.
- Configuración: Instale
Puppeteer,puppeteer-extray el plugin stealth mediante npm o Yarn. Utilice el plugin stealth para configurar su navegador de modo que se comporte como un usuario real.
Ejemplo rápido:
import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://bot.sannysoft.com');
await browser.close();
})();
Esta herramienta es ideal para automatizar tareas en sitios web con una detección de bots estricta. Aprenda a configurarla, optimizar sus ajustes y simular comportamientos humanos para evitar ser detectado.
Tutorial de Nodejs Puppeteer n.º 7: eludir la detección mediante...
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 según lo previsto.
Instalación de los paquetes necesarios
Primero, instale Puppeteer, Puppeteer Extra y el plugin Stealth. Abra su terminal y ejecute el siguiente comando:
npm install puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Si utiliza Yarn, emplee este comando en su lugar:
yarn add puppeteer puppeteer-extra puppeteer-extra-plugin-stealth
Pasos de configuración inicial
Después de la instalación, configure su archivo JavaScript para integrar el plugin stealth. Este es el código que necesita:
import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';
puppeteer.use(StealthPlugin());
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://nowsecure.nl/');
await browser.close();
})();
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 el momento de verificar que todo funcione correctamente.
Pruebe su instalación
Ejecute estas pruebas para confirmar que su configuración funciona según lo esperado:
- Prueba de funcionalidad básica: Intente navegar a un sitio que detecte bots y revise los resultados.
- Verificación mediante captura de pantalla: Tome una captura de pantalla de la página de prueba para confirmar que las funciones stealth se aplican correctamente.
- Comprobación de la puntuación de reCAPTCHA: Observe sus puntuaciones de reCAPTCHA v3 para determinar si hay mejoras.
Para una verificación rápida, utilice el siguiente script:
(async () => {
const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://bot.sannysoft.com');
await page.waitForTimeout(5000);
await page.screenshot({ path: 'stealth-test.png' });
await browser.close();
})();
Este script tomará una captura de pantalla de la página de prueba. Revise la captura para comprobar si su navegador se comporta como un navegador Chrome habitual sin revelar señales de automatización.
Una vez que su configuración supere estas pruebas, estará listo para explorar las funciones avanzadas del plugin, que se abordan en la siguiente sección.
Principales funciones stealth
puppeteer-extra-plugin-stealth utiliza diversas técnicas para dificultar la detección de la navegación automatizada.
Enmascaramiento de identidad del navegador
El plugin ajusta propiedades clave del navegador para imitar un navegador Chrome habitual. Entre ellas se incluyen:
- Sustituir el user-agent predeterminado
HeadlessChromepor uno más natural - Configurar encabezados
Accept-Languagerealistas - Ajustar la compatibilidad con códecs para la reproducción multimedia
- Modificar
navigator.vendorpara que coincida con el comportamiento estándar de Chrome
Estos cambios ayudan a crear un perfil de navegador que parece corresponder a un usuario habitual, no a un bot. Además, el plugin emplea técnicas contra la identificación mediante huellas para reducir aún más el riesgo de detección.
Métodos contra la identificación mediante huellas
| Función | Método | Objetivo |
|---|---|---|
| Emulación de procesador | Limita los procesadores lógicos a 4 | Imita el hardware habitual de un usuario |
| Emulación de plugins | Simula navigator.mimeTypes y plugins | Imita la funcionalidad estándar de Chrome |
| Propiedades de ventana | Añade outerWidth y outerHeight | 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 alineada con lo que los sitios web esperan de usuarios reales.
Eliminación de marcadores de automatización
Para ocultar aún más la automatización, el plugin elimina o modifica señales reveladoras de actividad de bots:
- Elimina la propiedad
navigator.webdriver - Añade los objetos
chrome.appychrome.csi, presentes en los navegadores Chrome habituales - Oculta el atributo
sourceurlen los scripts de Puppeteer - Ajusta las propiedades de
permissionspara que coincidan con el comportamiento natural del navegador
Gestión de CAPTCHA
El plugin también ayuda a reducir los desafíos CAPTCHA al mantener un comportamiento coherente del navegador y gestionar las sesiones de forma eficaz. Esto crea un patrón de navegación alineado con la actividad humana, lo que le permite superar la mayoría de las pruebas de detección de bots en plataformas como sannysoft.com [2]. Sin embargo, los sistemas antibot avanzados, como los utilizados por Cloudflare, aún pueden detectar la automatización en algunos casos [1].
sbb-itb-23997f1
Configuración personalizada
La configuración personalizada le permite ajustar la configuración stealth y el comportamiento del navegador, lo que le ayuda a evitar la detección de manera más eficaz.
Ajustes del módulo Stealth
Puppeteer Stealth le permite gestionar sus módulos de evasión para sitios web específicos. Puede activar o desactivar módulos según sea necesario:
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
const stealth = StealthPlugin({
webglVendor: "Google Inc. (Intel)",
webglRenderer: "Intel Iris OpenGL Engine",
navigator: {
platform: "MacIntel",
languages: ["en-US", "en"]
}
})
Después de configurar los módulos stealth, puede ajustar el comportamiento del navegador para imitar mejor la actividad de un usuario real.
Ajustes de comportamiento del navegador
Ajuste los parámetros del navegador para imitar una experiencia de navegación auténtica:
| Categoría | Opciones | Objetivo |
|---|---|---|
| Identidad de usuario | User-Agent, plataforma, idiomas | Crea una identidad coherente del navegador |
| Perfil de hardware | Proveedor de WebGL, dimensiones de pantalla | Imita las características de un dispositivo real |
| Entorno de ejecución | Objetos de tiempo de ejecución de Chrome, propiedades de Navigator | Emula el comportamiento normal del navegador |
Introduzca retrasos naturales entre acciones para que la automatización sea menos detectable:
const randomDelay = (min, max) => {
return Math.floor(Math.random() * (max - min + 1) + min);
}
await page.waitForTimeout(randomDelay(1000, 3000));
Añadir estos retrasos ayuda a que su automatización se parezca al comportamiento humano.
Configuración de proxy
El uso de proxies al iniciar el navegador mejora el anonimato:
const browser = await puppeteer.launch({
args: [
`--proxy-server=http://proxy.example.com:8080`,
'--disable-features=IsolateOrigins,site-per-process'
]
});
"Probablemente sea imposible impedir todas las formas de detectar Chromium headless, pero debería ser posible dificultarlo tanto que deje de ser rentable o genere demasiados falsos positivos como para resultar viable." - TiZho, colaborador de GitHub [3]
Rote los proxies y configure una conmutación por error automática para mantener una conectividad fiable. Estas configuraciones ayudan a minimizar los riesgos de detección al tiempo que garantizan un rendimiento estable.
Prácticas recomendadas de stealth
Para mantener las sesiones automatizadas fuera del radar, es fundamental planificar y ejecutar cuidadosamente.
Patrones de navegación naturales
Simule una navegación realista añadiendo retrasos y acciones aleatorias:
async function emulateHumanBehavior(page) {
// Random scrolling behavior
await page.evaluate(() => {
window.scrollBy({
top: Math.random() * 500,
behavior: 'smooth'
});
});
// Random pauses between actions
await page.waitForTimeout(1500 + Math.random() * 2500);
}
| Patrón de comportamiento | Implementación | Objetivo |
|---|---|---|
| Movimiento del ratón | Curvas y velocidades aleatorias | Imita el movimiento natural del cursor |
| Interacción con la página | Varía 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 pulsación aleatorizados | Imita el comportamiento de escritura humano |
Estas interacciones simuladas funcionan junto con los ajustes de configuración descritos anteriormente.
Gestión de sesiones
Una gestión adecuada de las sesiones garantiza que los ajustes stealth se mantengan coherentes. Utilice almacenamiento persistente para guardar cookies y datos de sesión:
const browserContext = await browser.createIncognitoBrowserContext({
userDataDir: './sessions/user1',
persistentContext: true
});
También puede gestionar las cookies de forma eficaz:
// Remove specific cookies but keep session-critical data
await page.deleteCookie({
name: '_ga',
domain: '.example.com'
});
Pautas de uso
Combine las técnicas anteriores con estos pasos prácticos para mejorar la automatización:
Gestión de la frecuencia de solicitudes: Comience con un retraso de 2 segundos entre solicitudes y auméntelo si aparecen CAPTCHAs.
Gestión de errores: Cree un sistema de reintentos para gestionar solicitudes fallidas:
const maxRetries = 3; const baseDelay = 2000; async function fetchWithRetry(page, url) { for (let i = 0; i < maxRetries; i++) { try { return await page.goto(url); } catch (error) { await page.waitForTimeout(baseDelay * Math.pow(2, i)); } } }Rotación de proxies: Utilice varias direcciones IP para evitar que se le marque por actividad excesiva.
"Probablemente sea imposible impedir todas las formas de detectar Chromium headless, pero debería ser posible dificultarlo tanto que deje de ser rentable o genere demasiados falsos positivos como para resultar viable." - TiZho, colaborador de GitHub [3]
Supervise la evolución de los métodos de detección antibot y ajuste sus configuraciones según sea necesario. Estas prácticas complementan las técnicas stealth abordadas anteriormente en el artículo.
Conclusión
A continuación, encontrará un resumen rápido de los puntos principales y los consejos para utilizar Puppeteer-extra-plugin-stealth de forma eficaz.
Principales ventajas
Puppeteer-extra-plugin-stealth ayuda a automatizar la navegación sin ser marcado. Funciona ocultando marcadores de automatización mediante módulos de evasión integrados [2].
Algunas funciones clave incluyen:
- Eliminar el identificador 'HeadlessChrome' de los encabezados User-Agent.
- Ocultar marcadores de automatización críticos, como
navigator.webdriver. - Ajustar las huellas del navegador para imitar el comportamiento de usuarios reales.
- Permitir estrategias de evasión adaptadas a las necesidades específicas de cada sitio web.
Consejos de implementación
Para perfeccionar su configuración de automatización, tenga en cuenta estas estrategias:
| Área de enfoque | Estrategia | Resultado |
|---|---|---|
| Módulos de evasión | Active solo las funciones que necesita | Menor riesgo de detección y mejor rendimiento |
| Gestión de errores | Utilice lógica de reintentos con retroceso exponencial | Gestión más fiable de problemas temporales |
| Gestión de sesiones | Utilice contextos de navegador persistentes | Perfil stealth coherente entre sesiones |
Sugerencias adicionales:
- Comience con los ajustes stealth predeterminados y, después, ajústelos según sus necesidades.
- Manténgase al día sobre nuevas técnicas antibot y adapte su enfoque en consecuencia.
- Combine las funciones stealth con comportamientos de navegación naturales para obtener mejores resultados.
- Priorice una gestión coherente de las sesiones para evitar la detección.
Aunque ninguna configuración es infalible al 100 %, combinar múltiples tácticas de evasión dificulta mucho más la detección. El éxito depende de una configuración cuidadosa y de actualizaciones periódicas de sus métodos. Estos consejos, junto con las funciones del plugin, crean una base sólida para una automatización indetectable.


