CAPSOLVER
Blog
# Cómo resolver CAPTCHA con Selenium y Node.js al raspar

Cómo resolver CAPTCHA con Selenium y Node.js al raspar

Logo of CapSolver

Aloísio Vítor

Image Processing Expert

15-Oct-2024

Hablando como un proyecto de raspado, diré que una situación como esta la he enfrentado antes. Estás inmerso en un proyecto de raspado web, todo va bien, y luego "bam", una inundación de CAPTCHAs aparece interrumpiendo todo tu proceso. Tienes Selenium y Node.js configurados, tu raspador funciona perfectamente, y el CAPTCHA lo detiene todo de golpe. Sé muy bien esa sensación. Sin embargo, no te preocupes, hay formas de evitar esto, y hoy te voy a mostrar cómo usar Selenium y Node.js para resolver estos CAPTCHAs demorados para que puedas hacer que tu proyecto de raspado avance sin perder el ritmo.

¿Por qué los sitios web usan CAPTCHAs?

Antes de entrar en soluciones, es importante entender por qué existen los CAPTCHAs. Los sitios web utilizan CAPTCHAs para distinguir entre usuarios humanos y bots automatizados. Los CAPTCHAs pueden activarse cuando se detecta un comportamiento sospechoso, como múltiples solicitudes desde la misma IP u otras señales de automatización.

Estos mecanismos ayudan a proteger los sitios web del spam, el tráfico de bots y la actividad maliciosa. Si bien esto es bueno para los propietarios de sitios web, es un obstáculo importante para los raspadores web que necesitan acceder y recopilar datos legalmente

¿Luchando con el fracaso repetido para resolver completamente el irritante captcha?

¡Descubre la resolución automática perfecta de captcha con la tecnología Auto Web Unblock impulsada por IA de CapSolver!

Reclama tu Código de bonificación para las mejores soluciones de captcha; CapSolver: WEBS. Después de canjearlo, obtendrás un bono adicional del 5% después de cada recarga, Ilimitado

¿Por qué usar Node.js?

Antes de sumergirnos en los detalles técnicos de la resolución de reCAPTCHA, es importante comprender por qué Node.js es una excelente opción para esta tarea:

  1. Naturaleza asíncrona: La arquitectura no bloqueante y basada en eventos de Node.js la hace ideal para manejar operaciones con uso intensivo de E/S como el raspado web y las solicitudes de API. Esto significa que puedes realizar múltiples tareas simultáneamente sin esperar a que cada tarea se complete secuencialmente.
  2. Ecosistema rico: Node.js tiene un vasto ecosistema de bibliotecas y módulos disponibles a través de npm (Node Package Manager). Estas bibliotecas simplifican varios aspectos del raspado web y la automatización, como el manejo de solicitudes HTTP, la automatización del navegador y la resolución de CAPTCHA.
  3. JavaScript en todas partes: Usar Node.js te permite usar JavaScript tanto en el lado del cliente como en el del servidor. Esta unificación puede simplificar tu base de código y facilitar la compartición de lógica y datos entre diferentes partes de tu aplicación.
  4. Rendimiento: Node.js está construido sobre el motor JavaScript V8, conocido por su alto rendimiento y su eficiente manejo de las operaciones asíncronas. Esto asegura que tus tareas de raspado se realicen de forma rápida y eficiente.

¿Puede Selenium con Node.js resolver CAPTCHA?

Por mi experiencia, definitivamente puedes configurar Selenium con Node.js para resolver desafíos de CAPTCHA. Pero, dependiendo de cómo esté configurado el sitio web, tienes dos enfoques a considerar.

En algunos sitios web, los CAPTCHAs solo aparecen si su sistema anti-bot sospecha de una actividad inusual, como el comportamiento automatizado del navegador. En estos casos, puedes resolver el CAPTCHA por completo imitando las acciones naturales del usuario, evitando la detección del sistema anti-bot y navegando directamente sin tener que enfrentar nunca un CAPTCHA.

Sin embargo, algunos sitios web tendrán el CAPTCHA integrado en la página y lo mostrarán a cada visitante independientemente de los resultados de la detección de bots. En este caso, tendrás que resolver el problema del CAPTCHA para acceder al contenido. Es por eso que la mayoría de los raspadores recurren a servicios de resolución de CAPTCHA de terceros, que son, con mucho, la forma más generalizada y efectiva de resolver problemas de CAPTCHA, pero algunos terceros utilizan mano de obra manual, lo que es lento y costoso, por lo que no es recomendable. En cambio, recomendamos algunas empresas en el mercado que utilizan tecnología Auto Web Unblock impulsada por IA, que presentaremos en detalle a continuación.

A continuación, también presentaremos algunos métodos que pueden prevenir la aparición de captcha, pero también cómo puedes ser a gran escala a través de la economía de terceros de soluciones rápidas y precisas, sígueme para seguir explorando lo siguiente

Método #1: Usar Undetected ChromeDriver con Selenium y Node.js

Déjame empezar compartiendo un método gratuito que he encontrado efectivo: usar Undetected ChromeDriver con Selenium.

Para entender por qué funciona este enfoque, es importante primero echar un vistazo a cómo opera Selenium estándar. Esencialmente, Selenium utiliza ChromeDriver—un pequeño ejecutable que controla los navegadores Chromium. Este ejecutable actúa como intermediario entre el Selenium WebDriver y el propio navegador.

Ahora, aquí está el problema con el que me encontré: el ChromeDriver normal filtra bastante información sobre la automatización al sitio de destino. Cuando un sitio web tiene medidas anti-bot en su lugar, usar el ChromeDriver estándar a menudo conduce a ser marcado. Puede que te encuentres con un desafío imposible como Cloudflare Turnstile CAPTCHA.

Ahí es donde Undetected ChromeDriver me fue útil. Es una versión modificada del ChromeDriver normal, construida para evitar la detección. Al utilizar técnicas como la falsificación de huellas dactilares y la ocultación de las típicas señales de automatización, esta herramienta hace que Selenium parezca mucho más humano. He notado que a menudo puede resolver CAPTCHAs imitando el comportamiento normal del usuario.

Sin embargo, no es a prueba de fallos. Si bien Undetected ChromeDriver ha funcionado para mí en sitios con protección básica contra bots, no siempre tiene éxito. Los sitios con sistemas más avanzados aún pueden detectarlo, dejando este método ineficaz.

Si estás interesado en configurarlo tú mismo, te recomiendo que consultes una guía detallada sobre el uso de Undetected ChromeDriver con Node.js. Ten en cuenta que, para los sitios web más protegidos, esta solución puede no ser suficiente.

Método #2: Usar servicios de resolución de CAPTCHA de terceros

Si bien Undetected ChromeDriver puede ayudar a veces a resolver desafíos de CAPTCHA imitando el comportamiento natural, no siempre es confiable. Muchos sitios web implementan protecciones anti-bot más avanzadas que pueden detectar herramientas de automatización, independientemente de cuán humanas parezcan. Es aquí donde el uso de un servicio de resolución de CAPTCHA de terceros se convierte en la solución más práctica, especialmente cuando se trata de operaciones de raspado web a gran escala.

¿Por qué elegir solucionadores de CAPTCHA de terceros?

Hay varias razones por las que los servicios de terceros son generalmente el enfoque preferido al manejar CAPTCHAs durante el raspado web:

  1. Precisión y fiabilidad: Los servicios automatizados de resolución de CAPTCHA aprovechan algoritmos avanzados de aprendizaje automático para resolver CAPTCHAs con una alta tasa de éxito. Estas soluciones están específicamente diseñadas para resolver diferentes tipos de desafíos de CAPTCHA de manera eficiente, incluidos los complejos como Google reCAPTCHA y Turnstile de Cloudflare.

  2. Escalabilidad: Para proyectos de raspado a gran escala, depender únicamente de herramientas como Undetected ChromeDriver puede ser poco confiable y consumir mucho tiempo. Los servicios de terceros, por otro lado, están diseñados para manejar grandes volúmenes de desafíos de CAPTCHA con un tiempo de inactividad mínimo, permitiendo que tus tareas de raspado se ejecuten sin problemas sin interrupciones.

  3. Rentabilidad: Si bien podrías pensar que usar un servicio pago aumenta tus costos, considera el tiempo y los recursos que puedes ahorrar. Resolver CAPTCHAs manualmente o solucionar repetidamente errores de automatización puede consumir un tiempo valioso, especialmente en proyectos de raspado de alto volumen. Al automatizar este aspecto, puedes concentrarte en la recopilación real de datos en lugar de la logística de resolución de CAPTCHA.

  4. Consistencia en múltiples sitios web: La variedad de desafíos de CAPTCHA (como reCAPTCHA, captcha, Cloudflare) implementados en diferentes sitios web puede dificultar que las soluciones de bricolaje se mantengan al día. Los servicios de terceros a menudo admiten múltiples tipos de CAPTCHA, asegurando que estás cubierto sin importar qué protección utilice el sitio web de destino.

Ahora que hemos cubierto por qué las soluciones de terceros a menudo son la ruta más efectiva, déjame presentarte CapSolver, un servicio líder en el espacio de resolución de CAPTCHA.

¿Por qué CapSolver?

CapSolver destaca como una solución de resolución de CAPTCHA de terceros rápida, confiable y escalable que admite una amplia gama de tipos de CAPTCHA. Ya sea que estés lidiando con reCAPTCHA v2 o v3, captcha o incluso el último Cloudflare Turnstile, CapSolver te tiene cubierto.

Aquí te explico por qué recomiendo CapSolver:

  • Servicio rápido y asistencia técnica
    CapSolver se compromete a brindar una respuesta rápida y un servicio eficiente a los clientes. El equipo técnico tiene una amplia experiencia y conocimiento profesional, capaz de brindar soporte y soluciones rápidamente al resolver problemas de reconocimiento de CAPTCHA.

  • Velocidad de actualización rápida
    CapSolver tiene un poderoso sistema de monitoreo que responde activamente a la primera vez que los servicios necesitan actualizarse y mantenerse, y mejora y optimiza continuamente nuestros algoritmos de reconocimiento de CAPTCHA para garantizar que el sistema pueda responder de manera eficiente a varias actualizaciones de CAPTCHA y continuar brindando resultados de reconocimiento precisos.

  • Tipos de soporte de servicio enriquecidos
    CapSolver es el proveedor en el mercado que admite la mayoría de los tipos de servicios de reconocimiento de CAPTCHA, incluyendo reCAPTCHA (v2/v3/Enterprise), captcha (Normal/Enterprise), Cloudflare, ImageToText, captcha, captcha V3/V4, captcha Captcha, y más, que pueden manejar más del 95% de las necesidades de CAPTCHA en todo el mundo, cubriendo todos los tipos de servicio de CAPTCHA principales.

  • Funciones API detalladas y tutoriales de documentación
    CapSolver proporciona funciones API completas, lo que facilita a los desarrolladores la integración de nuestros servicios de reconocimiento de CAPTCHA. Los tutoriales de documentación no solo cubren el uso básico de la API, sino que también incluyen configuración avanzada y soluciones comunes para la resolución de problemas, lo que te ayuda a aplicar de manera eficiente la tecnología de CapSolver en tus proyectos.

  • Servicios de extensión
    Además de proporcionar servicios API, CapSolver también proporciona extensiones que son convenientes para los usuarios que no conocen la programación. Esto proporciona una forma más conveniente para que el personal no técnico se enfrente a los desafíos de CAPTCHA. La extensión del navegador admite el reconocimiento de los CAPTCHA más populares

Cómo integrar CapSolver con Selenium y Node.js

Integrar CapSolver en tu proyecto de Selenium y Node.js es sencillo. Así que desde mi proceso, aquí tienes una sugerencia paso a paso:

  1. Instalar el SDK de CapSolver: Primero, instala el SDK de CapSolver Node.js ejecutando el siguiente comando en el directorio de tu proyecto:

    bash Copy
    npm install capsolver-node
  2. Configurar la clave API: Una vez que hayas instalado el SDK, necesitarás una clave API de CapSolver. Dirígete al sitio web de CapSolver y crea una cuenta para obtener tu clave.

  3. Manejo de CAPTCHA en tu código: Así es como implementé CapSolver en mi proyecto para resolver desafíos de CAPTCHA:

javascript Copy
// npm install axios
const axios = require('axios');
 
const api_key = "YOUR_API_KEY";  // Reemplaza con tu clave API real
const site_key = "0x4XXXXXXXXXXXXXXXXX";  // Reemplaza con la clave del sitio
const site_url = "https://www.yourwebsite.com";  // Reemplaza con la URL del sitio de destino
 
async function capsolver() {
  const payload = {
    clientKey: api_key,
    task: {
      type: 'AntiTurnstileTaskProxyLess',
      websiteKey: site_key,
      websiteURL: site_url,
      metadata: {
          action: ''  // Metadatos de acción opcionales
      }
    }
  };
 
  try {
    const res = await axios.post("https://api.capsolver.com/createTask", payload);
    const task_id = res.data.taskId;
    if (!task_id) {
      console.log("Fallo al crear la tarea:", res.data);
      return;
    }
    console.log("Se obtuvo taskId:", task_id);
 
    while (true) {
      await new Promise(resolve => setTimeout(resolve, 1000)); // Retraso de 1 segundo
 
      const getResultPayload = {clientKey: api_key, taskId: task_id};
      const resp = await axios.post("https://api.capsolver.com/getTaskResult", getResultPayload);
      const status = resp.data.status;
 
      if (status === "ready") {
        return resp.data.solution.token; // Devuelve el token resuelto
      }
      if (status === "failed" || resp.data.errorId) {
        console.log("¡La solución falló! respuesta:", resp.data);
        return;
      }
    }
  } catch (error) {
    console.error("Error:", error);
  }
}
 
capsolver().then(token => {
  console.log(token);  // Salida del token CAPTCHA resuelto
});
  1. Integrar la solución CAPTCHA en Selenium: Después de recibir la solución CAPTCHA, puedes inyectarla en el navegador utilizando Selenium WebDriver para enviar el formulario y resolver el CAPTCHA.

  2. Ejecutar tu raspador: Con CapSolver integrado en tu script de Selenium, estás listo para ejecutar tu raspador sin preocuparte por las interrupciones de CAPTCHA.

Al integrar CapSolver en tu proyecto de raspado, resolverás los desafíos de CAPTCHA sin esfuerzo y garantizarás que tu automatización se ejecute de manera fluida y eficiente.

Conclusión

Manejar CAPTCHAs mientras se hace raspado web es uno de los mayores desafíos que he enfrentado, pero con las herramientas adecuadas, he aprendido a superar estos obstáculos. Ya sea que opte por Undetected ChromeDriver o elija una solución más robusta, puedo asegurarme de que mis esfuerzos de raspado web continúen sin interrupciones.

Para cualquiera que raspen a gran escala, creo que depender de un servicio de resolución de CAPTCHA es una inversión inteligente. Es rápido, eficiente y está diseñado para la escalabilidad, lo que permite que mi raspador se centre en recopilar datos en lugar de atascarse en CAPTCHAs.

Ohh, si estás listo para dar el paso y experimentar los beneficios de CapSolver por ti mismo, regístrate aquí. ¡Estarás resolviendo CAPTCHAs en poco tiempo!

Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.

Máse