Como contornar CAPTCHAs com o Cypress

Descubra como lidar com CAPTCHAs no Cypress, incluindo métodos eficazes de contorno e o que fazer quando os CAPTCHAs persistem, garantindo uma automação perfeita do navegador.
9 min de leitura
How to Bypass CAPTCHAs With Cypress blog image

Neste artigo, você aprenderá:

  • O que são CAPTCHAs e se eles podem ser contornados
  • A relação entre o Cypress e os CAPTCHAs
  • Como implementar a lógica de contorno de CAPTCHA do Cypress
  • O que fazer caso o CAPTCHA ainda apareça

Vamos começar!

O que é um CAPTCHA e é possível automatizá-lo?

Um CAPTCHA, que significa “Testes de Turing públicos completamente automatizados para diferenciar computadores e humanos”, é um método usado para diferenciar usuários reais de bots automatizados. É um desafio projetado para ser simples para os humanos resolverem, mas desafiador para as máquinas. Normalmente, os CAPTCHAs são usados em partes específicas de uma página da web para manter os bots afastados.

Google reCAPTCHA, hCaptcha e BotDetect são os provedores de CAPTCHA mais populares. Eles oferecem suporte a um ou mais dos seguintes desafios:

  • CAPTCHAs baseados em texto: os usuários devem digitar uma sequência de letras e/ou números distorcidos.
  • CAPTCHAs baseados em imagens: os usuários precisam identificar objetos específicos em uma grade de imagens.
  • CAPTCHAs baseados em áudio: os usuários são solicitados a digitar as palavras que ouvem.
  • CAPTCHAs de quebra-cabeça: os usuários devem responder a uma pergunta simples ou resolver um minijogo simples, como clicar na entidade certa.
Puzzle CAPTCHA example

Os CAPTCHAs podem ser integrados a fluxos específicos de usuários para impedir que bots os completem, como o envio de um formulário:

captcha as a step of a form submission process example

Nesses casos, o CAPTCHA é sempre exibido e não pode ser facilmente contornado por lógica automatizada. Você pode integrar seu software com bibliotecas de Resolução de CAPTCHA ou utilizar serviços que dependem de operadores humanos para resolver esses desafios em tempo real. No entanto, CAPTCHAs codificados são incomuns porque são irritantes e prejudicam a experiência do usuário.

Mais comumente, os CAPTCHAs fazem parte de soluções anti-bot mais avançadas, como WAFs (Web Application Firewalls):

Example-of-a-Web-Application-Firewall

Essas soluções exibem dinamicamente um CAPTCHA quando suspeitam que o usuário atual pode ser um bot. Nesses casos, os CAPTCHAs podem ser evitados fazendo com que seu bot se comporte como um humano e utilize um navegador do mundo real. No entanto, essa é uma batalha contínua que requer a atualização constante de seu script automatizado para lidar com medidas de detecção de bots em constante evolução.

Uma solução mais eficaz para evitar CAPTCHAs é usar uma ferramenta baseada em emulação de usuário que esteja sempre atualizada, como o CAPTCHA Solver da Bright Data.

CAPTCHAs e Cypress: uma relação ruim

O Cypress é uma ferramenta de teste de front-end criada para a Web moderna. Embora possa ser usado para tarefas gerais de automação do navegador, como Scraping de dados, seu foco principal é o teste de ponta a ponta(E2E). Isso significa que ele foi projetado para interagir principalmente com sites e páginas da Web sobre os quais você tem controle.

Use o Cypress para direcionar sites externos ou de terceiros e os problemas começam a surgir. Conforme destacado na documentação oficial, a melhor prática é evitar ao máximo a interação com sites de terceiros. Uma das principais razões destacadas na documentação é especificamente o risco de ser detectado como um bot e receber um CAPTCHA.

Por que isso é um problema? Bem, porque os CAPTCHAs são projetados para impedir scripts automatizados. Assim, eles podem atrapalhar a operação de automação do navegador Cypress. Ao mesmo tempo, é importante observar que contornar CAPTCHAs no Cypress é complicado, mas possível. Saiba mais nas próximas seções!

Como lidar com CATPCHAs no Cypress

Como você acabou de aprender, os CAPTCHAs são um dos principais desafios do Cypress, conforme reconhecido pela própria ferramenta em sua documentação. No entanto, ainda não é hora de levantar a bandeira branca. Vamos explorar algumas abordagens possíveis para implementar a lógica de contorno de CAPTCHA do Cypress!

Abordagem nº 1: desativar os CAPTCHAs

Os provedores de CAPTCHA geralmente oferecem uma maneira de desativar ou pular os desafios em um ambiente de teste. Se você tem controle sobre o site onde precisa realizar a automação, deve desativar completamente o mecanismo CAPTCHA ou substituí-lo por uma versão mais simples.

Por exemplo, com o reCAPTCHA v3, você pode criar uma chave separada para ambientes de teste. Para o reCAPTCHA v2, você pode usar as seguintes chaves de teste:

  • Chave do site: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
  • Chave secreta: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

Ao usar essas chaves, você sempre obterá um widget reCAPTCHA “Sem CAPTCHA” como abaixo:

Isso mostrará uma mensagem de aviso especial para garantir que não seja usado em produção. Automatize o clique nessa verificação e a verificação anti-bot sempre será aprovada. Saiba mais na documentação do reCAPTCHA.

Observe que outros provedores de CAPTCHA oferecem mecanismos semelhantes.

Abordagem nº 2: automatizar a interação com o CAPTCHA

Alguns CAPTCHAs exigem apenas ações simples, como clicar em uma caixa de seleção, como no widget “Sem CAPTCHA” do reCAPTCHA:

Simple clicking CAPTCHA example

Esses desafios podem parecer simples, mas na verdade podem ser sofisticados, analisando os movimentos do mouse para determinar se você é humano. Ainda assim, nem todos os CAPTCHAs são tão complexos. Alguns são projetados para impedir bots básicos e são mais simples de contornar. Nesses casos, você pode tentar automatizá-los usando alguma lógica do Cypress.

Se você inspecionar o elemento CAPTCHA do exemplo acima, verá que ele é um iframe:

Inspecting the CAPTCHA element

Esse é um comportamento comum para a maioria dos provedores de CAPTCHA.

Lembre-se de que o Cypress não pode lidar automaticamente com iframes entre domínios. Para superar essa limitação, defina a propriedade chromeWebSecurity como false no arquivo cypress.json:

{

"chromeWebSecurity": false

}

Você pode então selecionar o elemento da caixa de seleção CAPTCHA e clicar nele. No caso de um widget reCAPTCHA “No CAPTCHA”, o código de automação para fazer isso será:

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

.its('0.contentDocument')

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

Lembre-se de que isso é apenas uma solução alternativa e não funcionará na maioria das situações. Os CAPTCHAs se tornaram sofisticados o suficiente para distinguir entre cliques de um robô e de um humano. No final das contas, é exatamente isso que um CAPTCHA representa.

Automatizar CAPTCHAs é um jogo de gato e rato, e o que funciona hoje pode não funcionar amanhã. Para conhecer as abordagens mais atualizadas, confira o GitHub gist, de onde vem essa abordagem.

Abordagem nº 3: integrar um navegador antibot

As duas abordagens anteriores de contorno de CAPTCHA do Cypress exigem muitas suposições para serem usadas contra um alvo real. Uma solução mais eficaz é configurar o Cypress para controlar um navegador anti-detecção. Se você não está familiarizado com essa ferramenta, um navegador anti-detecção é um navegador especializado projetado para impedir que sites detectem comportamentos automatizados.

Por padrão, o Cypress fornece acesso a um dos navegadores instalados localmente da seguinte lista:

  • Chrome
  • Chrome Beta
  • Chrome Canary
  • Chromium
  • Edge
  • Edge Beta
  • Edge Canary
  • Edge Dev
  • Electron
  • Firefox
  • Firefox Developer Edition
  • Firefox Nightly
  • WebKit (Experimental)

Além desses, ele suporta qualquer navegador baseado em Chromium. Portanto, escolha um navegador baseado em Chromium da lista dos melhores navegadores anti-detecção do mercado, compre-o, baixe-o e instale-o em seu computador.

Em seguida, você pode instruir o Cypress a iniciar um script com o navegador especificado, conforme abaixo:

cypress open --browser <caminho_para_o_seu_navegador>

Onde <caminho_para_o_seu_navegador> é o caminho absoluto para a pasta que contém o binário do seu navegador anti-detecção.

Da mesma forma, você pode configurar a interface do Cypress para mostrar seu navegador anti-detecção como uma opção selecionável, adicionando o seguinte código em cypress.config.js:

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),

}

},

},

})

Observe que instruir o Cypress a executar seu código automatizado em um navegador anti-detecção apenas reduzirá a chance de você ser detectado como um bot. Se os sistemas anti-bot perceberem que você está executando um código automatizado, eles ainda poderão aplicar alguns CAPTCHAs para impedi-lo.

As soluções de contorno de CAPTCHA do Cypress acima não funcionam: o que fazer agora?

Todos os três métodos apresentados acima têm algumas desvantagens importantes:

  • Abordagem nº 1: requer que você tenha acesso ao código do site de destino, o que não é o caso quando se trata de sites externos online.
  • Abordagem nº 2: funciona apenas contra CAPTCHAs muito simples e não é uma técnica confiável.
  • Abordagem nº 3: requer a compra de um serviço externo, você pode ter que gastar dinheiro adicional para integração de Proxy e só ajuda a evitar CAPTCHAs, não a resolvê-los.

Embora valha a pena tentar todos eles, nenhum permite que você ignore CAPTCHAs programaticamente em sua automação Cypress.

Procurando um verdadeiro bypassador de CAPTCHA Cypress? Experimente as soluções de Scraping de dados da Bright Data!

Elas oferecem recursos superiores de desbloqueio graças a um recurso dedicado de Resolução de CAPTCHA para lidar automaticamente com reCAPTCHA, hCaptcha, px_captcha, SimpleCaptcha, GeeTest CAPTCHA, FunCaptcha, Cloudflare Turnstile, AWS WAF Captcha, KeyCAPTCHA e muitos outros.

Integrar o CAPTCHA Solver da Bright Data ao seu script é simples, pois ele funciona com qualquer cliente HTTP ou ferramenta de automação de navegador, incluindo o Cypress.

Saiba mais sobre como usar o Web Unlocker da Bright Data. Além disso, confira a documentação para obter todos os detalhes de integração e configuração.

Conclusão

Neste artigo, você aprendeu sobre CAPTCHAs e por que eles representam um desafio significativo para o Cypress. Você também explorou três métodos diferentes para contorná-los, mas cada uma dessas abordagens tem sérias limitações.

Não importa o quão avançada seja a lógica de contorno de CAPTCHA do Cypress, sistemas sofisticados de detecção de bots ainda podem identificar seu script como automatizado. A melhor solução é conectar-se ao site de destino por meio de uma API de desbloqueio que pode retornar o HTML sem CAPTCHA de qualquer página da web.

Essa API existe e é chamada de Web Unlocker. Ela alterna automaticamente o IP de saída a cada solicitação por meio da integração de Proxy, lida com impressões digitais do navegador, realiza novas tentativas automáticas e resolve CAPTCHAs para você. As medidas antibots não são mais um problema!

Registre-se agora e veja qual dos produtos da Bright Data melhor atende às suas necessidades. Comece com um teste grátis hoje mesmo.