Como contornar CAPTCHAs com o Playwright

Aprenda a contornar CAPTCHAs usando o Playwright e garanta que suas tarefas de Scraping de dados sejam executadas sem interrupções.
10 min de leitura
How to Bypass CAPTCHAs With Playwright blog image

Neste guia, você aprenderá:

  • O que é um CAPTCHA e se ele pode ser evitado
  • Como implementar a lógica de bypass do CAPTCHA do Playwright
  • O que fazer caso o CAPTCHA ainda apareça.

Hora de mergulhar no assunto!

O que são CAPTCHAs e é possível contorná-los?

CAPTCHA, abreviação de “Completely Automated Public Turing tests to tell Computers and Humans Apart” (Testes de Turing públicos completamente automatizados para diferenciar computadores e humanos), é um teste usado para distinguir usuários humanos de bots automatizados. É um desafio projetado especificamente para ser fácil para humanos, mas difícil para máquinas resolverem. 

Example of a CAPTCHA

Os provedores populares de CAPTCHA incluem Google reCAPTCHA, hCaptcha e BotDetect. Eles geralmente suportam um ou mais dos tipos de CAPTCHA abaixo:

  • Desafios baseados em imagens: os usuários devem identificar objetos específicos em uma grade de imagens ou identificar imagens que atendam a uma determinada suposição.
  • Desafios baseados em texto: os usuários devem digitar uma sequência de letras e números distorcidos.
  • Desafios baseados em áudio: os usuários devem digitar as palavras que ouvem.
  • Desafios de quebra-cabeças: os usuários devem resolver um quebra-cabeça simples, como deslizar uma peça para o lugar certo.

Os CAPTCHAs podem fazer parte de um fluxo específico do usuário, como a etapa final do 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 realmente evitado por bots. O que você pode fazer é integrar seu software com bibliotecas de resolução de CAPTCHA para automatizá-los ou serviços que dependem de operadores humanos para resolver esses desafios em tempo real. No entanto, CAPTCHAs codificados não são comuns porque são irritantes e prejudicam a experiência do usuário.

Mais comumente, os CAPTCHAs são usados como parte de soluções anti-bot mais amplas, como WAFs (Web Application Firewalls):

Example of a Web Application Firewall

Esses sistemas exibem dinamicamente um CAPTCHA quando suspeitam que o usuário pode ser um bot. Nesses casos, os CAPTCHAs podem ser contornados fazendo seu bot imitar o comportamento humano. Ainda assim, esse é um jogo de gato e rato que requer a atualização contínua do seu script automatizado para evitar novas medidas de detecção de bots.

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

Playwright Bypass CAPTCHA: tutorial passo a passo

Como você acabou de aprender, uma abordagem eficaz para evitar CAPTCHAs é fazer com que seu script automatizado simule comportamentos humanos enquanto use uma impressão digital semelhante à humana. Uma das melhores ferramentas para esse fim é o Playwright, uma biblioteca líder em automação de navegadores que aparece na lista das melhores ferramentas de Scraping de dados do ano.

Nesta seção do tutorial, você verá como implementar a lógica de contorno de CAPTCHA do Playwright. Você aprenderá como atingir esse objetivo usando um script Node.js em JavaScript. Se você é um desenvolvedor Python, pode dar uma olhada em nosso guia equivalente sobre o Playwright Stealth.

Vamos começar!

Etapa 1: inicialize seu projeto Node.js

Se você já tem um script de Scraping de dados ou teste do Playwright, pode pular esta etapa. Caso contrário, crie uma pasta para o seu projeto de solucionador de CAPTCHA do Playwright e insira-a no terminal:

mkdir playwright_demo

cd playwright_demo

Inicialize um novo projeto Node.js dentro dela com o comando npm init abaixo:

npm init -y

Abra a pasta do projeto em seu IDE JavaScript favorito e adicione um novo arquivo script.js.

Adding a new script.js file in the IDE

Em seguida, não se esqueça de abrir o package.json e marcar seu projeto como um módulo adicionando:

"type": "module"

Ótimo, a pasta do seu projeto agora contém um aplicativo Node.js.

Etapa 2: Instale o Playwright Extra

Uma das fraquezas conhecidas do Playwright é que ele não oferece suporte a plug-ins. A comunidade compensou essa deficiência com o Playwright Extra, uma biblioteca que amplia o Playwright com suporte a plug-ins.

Adicione playwright e playwright-extra às dependências do seu projeto com este comando:

npm i playwright playwright-extra

Isso pode demorar um pouco, então seja paciente.

Passo 3: Configure seu script do Playwright

É hora de inicializar seu script para permitir que o Playwright resolva os desafios CAPTCHA. Importe o navegador que você deseja controlar do playwright-extra adicionando esta linha ao script.js:

import { chromium } from "playwright-extra"

Neste caso, vamos automatizar o comportamento humano no Chromium.

Em seguida, inicialize uma nova função assíncrona onde realizar a interação semelhante à humana usando a API do Playwright:

(async () => {

    // configure o navegador e inicie-o

    const browser = await chromium.launch()

    // abra uma nova página em branco

    const page = await browser.newPage()

    // lógica de automação do navegador...

    // feche o navegador e libere seus recursos

    await browser.close()

})()

Isso inicia uma nova instância do Chromium e abre uma nova página antes de fechar o navegador. Ótimo, você está pronto para adicionar a lógica de automação do navegador!

Etapa 4: implementar a lógica de automação do navegador

O site de destino será bot.sannysoft.com, uma página da web especial que executa alguns testes no navegador para descobrir se o usuário é um humano ou um bot. Se você tentar visitar esta página no seu navegador local, verá que todos os testes foram aprovados. 

Conecte-se à página de destino usando o método goto():

await page.goto("https://bot.sannysoft.com/")

Em seguida, faça uma captura de tela de toda a página para ver os resultados dos testes anti-bot:

await page.screenshot("results.png")

Junte tudo e você obterá o seguinte arquivo script.js:

import { chromium } from "playwright-extra"

(async () => {

    // configure o navegador e inicie-o

    const browser = await chromium.launch()

    // abra uma nova página em branco

    const page = await browser.newPage()

    // navegue até a página de destino

    await page.goto("https://bot.sannysoft.com/")

    // tire uma captura de tela de toda a página

    await page.screenshot({

        path: "results.png",

        fullPage: true

    })

    // feche o navegador e libere seus recursos

    await browser.close()

})()

Execute o código acima com o comando abaixo:

 node script.js

O script abrirá uma instância do Chromium no modo headless, visitará a página desejada, fará uma captura de tela e, em seguida, fechará o navegador. Se você abrir o arquivo results.png que aparecerá na pasta raiz do projeto ao final da execução do script, verá:

results.png file example

Como você pode ver, o Playwright básico no modo headless não passa em vários testes. É por isso que os WAFs exibem CAPTCHAs ao interagir com páginas no Playwright. A solução? O plugin Stealth!

Etapa 5: Instale o plugin Playwright Stealth

O Playwright Stealth é um plugin para o playwright-extra que impede a detecção de bots. Esse plugin substitui várias configurações para fazer com que a instância do navegador pareça natural, como se não estivesse sendo controlada pelo Playwright. Especificamente, esse módulo modifica as propriedades do navegador para impedir todos os vazamentos que expõem o navegador como automatizado. 

O plugin Stealth foi originalmente desenvolvido para o Puppeteer Extra, mas também funciona para o Playwright Extra. Instale-o através do pacote npm puppeteer-extra-plugin-stealth com este comando:

npm i puppeteer-extra-plugin-stealth

Em seguida, importe o plugin Stealth no seu arquivo script.js com esta linha:

import StealthPlugin from "puppeteer-extra-plugin-stealth"

Etapa 6: registre as configurações do Stealth

Para implementar a lógica de bypass do CAPCHA do Playwright, basta registrar o plugin Stealth no playwright-extra através do método use():

chromium.use(StealthPlugin())

O navegador controlado pelo Playwright agora aparecerá como um navegador real em uso por um usuário humano.

Passo 7: Repita o teste de detecção de bot

Aqui está como seu arquivo script.js deve estar atualmente:

import { chromium } from "playwright-extra"

import StealthPlugin from "puppeteer-extra-plugin-stealth"

(async () => {

    // registre o plugin Stealth

    chromium.use(StealthPlugin())

    // configurar o navegador e iniciá-lo

    const browser = await chromium.launch()

    // abrir uma nova página em branco

    const page = await browser.newPage()

    // navegar até a página de destino

    await page.goto("https://bot.sannysoft.com/")

    // tirar uma captura de tela de toda a página

    await page.screenshot({

        path: "results.png",

        fullPage: true

    })

    // fechar o navegador e liberar seus recursos

    await browser.close()

})()

Execute o script novamente:

node script.js

Abra results.png novamente e você verá que todos os testes de detecção de bots foram aprovados:

results.png file second example - bot-detection tests passed

Et voilà! O truque para contornar o CAPTCHA do Playwright está completo!

E se a solução do solucionador de CAPTCHA do Playwright acima não funcionar?

Infelizmente, as configurações do navegador não são o único aspecto em que as ferramentas anti-bot concentram sua atenção. A reputação do IP é outro fator importante, e você não pode simplesmente alterar seu IP de saída com uma biblioteca gratuita. Você precisa da integração do Proxy Playwright para isso!

Assim, os CAPTCHAs ainda podem aparecer mesmo que você configure seu navegador de maneira ideal. Para CAPTCHAs simples que requerem apenas um único clique, você pode usar o plugin puppeteer-extra-plugin-recaptcha. No entanto, a abordagem baseada em plugins do capítulo anterior funciona apenas contra medidas anti-bot básicas. Ao lidar com ferramentas mais complexas, como o Cloudflare, você precisa de algo mais poderoso.

Procurando um solucionador de CAPTCHA Playwright real? Experimente as soluções de scraping de dados da Bright Data!

Elas oferecem recursos superiores de desbloqueio com 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 é fácil, pois ele funciona com qualquer cliente HTTP ou ferramenta de automação de navegador.

Saiba mais sobre como usar o CAPTCHA Solver 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 por que os CAPTCHAs representam um desafio para o Playwright e como lidar com eles. Usando a biblioteca Playwright Stealth, você pode substituir a configuração padrão do navegador para contornar a detecção de bots. Ainda assim, essa abordagem pode não ser sempre suficiente.

Não importa o quão sofisticado seja o seu script Playwright, os sistemas avançados de detecção de bots ainda podem identificá-lo como um bot. A solução é conectar-se à sua página de destino por meio de uma API de desbloqueio que pode retornar perfeitamente o HTML sem CAPTCHA de qualquer página da web.

Essa API existe e é chamada Web Unlocker. Seu objetivo é alternar automaticamente o IP de saída a cada solicitação por meio da integração de Proxy, lidar com impressões digitais do navegador, novas tentativas automáticas e resolução de CAPTCHA para você. Esqueça as medidas antibots!

Registre-se agora e comece seu teste gratuito hoje mesmo.