CAPSOLVER
Blog
Como resolver Captcha da AWS usando Puppeteer [JavaScript] com a Extensão CapSolver

Como resolver Captcha AWS usando o Puppeteer [JavaScript] com a Extensão CapSolver

Logo of CapSolver

Adélia Cruz

Neural Network Developer

25-Nov-2025

Principais pontos

  • Desafio principal: Tarefas de automação de busca de IA em larga escala usando Puppeteer são frequentemente bloqueadas por segurança avançada como AWS WAF CAPTCHA.
  • Solução: O método mais confiável para automação de navegador é integrar um serviço especializado de resolução de CAPTCHA diretamente no ambiente do navegador ou usar uma chamada de API direta.
  • Implementação: Carregando a Extensão CapSolver em uma instância do Chromium controlada pelo Puppeteer, você pode resolver automaticamente os desafios do AWS WAF sem chamadas de API complexas no seu script principal. Alternativamente, a API CapSolver oferece uma solução poderosa e headless.
  • Melhor prática: Usar uma extensão de navegador com Puppeteer é uma melhor prática poderosa para manter uma alta taxa de sucesso em automação de busca de IA.

I. Introdução

A automação de busca de IA e raspagem de web, ferramentas como Puppeteer se tornaram indispensáveis para controlar navegadores headless e simular interações humanas. No entanto, à medida que a automação escala, a sofisticação das medidas anti-bot também aumenta. Um dos desafios mais formidáveis hoje é o CAPTCHA do AWS WAF, que frequentemente interrompe a coleta em larga escala de dados, resultando em falhas de tarefas e desperdício de recursos.

Este artigo fornece um guia técnico direcionado para desenvolvedores de JavaScript usando Puppeteer. Demonstraremos uma melhor prática altamente eficaz: integrar a Extensão CapSolver diretamente ao seu setup do Puppeteer. Este abordagem permite que a extensão trate o processo de resolução de CAPTCHA baseado em IA para desafios do AWS WAF de forma suave. Além disso, para cenários que exigem uma abordagem puramente headless e baseada em API, forneceremos um exemplo detalhado de JavaScript usando a CapSolver API, garantindo que sua automação de busca de IA permaneça estável, ininterrupta e altamente bem-sucedida.

II. Entendendo o Desafio do CAPTCHA do AWS WAF

O CAPTCHA do AWS WAF é uma camada de segurança robusta que vai além da simples reconhecimento de imagem. Ele frequentemente envolve:

  1. Análise de comportamento: Monitorando movimentos do mouse, entradas do teclado e padrões de navegação para detectar comportamento não humano.
  2. Desafios do lado do cliente: Injetando desafios de JavaScript complexos que exigem um ambiente de navegador real e totalmente funcional para serem executados corretamente.
  3. Verificação baseada em token: Requerendo um aws-waf-token válido presente nas requisições subsequentes, que é gerado apenas após o desafio ser resolvido com sucesso.

Para automação de busca de IA em larga escala, lidar manualmente com esses desafios é inviável. É aí que ferramentas especializadas de resolução de CAPTCHA, particularmente aquelas integradas diretamente ao ambiente do navegador ou via API, se tornam uma melhor prática crucial.

A Extensão CapSolver atua como uma ponte, detectando automaticamente e resolvendo desafios de CAPTCHA encontrados pelo navegador e injetando o token de solução necessário. Este é um método muito mais simples e robusto para automação de navegador do que usar a API diretamente no seu script Puppeteer.

Passo 1: Baixar e Configurar a Extensão CapSolver

Antes de integrar com Puppeteer, você precisa dos arquivos da extensão e da chave de API configurada.

  1. Baixar: Baixe o arquivo ZIP da Extensão Chrome do CapSolver do site oficial do CapSolver e extraia-o para um diretório local (ex: ./capsolver-extension).
  2. Configurar: Abra o arquivo de configuração da extensão (geralmente config.js ou similar) e insira sua chave de API do CapSolver. Isso autentica a extensão com sua conta.

Passo 2: Iniciando o Puppeteer com a Extensão

A função puppeteer.launch() do Puppeteer fornece uma opção para carregar extensões não compactadas usando o parâmetro args.

javascript Copy
const puppeteer = require('puppeteer');
const path = require('path');

// Defina o caminho para a pasta da extensão do CapSolver extraída
const extensionPath = path.join(__dirname, 'capsolver-extension');

async function launchBrowserWithExtension() {
    const browser = await puppeteer.launch({
        headless: false, // Deve ser não headless para que a extensão funcione de forma confiável
        args: [
            `--disable-extensions-except=${extensionPath}`,
            `--load-extension=${extensionPath}`,
            '--no-sandbox', // Recomendado para alguns ambientes
        ],
    });
    return browser;
}

// Exemplo de uso:
// const browser = await launchBrowserWithExtension();
// const page = await browser.newPage();
// await page.goto('https://seu-site-protegido-pelo-aws-waf.com');

Passo 3: O fluxo de automação de busca de IA

Assim que o navegador for iniciado com a Extensão CapSolver, o fluxo de automação se torna significativamente mais simples. A extensão monitora automaticamente a página. Se um CAPTCHA do AWS WAF for detectado, a extensão assume, resolve-o usando o serviço CapSolver e a página recarrega ou prossegue automaticamente.

O núcleo do seu script de automação de busca de IA simplesmente precisa navegar até a página de destino e esperar que o CAPTCHA seja resolvido.

javascript Copy
const puppeteer = require('puppeteer');
const path = require('path');

// ... (função launchBrowserWithExtension do Passo 2) ...

async function runAwsWafAutomation() {
    const browser = await launchBrowserWithExtension();
    const page = await browser.newPage();

    // 1. Navegue até a URL protegida pelo AWS WAF
    const targetUrl = 'https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest'; // URL de exemplo
    console.log(`Navegando para ${targetUrl}...`);
    await page.goto(targetUrl, { waitUntil: 'domcontentloaded' });

    // 2. Aguarde a resolução do CAPTCHA
    // A Extensão CapSolver automaticamente detecta e resolve o CAPTCHA do AWS WAF.
    
    // MELHOR PRÁTICA: Aguarde a ausência do elemento CAPTCHA ou a presença do conteúdo alvo.
    try {
        // Supondo que o CAPTCHA tenha um seletor específico, ex: '#aws-waf-captcha-container'
        // Esperamos que este elemento desapareça (ou seja, o CAPTCHA seja resolvido e a página prosseguir)
        console.log("Aguardando a resolução do CAPTCHA do AWS WAF pela Extensão CapSolver...");
        await page.waitForSelector('#aws-waf-captcha-container', { hidden: true, timeout: 60000 });
        console.log("CAPTCHA resolvido! Prosseguindo com a automação de busca de IA.");
        
        // 3. Continue com a lógica da automação de busca de IA
        // Exemplo: Extração de dados da página agora acessível
        const pageTitle = await page.title();
        console.log(`Título da página (Após CAPTCHA): ${pageTitle}`);
        
    } catch (error) {
        console.error("Tempo esgotado ou falha na resolução do CAPTCHA:", error.message);
    }

    await browser.close();
}

// runAwsWafAutomation();

IV. Método 2: Automação de busca de IA headless com API CapSolver (Alternativa)

Para desenvolvedores que preferem um ambiente puramente headless ou precisam integrar a lógica de resolução de CAPTCHA a uma aplicação que não use navegador, a API CapSolver oferece uma alternativa robusta. Este método exige que você extraia manualmente os parâmetros necessários do AWS WAF (awsKey, awsIv, awsContext, etc.) da página bloqueada e os passe para a API.

Resgate seu código de bônus do CapSolver

Não perca a chance de otimizar ainda mais suas operações! Use o código de bônus CAPN ao recarregar sua conta do CapSolver e receba um bônus adicional de 5% em cada recarga, sem limites. Acesse o CapSolver para resgatar seu bônus agora!

Implementação da API (JavaScript - Node.js)

Este exemplo usa a API fetch padrão (disponível no Node.js moderno) para se comunicar com o CapSolver, com base na estrutura de tarefa fornecida na documentação do CapSolver.

javascript Copy
const fetch = require('node-fetch'); // Use 'node-fetch' para versões mais antigas do Node.js, ou fetch nativo para versões mais recentes

const CAPSOLVER_API_KEY = 'SUA_CHAVE_DE_API_DO_CAPSOLVER';
const API_URL = 'https://api.capsolver.com';

/**
 * Resolve o CAPTCHA do AWS WAF usando a API CapSolver.
 * @param {string} websiteURL A URL da página que exibe o CAPTCHA.
 * @param {object} awsParams Os parâmetros extraídos da página bloqueada (awsKey, awsIv, awsContext, etc.).
 * @returns {Promise<string>} O valor do cookie aws-waf-token.
 */
async function solveAwsWafCaptcha(websiteURL, awsParams) {
    // 1. Crie a tarefa
    const createTaskPayload = {
        clientKey: CAPSOLVER_API_KEY,
        task: {
            type: "AntiAwsWafTaskProxyLess", // Use AntiAwsWafTask se precisar especificar um proxy
            websiteURL: websiteURL,
            ...awsParams // Passe os parâmetros extraídos
        }
    };

    let response = await fetch(`${API_URL}/createTask`, {
        method: 'POST',
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify(createTaskPayload)
    });
    let result = await response.json();

    if (result.errorId !== 0) {
        throw new Error(`Erro da API do CapSolver (createTask): ${result.errorDescription}`);
    }

    const taskId = result.taskId;
    console.log(`Tarefa criada com ID: ${taskId}. Aguardando resultado...`);

    // 2. Verifique o resultado
    const getResultPayload = {
        clientKey: CAPSOLVER_API_KEY,
        taskId: taskId
    };

    let solution = null;
    for (let i = 0; i < 15; i++) { // Verifique até 15 vezes (máximo 30 segundos)
        await new Promise(resolve => setTimeout(resolve, 2000)); // Aguarde 2 segundos

        response = await fetch(`${API_URL}/getTaskResult`, {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(getResultPayload)
        });
        result = await response.json();

        if (result.errorId !== 0) {
            throw new Error(`Erro da API do CapSolver (getTaskResult): ${result.errorDescription}`);
        }

        if (result.status === 'ready') {
            solution = result.solution;
            break;
        }
        console.log(`Status: ${result.status}. Tentando novamente...`);
    }

    if (!solution || !solution.cookie) {
        throw new Error("A API do CapSolver não retornou um token válido dentro do tempo limite.");
    }

    // A solução.cookie contém o aws-waf-token
    return solution.cookie;
}

// Exemplo de uso em um script Puppeteer headless:
/*
async function runHeadlessApiAutomation() {
    // 1. Use o Puppeteer para navegar e extrair parâmetros do AWS WAF (ex: de um tag de script ou resposta de rede)
    // Este passo exige habilidades avançadas de Puppeteer para interceptar requisições de rede ou analisar o código HTML.
    const websiteURL = 'https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest';
    const extractedAwsParams = {
        awsKey: "AQIDAHjcYu/GjX+QlghicBg......", 
        awsIv: "CgAAFDIlckAAAAid",
        awsContext: "7DhQfG5CmoY90ZdxdHCi8WtJ3z......",
        // ... outros parâmetros opcionais
    };

    try {
        const awsWafToken = await solveAwsWafCaptcha(websiteURL, extractedAwsParams);
        console.log(`Token AWS WAF obtido com sucesso: ${awsWafToken.substring(0, 30)}...`);

        // 2. Injete o token de volta na sessão do Puppeteer ou use-o em um cabeçalho/cookie de requisição subsequente
        // Exemplo: Injetando como um cookie para a próxima requisição
        // await page.setCookie({
        //     name: 'aws-waf-token',
        //     value: awsWafToken,
        //     domain: new URL(websiteURL).hostname,
        //     path: '/',
        // });
        // await page.reload({ waitUntil: 'networkidle0' });

    } catch (error) {
        console.error("Automação via API falhou:", error.message);
    }
}
*/

V. Automação de busca de IA - Melhores práticas: Além do CAPTCHA

Enquanto a resolução de CAPTCHA é crítica, um sistema de automação de busca de IA bem-sucedido exige uma abordagem de múltiplas camadas.

Melhor prática Descrição Relevância para Puppeteer/JS
Modo de Disfarce Use bibliotecas como puppeteer-extra com o puppeteer-extra-plugin-stealth para esconder as marcas de automação. Essencial para passar nos primeiros testes de robô antes que o CAPTCHA do AWS WAF seja apresentado.
Rotação de IP Integre um serviço de proxy para rotacionar endereços IP, evitando limitação de taxa e banimentos de IP. Use o argumento --proxy-server em puppeteer.launch() para rotear o tráfego por um proxy de residência de alta qualidade.
Atrasos semelhantes aos humanos Implemente atrasos aleatórios e não lineares entre as ações (ex: digitação, clique, rolagem). Use page.waitForTimeout(Math.random() * 3000 + 1000) para introduzir atrasos aleatórios entre 1 e 4 segundos.
Gerenciamento de sessão Persista cookies e armazenamento local entre sessões para manter um perfil de usuário consistente. Use a opção userDataDir em puppeteer.launch() para salvar e reutilizar perfis de navegador.

VI. Conclusão e Chamada para Ação (CTA)

A combinação do controle robusto do navegador do Puppeteer e as capacidades especializadas de resolução de CAPTCHA da CapSolver oferece uma solução definitiva para o desafio do CAPTCHA do AWS WAF na automação de busca de IA. Para ambientes puramente headless, a API CapSolver fornece a potência e flexibilidade necessárias. Ao adotar essas melhores práticas, os desenvolvedores podem garantir que seus pipelines de coleta de dados sejam resistentes, eficientes e mantenham uma alta taxa de sucesso.

Pronto para aumentar a taxa de sucesso da sua automação? Pare de deixar que bloqueios de CAPTCHA interrompam seu fluxo de trabalho. Clique aqui para saber mais sobre a Extensão CapSolver e suas poderosas capacidades de resolução do AWS WAF, e comece sua avaliação gratuita hoje mesmo!

VII. Perguntas Frequentes (FAQ)

Q1: Por que usar a Extensão CapSolver em vez da API para Puppeteer?

Embora a API do CapSolver seja altamente eficaz, usar a Extensão simplifica significativamente o código. A Extensão opera dentro do contexto do navegador, detectando automaticamente o CAPTCHA, resolvendo-o e injetando o token/cookie necessário (aws-waf-token) sem exigir que seu script principal do Puppeteer gerencie o ciclo complexo de requisição/resposta da API. Esta é uma melhor prática crucial para código de automação de navegador limpo e sustentável.

Q2: A Extensão CapSolver funciona no modo headless?

Para que a Extensão CapSolver funcione de forma confiável, especialmente para desafios comportamentais complexos como CAPTCHA do AWS WAF, geralmente é recomendado executar o Puppeteer no modo não headless (headless: false). Isso garante o ambiente completo do navegador, incluindo os scripts de fundo da extensão e os componentes visuais, para lidar com o desafio.

Q3: Qual é a principal diferença entre CAPTCHA do AWS WAF e reCAPTCHA v3?

CAPTCHA do AWS WAF é normalmente um desafio de bloqueio direto implementado pelo Amazon Web Application Firewall, frequentemente exigindo um token para prosseguir. O reCAPTCHA v3, por outro lado, é um sistema baseado em pontuação que funciona em segundo plano. No entanto, ambos dependem fortemente da análise comportamental, tornando o uso de técnicas de stealth e serviços especializados de resolução de CAPTCHA uma prática recomendada para ambos.

Q4: Como posso garantir que meu script Puppeteer não seja detectado como bot?

Além de usar a Extensão CapSolver para resolução de CAPTCHA, você deve implementar práticas recomendadas de automação de busca com IA, como:

  • Usar puppeteer-extra com plugins de stealth.
  • Implementar pausas aleatórias e semelhantes às humanas.
  • Rotacionar proxies residenciais de alta qualidade.
  • Manter um perfil de navegador persistente (userDataDir).

Q5: Onde posso encontrar mais informações sobre a integração do CapSolver e Puppeteer?

Você pode encontrar guias detalhados e exemplos de código no blog do CapSolver:

Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.

Mais