🥳Únase a la Comunidad Scrapeless y Solicite su prueba gratuita para acceder a nuestro potente kit de herramientas de Web Scraping.
Volver al blog

Cómo usar Cypress para omitir CAPTCHAs

Sophia Martinez
Sophia Martinez

Specialist in Anti-Bot Strategies

23-Sep-2024

Los usuarios reales pueden distinguirse de los bots automatizados mediante una técnica llamada CAPTCHA, que significa "Pruebas de Turing públicas completamente automatizadas para distinguir entre computadoras y humanos". Es una tarea que se supone que es fácil de realizar para las personas, pero difícil para los robots. Con el fin de disuadir a los bots, las CAPTCHA se colocan típicamente en áreas particulares de los sitios web.

Los proveedores de CAPTCHA más utilizados son Google reCAPTCHA, hCaptcha y BotDetect. Estos ayudan con una o más de las siguientes dificultades:

  • CAPTCHA basadas en texto: para resolver estas, los usuarios deben proporcionar una cadena de caracteres o números mezclados.
  • CAPTCHA basadas en imágenes: en una cuadrícula de fotos, los usuarios deben identificar cosas específicas.
  • CAPTCHA basadas en audio: en estos casos, se le pide al usuario que ingrese las palabras que escuchan.
  • CAPTCHA de rompecabezas: para aprobar, los usuarios deben hacer clic en el objeto correcto para completar un minijuego o proporcionar una respuesta simple a una pregunta.

Puede utilizar servicios que se basan en operadores humanos para responder estas dificultades en tiempo real, o puede conectar su programa con bibliotecas que manejan CAPTCHA. Sin embargo, las CAPTCHA codificadas de forma rígida son raras, ya que son incómodas y empeoran la experiencia del usuario.

Con más frecuencia, las CAPTCHA son un componente de programas anti-bot más sofisticados como WAF.

Cuando estas soluciones creen que el usuario puede ser un bot, muestran una CAPTCHA dinámicamente. En estas situaciones, puede evitar las CAPTCHA haciendo que su bot actúe como una persona y utilice un navegador real. Sin embargo, esta es una lucha sin fin, y deberá actualizar su script automatizado con frecuencia para lidiar con los algoritmos de detección de bots en constante cambio.

Usar una aplicación actualizada basada en la emulación de usuarios como Scrapeless' CAPTCHA Solver es una técnica más eficiente para evitar las CAPTCHA.

¿Estás cansado de los CAPTCHA y los continuos bloqueos de web scraping?

Scrapeless: ¡la mejor solución de scraping en línea todo en uno disponible!

Utilice nuestro formidable conjunto de herramientas para liberar todo el potencial de su extracción de datos:

Mejor solucionador de CAPTCHA

Resolución automatizada de CAPTCHA complejos para garantizar una extracción continua y fluida.

Cypress y CAPTCHA: Una asociación poco saludable

Cypress es una herramienta de prueba de front-end diseñada para la Web actual. Aunque puede realizar tareas de raspado web y otras actividades generales de automatización del navegador, su principal caso de uso es la prueba de extremo a extremo (E2E). Por lo tanto, está diseñado principalmente para interactuar con sitios web y páginas web que usted posee o administra.

Los problemas comienzan a aparecer cuando usa Cypress para apuntar a sitios web externos o de terceros. El material oficial deja en claro que la mejor forma de actuar es minimizar las interacciones con sitios web de terceros. El peligro de ser identificado como un bot y recibir una CAPTCHA es particularmente una de las principales justificaciones mencionadas en la documentación.

¿Qué hace que esto sea un problema? Bueno, dado que los programas automatizados están destinados a ser detenidos por CAPTCHA. Como resultado, pueden interferir con la automatización de su navegador Cypress. También es importante recordar que, aunque es difícil, evitar las CAPTCHA de Cypress es factible. Consulte las siguientes secciones para obtener más información!

Cómo usar Cypress para administrar CAPTCHA

Como acaba de descubrir, Cypress reconoce en su documentación que uno de sus mayores problemas son las CAPTCHA. Pero aún no es el momento de tirar la toalla. ¡Investiguemos algunas estrategias posibles para poner en práctica la lógica de elusión de CAPTCHA de Cypress!

Método 1: Desactive las CAPTCHA

La mayoría de los proveedores de CAPTCHA permiten a los usuarios omitir o deshabilitar los obstáculos cuando están en un entorno de prueba. Luego, si usted está a cargo del sitio web donde se requiere la automatización, debe eliminar la CAPTCHA por completo o cambiarla por una menos complicada.

Por ejemplo, para situaciones de prueba, puede generar una clave diferente con reCAPTCHA v3. Puede usar las siguientes claves de prueba para reCAPTCHA v2:

  • Clave del sitio: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
  • Clave secreta: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Método 2: Automatice la interacción con CAPTCHA

Algunas CAPTCHA son tan sencillas como marcar una casilla; un ejemplo de esto es el widget reCAPTCHA "No CAPTCHA".

Estas tareas pueden parecer simples al principio, pero pueden ser bastante complejas, ya que examinan los movimientos del mouse para identificar si eres humano o no. Sin embargo, no todas las CAPTCHA son tan difíciles. Algunas son más fáciles de evitar y están diseñadas para frustrar a los bots simples. En ciertas situaciones, puede intentar automatizarlas utilizando algo de lógica Cypress.

Recuerde que Cypress no puede manejar iframes de diferentes dominios automáticamente. Para evitar la restricción, cambie la configuración chromeWebSecurity del archivo cypress.json a falso:

language Copy
{

"chromeWebSecurity": false

}

A continuación, puede elegir y hacer clic en el elemento de casilla de verificación CAPTCHA. El código automatizado para hacerlo en el caso de un widget reCAPTCHA "No CAPTCHA" sería:

language Copy
cy.get('iframe[src*=recaptcha]')

.its('0.contentDocument')

.should(d => d.getElementById('recaptcha-token').click())

Recuerda que esta es solo una solución temporal y no será efectiva en la mayoría de los casos. Hoy en día, los CAPTCHA son lo suficientemente inteligentes como para discernir entre un clic humano y uno de un robot. En última instancia, ese es precisamente el propósito de un CAPTCHA.

Los dos métodos de bypass de CAPTCHA de Cypress precedentes son demasiado presuntuosos para ser utilizados en un objetivo real. Configurar Cypress para administrar un navegador anti-detección es una mejor opción. Un navegador anti-detección es un navegador personalizado hecho para evitar que los sitios web detecten el comportamiento automatizado, en caso de que no esté familiarizado con dicha tecnología.

Luego, puede proporcionar a Cypress las siguientes instrucciones para iniciar un script en el navegador designado:

language Copy
cypress open --browser <path_to_your_browser>

En este caso, la ruta absoluta a su navegador que contiene el binario del navegador anti-detección está representada por .

Del mismo modo, agregando el siguiente código a cypress.config.js, puede configurar la interfaz de usuario de Cypress para que muestre su navegador anti-detección como una opción seleccionable:

Del mismo modo, agregando el siguiente código a cypress.config.js, puede configurar la interfaz de usuario de Cypress para que muestre su navegador anti-detección como una opción seleccionable:

language Copy
import { defineConfig } from 'cypress'

export default defineConfig({

e2e: {

setupNodeEvents(on, config) {

const antidetectBrowser = {

name: '<ANTIDETECT_BROWSER_NAME>',

channel: 'stable',

family: 'chromium',

displayName: '<ANTIDETECT_BROWSER_DISPLAY_NAME>',

version,

path: '<path_to_your_browser>',

majorVersion,

}

return {

browsers: config.browsers.concat(antidetectBrowser),

}

},

},

})

Tenga en cuenta que decirle a Cypress que ejecute su código automatizado en un navegador con funciones anti-detección solo reducirá la probabilidad de que se interprete como un bot. Los sistemas anti-bot podrían, no obstante, imponer algunos CAPTCHA para evitar que continúe si reconocen que está utilizando código automatizado.

Conclusión

Leíste este artículo para comprender acerca de los CAPTCHA y las razones por las que son un gran problema para Cypress. También examinaste tres formas alternativas de evitarlos, aunque estas estrategias tienen inconvenientes importantes.

Incluso con una lógica de omisión de CAPTCHA de Cypress bien desarrollada, su script aún puede ser marcado como automatizado por sistemas de detección de bots poderosos. La mejor opción es conectarse a su sitio web de destino utilizando una API de desbloqueo que pueda proporcionar el HTML de cualquier página sin un CAPTCHA.

Existe una API como esa; se conoce como Web Unlocker. A través de la integración de proxy, esto administra la huella digital del navegador, rota la IP de salida automáticamente con cada solicitud, inicia reintentos automatizados y resuelve los CAPTCHA por usted. ¡Las precauciones contra bots ahora son sin complicaciones!

En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.

Artículos más populares

Catalogar