Como usar Cypress para contornar CAPTCHAs

Specialist in Anti-Bot Strategies
Usuários reais podem ser distinguidos de bots automatizados usando uma técnica chamada CAPTCHA, que significa "Testes de Turing Públicos Completamente Automatizados para Diferenciar Computadores de Humanos". É uma tarefa que se destina a ser fácil para as pessoas fazerem, mas difícil para robôs realizarem. Para impedir bots, os CAPTCHAs são normalmente colocados em áreas específicas de websites.
Os fornecedores de CAPTCHA mais utilizados são o Google reCAPTCHA, hCaptcha e BotDetect. Estes ajudam com uma ou mais das seguintes dificuldades:
- CAPTCHAs baseados em texto: Para resolver estes, os utilizadores têm de fornecer uma sequência de caracteres ou números embaralhados.
- CAPTCHAs baseados em imagens: Numa grelha de fotos, os utilizadores têm de identificar coisas específicas.
- CAPTCHAs baseados em áudio: Nestes casos, o utilizador é solicitado a introduzir as palavras que ouve.
- CAPTCHAs de quebra-cabeças: Para passar, os utilizadores têm de clicar no objeto correto para completar um mini-jogo ou fornecer uma resposta simples a uma pergunta.
Pode usar serviços que dependem de operadores humanos para responder a estas dificuldades em tempo real, ou pode interligar o seu programa com bibliotecas que manipulam CAPTCHAs. No entanto, os CAPTCHAs codificados de forma rígida são raros, pois são incómodos e pioram a experiência do utilizador.
Com mais frequência, os CAPTCHAs são um componente de programas anti-bot mais sofisticados como os WAFs.
Quando estas soluções acreditam que o utilizador pode ser um bot, elas mostram dinamicamente um CAPTCHA. Nestes casos, pode impedir os CAPTCHAs fazendo com que o seu bot aja como uma pessoa e utilize um navegador genuíno. No entanto, esta é uma luta sem fim, e terá de atualizar o seu script automatizado com frequência para lidar com os algoritmos de deteção de bots em constante mudança.
Utilizar uma aplicação atualizada baseada em emulação de utilizador, como o Scrapeless' CAPTCHA Solver, é uma técnica mais eficiente para contornar os CAPTCHAs.
Está cansado de CAPTCHAs e bloqueios contínuos de web scraping?
Scrapeless: a melhor solução completa de raspagem online disponível!
Utilize o nosso formidável kit de ferramentas para libertar todo o potencial da sua extração de dados:
Best CAPTCHA solver
Resolução automatizada de CAPTCHAs complexos para garantir uma raspagem contínua e suave.
Experimente gratuitamente!
Cypress e CAPTCHAs: Uma Parceria Infeliz
O Cypress é uma ferramenta de teste de front-end concebida para a Web atual. Apesar de poder ser utilizada para web scraping e outras atividades genéricas de automatização de browser, a sua principal utilização é o teste de ponta a ponta (E2E). Portanto, destina-se principalmente a interagir com websites e páginas Web que possui ou administra.
Os problemas começam a surgir quando utiliza o Cypress para direcionar websites externos ou de terceiros. O material oficial deixa claro que o melhor curso de ação é minimizar as interações com websites de terceiros. O perigo de ser identificado como um bot e receber um CAPTCHA é uma das principais justificações mencionadas na documentação.
O que torna isto um problema? Bem, porque os CAPTCHAs são feitos para parar programas automatizados. Consequentemente, eles podem interferir com a automatização do seu browser Cypress. É também importante lembrar que, apesar de difícil, evitar os CAPTCHAs do Cypress é viável. Veja as secções seguintes para saber mais!
Como Utilizar o Cypress para Gerir CATPCHAs
Como acabou de descobrir, o Cypress reconhece na sua documentação que um dos seus maiores problemas são os CAPTCHAs. Mas ainda não é tempo de desistir. Vamos investigar algumas estratégias possíveis para pôr em prática a lógica de contornar o CAPTCHA do Cypress!
Método 1: Desativar os CAPTCHAs
A maioria dos fornecedores de CAPTCHA permite que os utilizadores contornem ou desativem obstáculos quando estão num ambiente de teste. Depois, se for responsável pelo website onde a automatização é necessária, tem de eliminar o CAPTCHA por completo ou trocá-lo por um mais simples.
Por exemplo, para cenários de teste, pode gerar uma chave diferente com o reCAPTCHA v3. Pode utilizar as seguintes chaves de teste para o reCAPTCHA v2:
- Chave do website:
6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
- Chave secreta:
6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
Método 2: Automatizar a Interação com o CAPTCHA
Certos CAPTCHAs são tão simples como assinalar uma caixa; um exemplo disso é o widget reCAPTCHA "Sem CAPTCHA".
Estas tarefas podem parecer simples à primeira vista, mas podem ser bastante complexas, pois analisam os seus movimentos de rato para identificar se é ou não humano. No entanto, nem todos os CAPTCHAs são tão difíceis. Alguns são mais fáceis de contornar e destinam-se a impedir bots simples. Em certas situações, pode tentar automatizá-los utilizando alguma lógica Cypress.
Lembre-se de que o Cypress não consegue lidar automaticamente com iframes interdomínios. Para contornar a restrição, altere a definição chromeWebSecurity
do ficheiro cypress.json
para false
:
language
{
"chromeWebSecurity": false
}
Em seguida, pode selecionar e clicar no elemento de caixa de verificação do CAPTCHA. O código automatizado para fazer isso no caso de um widget reCAPTCHA "Sem CAPTCHA" seria:
language
cy.get('iframe[src*=recaptcha]')
.its('0.contentDocument')
.should(d => d.getElementById('recaptcha-token').click())
Lembre-se que esta é apenas uma solução temporária e não será eficaz na maioria das circunstâncias. Atualmente, os CAPTCHAs são inteligentes o suficiente para distinguir entre um clique humano e um de um robô. Em última análise, esse é precisamente o propósito de um CAPTCHA.
Método 3: Incluir um Navegador Anti-Bot
Os dois métodos de bypass de CAPTCHA do Cypress anteriores são presunçosos demais para serem usados em um alvo real. Configurar o Cypress para gerenciar um navegador anti-detecção é uma maneira melhor de fazer isso. Um navegador anti-detecção é um navegador personalizado feito para impedir que os sites detectem comportamentos automatizados, caso você não esteja familiarizado com essa tecnologia.
Em seguida, você pode fornecer ao Cypress as seguintes instruções para iniciar um script no navegador designado:
language
cypress open --browser <path_to_your_browser>
Neste caso, o caminho absoluto para o seu navegador que contém o binário do navegador anti-detecção é representado por .
Da mesma forma, adicionando o seguinte código ao cypress.config.js, você pode configurar a interface do usuário do Cypress para exibir seu navegador anti-detecção como uma opção selecionável:
Da mesma forma, adicionando o seguinte código ao cypress.config.js, você pode configurar a interface do usuário do Cypress para exibir seu navegador anti-detecção como uma opção selecionável:
language
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),
}
},
},
})
Lembre-se que dizer ao Cypress para executar seu código automatizado em um navegador com recursos anti-detecção apenas diminuirá a probabilidade de ele ser interpretado como um bot. No entanto, os sistemas anti-bot podem ainda impor alguns CAPTCHAs para impedir que você continue se eles reconhecerem que você está usando código automatizado.
Conclusão
Você leu este artigo para entender sobre CAPTCHAs e os motivos pelos quais eles são um grande problema para o Cypress. Você também examinou três maneiras alternativas de contorná-los, embora haja desvantagens significativas para cada uma dessas estratégias.
Mesmo com a lógica de contornar o CAPTCHA do Cypress bem desenvolvida, seu script ainda pode ser sinalizado como automatizado por poderosos sistemas de detecção de bot. Conectar-se ao seu site de destino usando uma API de desbloqueio que pode fornecer o HTML de qualquer página sem um CAPTCHA é a melhor opção.
Existe essa API; ela é conhecida como Web Unlocker. Por meio da integração de proxy, isso gerencia a impressão digital do navegador, gira o IP de saída automaticamente com cada solicitação, inicia novas tentativas automatizadas e resolve CAPTCHAs para você. As precauções anti-bot agora são livres de problemas!
Na Scrapeless, acessamos apenas dados disponíveis publicamente, cumprindo rigorosamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve quaisquer atividades ilegais ou infratoras. Não oferecemos garantias e nos isentamos de qualquer responsabilidade pelo uso de informações deste blog ou de links de terceiros. Antes de se envolver em qualquer atividade de scraping, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.