En esta guía, aprenderás:
- Qué son los CAPTCHA y si se pueden eludir
- Cómo utilizar Puppeteer para eludir los CAPTCHA mediante un tutorial paso a paso
- Qué hacer si el proceso con Puppeteer no funciona
¡Empecemos!
¿Qué son los CAPTCHA? ¿Se pueden eludir?
Un CAPTCHA (prueba de Turing pública completamente automatizada para distinguir entre ordenadores y humanos) es una prueba de desafío-respuesta que distingue a los humanos de los bots automatizados. Para lograr sus objetivos, los CAPTCHAs están diseñados para que los humanos los resuelvan fácilmente, pero sean difíciles para el software.
Entre los proveedores de CAPTCHA más populares se encuentran Google reCAPTCHA, hCaptcha y BotDetect, y los tipos de CAPTCHA más comunes son:
- Basados en texto: en estos retos, los usuarios deben reconocer letras y números y escribirlos.
- Basados en imágenes: estas pruebas requieren que los usuarios identifiquen objetos específicos en una cuadrícula de imágenes seleccionando las imágenes correctas.
- Basados en audio: en este tipo, los usuarios deben escribir las letras que oyen.
- Desafíos de rompecabezas: este tipo de desafío requiere que los usuarios resuelvan un rompecabezas sencillo deslizando una pieza hasta el lugar correspondiente.
Los CAPTCHA están diseñados para que sean difíciles de eludir por software automatizado y bots. Por lo tanto, lo que puede hacer es integrar su software con bibliotecas o servicios de Resolución de CAPTCHA que dependen de operadores humanos para automatizar estos retos y resolverlos.
Sin embargo, los CAPTCHA codificados no son habituales porque tienen un impacto negativo en la experiencia general del usuario en el sitio web. Por esta razón, es más habitual que los CAPTCHA se utilicen como parte de soluciones antibots más amplias, como los WAF (cortafuegos de aplicaciones web):

En estos casos, el sistema muestra dinámicamente un CAPTCHA cuando se sospecha que un bot está realizando alguna actividad en el sitio web. Para eludir estos CAPTCHAs, hay que desarrollar un bot que imite el comportamiento humano. Aunque esto se puede hacer, requiere mucho esfuerzo, sobre todo porque hay que actualizar los scripts con frecuencia para adelantarse a las nuevas técnicas y métodos de detección de bots.
La buena noticia es que existe una solución más eficaz para eludir los CAPTCHA: ¡el CAPTCHA Solver de Bright Data! Esta herramienta, siempre actualizada, resuelve todos los problemas relacionados con la elusión de CAPTCHA sin ningún tipo de complicación.
Cómo evitar los CAPTCHA con Puppeteer: tutorial paso a paso
Ahora es el momento de crear un script automatizado que imite el comportamiento humano para evitar los CAPTCHA.
Para ello, puedes utilizar Puppeteer: una biblioteca JavaScript que proporciona una API de alto nivel que controla los navegadores web y, por lo tanto, puede utilizarse para imitar el comportamiento humano.
¡Empecemos!
Paso n.º 1: configuración del proyecto
Supongamos que llamas a la carpeta principal de tu proyecto bypass_captcha_puppeteer. Esta es la estructura que debe tener el repositorio:
bypass_captcha_puppeteer/
├── index.js
└── package.json
Puede crearla con:
mkdir bypass_captcha_puppeteer
A continuación, entra en la carpeta del proyecto y ejecuta npm init para inicializar una aplicación Node.js:
cd bypass_captcha_puppeteer
npm init -y
A continuación, cree un archivo index.js dentro de ella.
Instala Puppeteer como se indica a continuación:
npm install puppeteer
Paso n.º 2: Utilizar la notación ESM Javascript
Para utilizar la notación de módulos ECMAScript en Javascript, el archivo package.json debe tener la opción «type»: «module».
Así es como debería verse el archivo package.json:
{
"name": "bypass_captcha_puppeteer",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"puppeteer": "^23.10.4"
}
}
Paso n.º 3: Intenta omitir el CAPTCHA con Puppeteer
Escribe el siguiente código en el archivo index.js para ver si Puppeteer aparece como un bot o no:
import puppeteer from 'puppeteer';
const visitBotAnalyzerPage = async () => {
try {
// inicializar el navegador
const browser = await puppeteer.launch();
// abrir una nueva página del navegador
const page = await browser.newPage();
// navegar a la URL de destino
const url = 'https://bot.sannysoft.com/';
console.log(`Navegando a ${url}...`);
await page.goto(url, { waitUntil: 'networkidle2' });
// guardar una captura de pantalla de toda la página
console.log('Tomando captura de pantalla de toda la página...');
await page.screenshot({ path: 'anti-bot-analysis.png', fullPage: true });
console.log('Captura de pantalla tomada');
// cerrar el navegador
await browser.close();
console.log('Navegador cerrado');
} catch (error) {
console.error('Se ha producido un error:', error);
}
};
// ejecutar el script
visitBotAnalyzerPage();
Esto es lo que hace este código:
- Inicia el navegador: el método
puppeteer.launch()inicia una nueva instancia del navegador con la interfaz de usuario visible (headless: false). - Abre una nueva página del navegador:
browser.newPage()crea una nueva página en blanco del navegador en la que se pueden realizar más acciones. - Va a la página de destino: el método
page.goto()redirige a la página de destino, que es Intoli.com tests, una página diseñada para comprender si una solicitud proviene de un bot o no. - Guarda una captura de pantalla de los resultados: el método
page.screenshot()obtiene una captura de pantalla de los resultados y la guarda. - Cierra el navegador y gestiona los errores:
browser.close()cierra el navegador e intercepta los posibles errores.
Para ejecutar el código, escriba:
node index.js
Ahora puede abrir la imagen guardada. Este es el resultado esperado:

Por lo tanto, Puppeteer no ha superado algunas pruebas, como muestra la imagen. En consecuencia, es probable que los WAF muestren CAPTCHAs al interactuar con páginas con Puppeteer.
Para resolver estos problemas, ¡utilicemos Puppeteer Stealth!
Paso n.º 4: Instalar el complemento Stealth
Puppeteer Extra es un envoltorio ligero alrededor de Puppeteer que, entre otras cosas, le permite instalar el complemento Stealth, que evita la detección de bots al anular varias configuraciones para que la instancia del navegador parezca natural y «humana».
Instala estas bibliotecas de la siguiente manera:
npm install puppeteer-extra puppeteer-extra-plugin-stealth
Importa Puppeteer desde puppeteer-extra en lugar de puppeteer:
import puppeteer from 'puppeteer-extra';
¡Fantástico! Ya está listo para utilizar el complemento Stealth e intentar evitar los CAPCHA con Puppeteer.
Paso n.º 5: repite la prueba con el complemento Stealth
Ahora tienes que implementar el plugin Stealth con esta línea de código:
puppeteer.use(StealthPlugin()).
Así, el código queda así:
import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';
// Añade el complemento Stealth a Puppeteer
puppeteer.use(StealthPlugin());
const visitBotAnalyzerPage = async () => {
try {
// inicia el navegador con la configuración Stealth
const browser = await puppeteer.launch();
console.log('Iniciando el navegador en modo Stealth...');
// abrir una nueva página
const page = await browser.newPage();
// navegar a la página de destino
const url = 'https://bot.sannysoft.com/';
console.log(`Navegando a ${url}...`);
await page.goto(url, { waitUntil: 'networkidle2' });
// guardar la captura de pantalla de toda la página
console.log('Tomando captura de pantalla de toda la página...');
await page.screenshot({ path: 'anti-bot-analysis.png', fullPage: true });
console.log(`Captura de pantalla tomada`);
// cerrar el navegador
await browser.close();
console.log('Navegador cerrado. Script completado con éxito');
} catch (error) {
console.error('Se ha producido un error:', error);
}
};
// ejecutar el script
visitBotAnalyzerPage();
Ahora, cuando vuelvas a ejecutar el código con:
node index.js
El resultado esperado es:

¡Hurra! El script ahora pasa las pruebas de detección de bots, lo que significa que es menos probable que recibas CAPTCHAs con Puppeteer.
Qué hacer El procedimiento anterior para evitar los CAPTCHA con Puppeteer no funciona
Desafortunadamente, Puppeteer Extra no siempre es la solución ideal. La razón es que la configuración del navegador no es la única forma en que los antibots se centran en bloquear el software automatizado.
Por ejemplo, el agente de usuario es otro factor que utilizan los sistemas antibots para bloquear el software automatizado. Para resolver este problema, puedes utilizar la biblioteca puppeteer-extra-plugin-anonymize-ua, que anonimiza el agente de usuario.
Sin embargo, el enfoque basado en los complementos descrito anteriormente solo funciona contra medidas antibots básicas: cuando se trata de herramientas más complejas como Cloudflare, se necesita algo más potente.
Entonces… ¿está buscando un verdadero solucionador de CAPTCHA para Playwright? Pruebe las soluciones de Scraping web de Bright Data.
Estas proporcionan capacidades de desbloqueo superiores con una función dedicada a la Resolución de CAPTCHA para gestionar automáticamentereCAPTCHA, hCaptcha, px_captcha, SimpleCaptcha, GeeTest CAPTCHA, FunCaptcha, Cloudflare Turnstile, AWS WAF Captcha, KeyCAPTCHA y muchos otros.
Integrar el solucionador de CAPTCHA de Bright Data en tus scripts es fácil, ya que funciona con cualquier cliente HTTP o herramienta de automatización de navegadores.
Obtenga más información sobre cómo utilizar el CAPTCHA Solver de Bright Data y consulte la documentación para conocer todos los detalles de integración y configuración.
Conclusión
En este artículo, ha aprendido por qué puede resultar complicado eludir los CAPTCHA con Puppeteer y cómo utilizar el complemento Stealth para anular la configuración predeterminada del navegador y evitar la detección de bots.
El problema de este enfoque es que solo funciona en situaciones sencillas. Los sistemas avanzados de detección de bots pueden seguir identificándote como un bot y bloquearte.
Por lo tanto, a la hora de eludir los CAPTCHA, la solución real es conectarse a la página de destino a través de una API de desbloqueo que pueda devolver sin problemas el HTML sin CAPTCHA de cualquier página web. Esta solución existe y se llama Web Unlocker. Su objetivo es rotar automáticamente la IP de salida con cada solicitud mediante la integración de un Proxy, gestionar las huellas digitales del navegador, los reintentos automáticos y la resolución de CAPTCHA por usted.
Regístrese ahora para descubrir cuál de los productos de scraping de Bright Data se adapta mejor a sus necesidades.
¡Comience con una prueba gratuita!