Neste guia, você aprenderá:
- O que são CAPTCHAs e se você pode ignorá-los
- Como usar o Puppeteer para contornar CAPTCHAs por meio de um tutorial passo a passo
- O que fazer se o processo com o Puppeteer não funcionar
Vamos começar!
O que são CAPTCHAs? E você pode contorná-los?
Um CAPTCHA (teste de Turing público completamente automatizado para distinguir computadores de humanos) é um teste de desafio-resposta que distingue humanos de bots automatizados. Para atingir seus objetivos, os CAPTCHAs são projetados para serem facilmente resolvidos por humanos, mas difíceis para softwares.
Os provedores populares de CAPTCHA incluem Google reCAPTCHA, hCaptcha e BotDetect, e os tipos comuns de CAPTCHA são:
- Baseados em texto: nesses desafios, os usuários precisam reconhecer letras e números e digitá-los.
- Baseados em imagens: esses testes exigem que os usuários identifiquem objetos específicos em uma grade de imagens, selecionando as imagens corretas.
- Baseados em áudio: neste tipo, os usuários precisam escrever as letras que ouvem.
- Desafios de quebra-cabeças: esse tipo de desafio exige que os usuários resolvam um quebra-cabeça simples, deslizando uma peça para o lugar dedicado.
Os CAPTCHAs são projetados para serem difíceis de serem contornados por softwares automatizados e bots. Portanto, o que você pode fazer é integrar seu software a bibliotecas ou serviços de Resolução de CAPTCHA que dependem de operadores humanos para automatizar esses desafios e resolvê-los.
No entanto, CAPTCHAs codificados não são comuns porque têm um impacto negativo na experiência geral do usuário no site. Por esse motivo, é mais comum que os CAPTCHAs sejam usados como parte de soluções anti-bot mais amplas, como WAFs (Web Application Firewalls):

Nesses casos, o sistema exibe dinamicamente um CAPTCHA quando há suspeita de que um bot está realizando alguma atividade no site. Para contornar esses CAPTCHAs, você precisa desenvolver um bot que imite o comportamento humano. Embora isso seja possível, requer muito esforço, principalmente porque você precisa atualizar seus scripts com frequência para se antecipar às novas técnicas e métodos de detecção de bots.
A boa notícia é que existe uma solução mais eficaz para contornar CAPTCHAs: o CAPTCHA Solver da Bright Data! Essa ferramenta sempre atualizada resolve todos os seus problemas relacionados ao contorno de CAPTCHAs sem nenhuma dor de cabeça.
Como contornar CAPTCHAs com o Puppeteer: tutorial passo a passo
Agora é hora de criar um script automatizado que imite o comportamento humano para contornar CAPTCHAs.
Para isso, você pode usar o Puppeteer: uma biblioteca JavaScript que fornece uma API de alto nível que controla navegadores da web e, portanto, pode ser usada para imitar comportamentos humanos.
Vamos começar!
Etapa 1: Configuração do projeto
Suponha que você chame a pasta principal do seu projeto de bypass_captcha_puppeteer. Aqui está a estrutura que o repositório deve ter:
bypass_captcha_puppeteer/
├── index.js
└── package.json
Você pode criar com:
mkdir bypass_captcha_puppeteer
Em seguida, entre na pasta do projeto e execute npm init para inicializar um aplicativo Node.js:
cd bypass_captcha_puppeteer
npm init -y
Em seguida, crie um arquivo index.js dentro dele.
Instale o Puppeteer conforme abaixo:
npm install puppeteer
Etapa 2: use a notação ESM Javascript
Para usar a notação ECMAScript Modules em Javascript, o arquivo package.json deve ter a opção "type": "module".
Veja como o arquivo package.json deve ficar:
{
"name": "bypass_captcha_puppeteer",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"puppeteer": "^23.10.4"
}
}
Etapa 3: tente ignorar o CAPTCHA com o Puppeteer
Escreva o seguinte código no arquivo index.js para ver se o Puppeteer aparece como um bot ou não:
import puppeteer from 'puppeteer';
const visitBotAnalyzerPage = async () => {
try {
// inicializar o navegador
const browser = await puppeteer.launch();
// abrir uma nova página do navegador
const page = await browser.newPage();
// navegar até o URL de destino
const url = 'https://bot.sannysoft.com/';
console.log(`Navegando até ${url}...`);
await page.goto(url, { waitUntil: 'networkidle2' });
// salvar uma captura de tela da página inteira
console.log('Fazendo captura de tela da página inteira...');
await page.screenshot({ path: 'anti-bot-analysis.png', fullPage: true });
console.log('Captura de tela feita');
// fechar o navegador
await browser.close();
console.log('Navegador fechado');
} catch (error) {
console.error('Ocorreu um erro:', error);
}
};
// executar o script
visitBotAnalyzerPage();
Veja o que esse código faz:
- Inicia o navegador: o método
puppeteer.launch()inicia uma nova instância do navegador com interface do usuário visível (headless: false). - Abre uma nova página do navegador:
browser.newPage()cria uma nova página em branco do navegador, onde outras ações podem ser realizadas. - Acessa a página de destino: o método
page.goto()redireciona para a página de destino, que é Intoli.com tests, uma página projetada para entender se uma solicitação vem de um bot ou não. - Salva uma captura de tela dos resultados: o método
page.screenshot()obtém uma captura de tela dos resultados e a salva. - Fecha o navegador e trata erros: O método
browser.close()fecha o navegador e intercepta eventuais erros.
Para executar o código, digite:
node index.js
Agora você pode abrir a imagem salva. Este é o resultado esperado:

Portanto, o Puppeteer não passou em alguns testes, como mostra a imagem. Consequentemente, os WAFs provavelmente exibirão CAPTCHAs ao interagir com páginas com o Puppeteer.
Para resolver esses problemas, vamos usar o Puppeteer Stealth!
Etapa 4: instale o plug-in Stealth
O Puppeteer Extra é um wrapper leve para o Puppeteer que, entre outras coisas, permite instalar o plugin Stealth, que impede a detecção de bots ao substituir várias configurações para fazer com que a instância do navegador pareça natural e “humana”.
Instale essas bibliotecas da seguinte maneira:
npm install puppeteer-extra puppeteer-extra-plugin-stealth
Importe o Puppeteer do puppeteer-extra em vez do puppeteer:
import puppeteer from 'puppeteer-extra';
Fantástico! Você está pronto para usar o plugin Stealth para tentar evitar CAPCHAs com o Puppeteer.
Etapa 5: repita o teste com o Stealth Plugin
Agora você precisa implementar o plugin Stealth com esta linha de código:
puppeteer.use(StealthPlugin()).
Assim, o código fica assim:
import puppeteer from 'puppeteer-extra';
import StealthPlugin from 'puppeteer-extra-plugin-stealth';
// Adicione o plugin Stealth ao Puppeteer
puppeteer.use(StealthPlugin());
const visitBotAnalyzerPage = async () => {
try {
// inicie o navegador com as configurações Stealth
const browser = await puppeteer.launch();
console.log('Iniciando o navegador no modo Stealth...');
// abrir uma nova página
const page = await browser.newPage();
// navegar até a página de destino
const url = 'https://bot.sannysoft.com/';
console.log(`Navegando até ${url}...`);
await page.goto(url, { waitUntil: 'networkidle2' });
// salvar a captura de tela da página inteira
console.log('Fazendo captura de tela da página inteira...');
await page.screenshot({ path: 'anti-bot-analysis.png', fullPage: true });
console.log(`Captura de tela feita`);
// fechar o navegador
await browser.close();
console.log('Navegador fechado. Script concluído com sucesso');
} catch (error) {
console.error('Ocorreu um erro:', error);
}
};
// executar o script
visitBotAnalyzerPage();
Agora, quando você executar o código novamente com:
node index.js
O resultado esperado é:

Viva! O script agora passa nos testes de detecção de bots, o que significa que você tem menos chances de receber CAPTCHAs com o Puppeteer!
O que fazer se o procedimento acima para contornar CAPTCHAs com o Puppeteer não funcionar
Infelizmente, o Puppeteer Extra nem sempre é a solução ideal. O motivo é que as configurações do navegador não são a única forma que os antibots utilizam para bloquear softwares automatizados.
Por exemplo, o agente do usuário é outro fator usado pelos sistemas anti-bot para bloquear softwares automatizados. Para resolver esse problema, você pode usar a biblioteca puppeteer-extra-plugin-anonymize-ua, que torna o agente do usuário anônimo.
No entanto, a abordagem baseada em plug-ins descrita anteriormente funciona apenas contra medidas anti-bots básicas: ao lidar com ferramentas mais complexas, como o Cloudflare, você precisa de algo mais poderoso.
Então… Você está procurando um solucionador de CAPTCHA Playwright de verdade? 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 comreCAPTCHA, hCaptcha, px_captcha, SimpleCaptcha, GeeTest CAPTCHA, FunCaptcha, Cloudflare Turnstile, AWS WAF Captcha, KeyCAPTCHA e muitos outros.
Integrar o solucionador de CAPTCHA da Bright Data aos seus scripts é 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 e confira a documentação para obter todos os detalhes de integração e configuração.
Conclusão
Neste artigo, você aprendeu por que contornar CAPTCHAs com o Puppeteer pode ser desafiador e como usar o plugin Stealth para substituir a configuração padrão do navegador e contornar a detecção de bots.
O problema dessa abordagem é que ela funciona apenas em cenários simples. Sistemas avançados de detecção de bots ainda podem identificá-lo como um bot e bloqueá-lo.
Portanto, ao contornar CAPTCHAs, a solução real é 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 solução existe e é chamada de 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ê.
Inscreva-se agora para descobrir quais dos produtos de scraping da Bright Data melhor atendem às suas necessidades.
Comece com um teste grátis!