logo
bars

Amazon AWS WAF
e CapMonster Cloud

Resolução de captcha, instalação no site e testes.
Você herdou um site com captcha ou outra camada de proteção, mas não tem acesso ao código-fonte? Então é normal querer saber qual solução está instalada, se a configuração está correta e como testar tudo.

Neste artigo, procuramos responder a todas as principais dúvidas. Para começar a resolver o problema, o primeiro passo é identificar qual sistema de proteção está sendo utilizado. Para isso, você pode consultar a lista de captchas e sistemas de proteção antibot mais populares, onde há exemplos visuais e sinais principais que ajudam a identificar rapidamente com o que você está lidando.

Se você notar que o seu site utiliza Amazon AWS WAF, o passo seguinte é estudar com mais detalhes as suas características e o seu funcionamento. Neste mesmo artigo, você também pode conferir o guia de integração do Amazon AWS WAF, para entender por completo como o sistema opera no seu site. Isso permitirá não apenas compreender a proteção atual, mas também planejar adequadamente a sua manutenção.

O que é o AWS WAF da Amazon
O que é o AWS WAF da Amazon

AWS WAF (Amazon Web Services Web Application Firewall) é um firewall de aplicação web na nuvem da Amazon que protege sites, APIs e aplicações web contra ataques e tráfego malicioso. Em termos simples, é um filtro que fica à frente do seu site ou API e decide qual tráfego de visitantes deixar passar e qual bloquear.

Se o Challenge/CAPTCHA estiver ativado no site, o visitante pode ver uma página de verificação separada. Será solicitado que ele realize uma tarefa, por exemplo, selecionar todas as imagens de uma categoria, para confirmar que não é um robô.

Como resolver o AWS WAF através do CapMonster Cloud

Ao testar recursos protegidos pelo AWS WAF, é importante garantir que a proteção funcione corretamente e esteja integrada adequadamente.

Você pode verificar manualmente o funcionamento da proteção:

  • Abra a página com o formulário ou recurso e certifique-se de que o AWS WAF responda corretamente às solicitações.
  • Tente realizar ações que possam ser limitadas pelo WAF (por exemplo, solicitações em massa, cabeçalhos suspeitos) — o servidor deve bloquear tais solicitações ou retornar um erro.

Após passar na verificação com sucesso, o AWS WAF define cookies que confirmam que o usuário ou cliente passou na verificação e que o tráfego confiável é permitido.

Para o reconhecimento automático de captcha, você pode usar serviços especializados, por exemplo, o CapMonster Cloud — uma ferramenta que aceita os parâmetros do captcha, processa-os em seus servidores e retorna cookies ou um token prontos. Eles podem ser inseridos no navegador para passar na verificação sem a participação do usuário.

Trabalhar com o CapMonster Cloud via API normalmente envolve as etapas abaixo:

Criação da tarefaCriação da tarefa
arrow
Envio da requisição APIEnvio da requisição API
arrow
Recebimento do resultadoRecebimento do resultado
arrow
Substituição de cookies aws-waf-token na páginaSubstituição de cookies aws-waf-token na página
arrow
Reconhecimento do Amazon AWS WAF usando bibliotecas prontas
O serviço CapMonster Cloud fornece bibliotecas prontas para um trabalho conveniente nas linguagens Python, JavaScript (Node.js) e C#.

Importante: estes exemplos de código usam cookieSolution=False. Se como resultado você precisar obter cookies, defina cookieSolution=True.

Python
JavaScript
C#
Solução, obtenção de parâmetros e definição de cookies
Exemplo em Node.js para o ciclo completo de reconhecimento de captcha na sua página web. Abordagens possíveis: usar solicitações HTTP para obter o HTML e os parâmetros do sistema de proteção, enviar a resposta e processar o resultado. Ou com a ajuda de ferramentas de automação (por exemplo, Playwright) — abrir a página, aguardar a verificação, enviar os parâmetros através do cliente CapMonster Cloud, obter o resultado, inserir os cookies no navegador (para testes você pode usar tanto dados corretos quanto incorretos) e ver o resultado.
// npm install playwright @zennolab_com/capmonstercloud-client
// npx playwright install chromium

import { chromium } from "playwright";
import { CapMonsterCloudClientFactory, ClientOptions, AmazonRequest } from "@zennolab_com/capmonstercloud-client";

const API_KEY = "YOUR_API_KEY";
const CAPTCHA_URL = "https://example.com";

// Configurações de proxy
const PROXY = {
    proxyType: "http",
    proxyAddress: "PROXY_HOST",
    proxyPort: 1234,
    proxyLogin: "PROXY_USER",
    proxyPassword: "PROXY_PASS"
};

(async () => {
    // 1) Abrimos a página via proxy e coletamos os parâmetros do AWS WAF
    const browser = await chromium.launch({
        headless: false,
        proxy: {
            server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
            username: PROXY.proxyLogin,
            password: PROXY.proxyPassword
        }
    });

    const page = await browser.newPage();
    await page.goto(CAPTCHA_URL, { waitUntil: "networkidle" });

    // aguardamos o carregamento dos scripts de challenge e captcha
    await page.waitForFunction(() => {
        const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
        return scripts.some(src => src.includes("challenge")) && scripts.some(src => src.includes("captcha"));
    });

    // extraímos os parâmetros do AWS WAF (chave, context, iv, links para scripts)
    const params = await page.evaluate(() => {
        const gokuProps = window.gokuProps || {};
        const scripts = Array.from(document.querySelectorAll("script")).map(s => s.src || "");
        return {
            websiteKey: gokuProps.key || null,
            context: gokuProps.context || null,
            iv: gokuProps.iv || null,
            challengeScript: scripts.find(src => src.includes("challenge")),
            captchaScript: scripts.find(src => src.includes("captcha"))
        };
    });

    await browser.close();

    // 2) Resolvemos o AWS WAF através do CapMonster Cloud
    const client = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: API_KEY }));

    const req = new AmazonRequest({
        websiteURL: CAPTCHA_URL,
        websiteKey: params.websiteKey,
        challengeScript: params.challengeScript,
        captchaScript: params.captchaScript,
        context: params.context,
        iv: params.iv,
        cookieSolution: true,
        proxy: PROXY
    });

    const solved = await client.Solve(req);
    const wafToken = solved.solution.cookies["aws-waf-token"];

    // 3) Inserimos o aws-waf-token e limpamos os antigos
    const browser2 = await chromium.launch({
        headless: false,
        proxy: {
            server: `http://${PROXY.proxyAddress}:${PROXY.proxyPort}`,
            username: PROXY.proxyLogin,
            password: PROXY.proxyPassword
        }
    });

    const context2 = await browser2.newContext();

    // limpeza de aws-waf-token antigos para o seu domínio
    const existingCookies = await context2.cookies();
    const filteredCookies = existingCookies.filter(c => !(c.name === "aws-waf-token" && c.domain.endsWith(".your-domain")));
    await context2.clearCookies();
    await context2.addCookies(filteredCookies);

    // definição do novo aws-waf-token
    await context2.addCookies([{
        name: "aws-waf-token",
        value: wafToken,
        domain: ".your-domain",
        path: "/",
        httpOnly: false,
        secure: true
    }]);

    const page2 = await context2.newPage();
    const response = await page2.goto(CAPTCHA_URL, { waitUntil: "networkidle" });

    console.log("Final page status:", response.status());
    console.log("Final page URL:", page2.url());

    await browser2.close();
})();
Como conectar o AWS WAF ao seu site
Para se orientar com confiança no funcionamento do captcha no seu site, entender a lógica da sua verificação, reconectá-lo ou reconfigurá-lo, recomendamos estudar esta seção. Nela é descrito o processo de conexão da proteção — isso ajudará você a entender rapidamente todas as nuances.

O AWS WAF não pode ser instalado diretamente em um site. Ele funciona apenas através de recursos da AWS:

  • Amazon CloudFront (a opção principal e melhor) — CDN através da qual qualquer site pode ser protegido. Funciona rápido, globalmente e é adequada para quase todos os casos.
  • Application Load Balancer (ALB) — usado para sites do lado do servidor, APIs e contêineres dentro da AWS. Se o seu backend funciona no EC2, ECS, EKS — coloque o WAF no ALB.
  • API Gateway — proteção de APIs REST e WebSocket. Adequado para SPA, aplicativos móveis e microsserviços.
  • AWS AppSync (API GraphQL)
  • Amazon Cognito (login/registro)
  • AWS App Runner (aplicativos em contêineres)
  • AWS Amplify Hosting (hospedagem frontend)
  • AWS Verified Access (acesso a aplicativos internos)

Passo 1. Crie uma conta AWS (se não tiver uma)

Vá para: https://portal.aws.amazon.com/billing/signup. Crie a conta > confirme e-mail e telefone.

Passo 2. Você pode usar a interface padrão ou a nova interface do AWS WAF:

  1. Vá para o console da AWS
  2. Abra o AWS WAF. No menu à esquerda, clique em Try the new experience (se oferecido).

Passo 3. Crie um pacote de proteção (Web ACL)

Este é o conjunto de regras de proteção para o seu recurso.

  1. No menu à esquerda selecione: Resources & protection packs (Web ACLs)
  2. Clique em Add protection pack (web ACL).

Passo 4. Configure a categoria da aplicação:

No bloco Tell us about your app:

  • App category — selecione Web / API / Both
  • Traffic source — de onde vem o tráfego (web, API ou ambos)

Esses parâmetros são necessários para que a AWS ofereça regras ideais.

Passo 5. Selecione os recursos que serão protegidos

  1. Clique em Add resources
  2. Escolha o que você está conectando:

Se o seu site está no CloudFront > selecione CloudFront distributions
Se o seu backend está no ALB > selecione Regional resources
Se API > selecione API Gateway REST API
Marque a caixa no recurso necessário > clique em Add.

Passo 6. Selecione um conjunto de regras inicial.

A AWS oferecerá:

Recommended for you — a melhor opção para iniciantes

Ele inclui:

  • proteção básica
  • regras contra SQLi e XSS
  • IP reputation lists (listas de reputação de IP)
  • Bot Control (opcional)
  • regras para web/API

Clique em Next.

Passo 7. Configuração (opcional)

Na tela Customize protection pack (web ACL):

Parâmetros principais:

  • Default action:
    • Allow all except blocked — geralmente escolhe-se isso
    • Block all except allowed — se o site for fechado
  • Default rate limits: Limite de quantidade de solicitações (mitigação DDoS L7)
  • IP addresses: Listas brancas/negras
  • Country specific origins: Restrição de tráfego por países

Registro (Logging)

Escolha onde gravar os logs:

  • CloudWatch
  • S3
  • Firehose

(recomenda-se S3 + Athena).

Passo 8. Criar Web ACL

Clique em: Add protection pack (web ACL)

A AWS criará as regras e as vinculará ao seu recurso.

Verificação

Para garantir que a proteção está funcionando:

  1. Abra o WAF > selecione sua Web ACL
  2. Vá para Monitoring
  3. Observe:
    • gráficos de tráfego
    • solicitações bloqueadas
    • solicitações de amostra (sample requests)

Adicional (opcional)

  • Ativar CAPTCHA ou Challenge

    Em qualquer regra > Action > CAPTCHA / Challenge

    Isso reduz o tráfego de bots e protege páginas de login e formulários.

  • Adicionar Managed Rule Groups

    Na seção Rule groups você pode adicionar:

    • AWS Managed
    • Bot Control
    • Account takeover prevention
    • Marketplace rules (F5, Imperva, Fortinet)
  • Vincular com Shield Advanced. Para proteção contra DDoS (L3–L7).

Background
Possíveis erros e depuração
Bug Icon
Domínio ou regra inválida — O Challenge não é exibido
Verifique se o AWS WAF WebACL está vinculado ao domínio correto (CloudFront Distribution / ALB / API Gateway), caminho correto e se não há conflitos entre regras.
Bug Icon
Tempo limite ao carregar a página ou verificar
Às vezes, o navegador ou script não aguarda a resposta do AWS WAF. Aumente os tempos limite (timeouts) nos testes e certifique-se de que o backend processa as solicitações sem atrasos.
Bug Icon
Cookies do AWS WAF expirados
Os _aws_waf_token_… obsoletos ou tags de cookies relacionadas levam a um Challenge repetido ou bloqueio temporário.
Bug Icon
Regras excessivamente sensíveis
Assinaturas de Bot Control muito rigorosas, regras de CAPTCHA ou regras baseadas em taxa (Rate-based) podem bloquear usuários reais.
Bug Icon
Configuração incorreta da WebACL
Erros na ordem das regras, prioridades ou condições podem levar a falsos positivos e bloqueios.
Verificação da robustez
Depois da integração, confirme que o sistema de fato protege o site contra ações automatizadas.
Recomendações de segurança e otimização
Configure a WebACL de acordo com o nível de risco. Use Managed Rules (AWS, AWS Marketplace), AWS Bot Control e regras personalizadas baseadas em reputação de IP, cabeçalhos, limite de taxa e outras condições.
Registre os eventos do WAF. Ative o <a href="https://docs.aws.amazon.com/waf/latest/developerguide/logging.html" target="_blank">AWS WAF Logging (Kinesis Firehose / S3 / CloudWatch Logs)</a> para análise de falsos positivos e otimização de regras.
Adicione links para a <b>Política de Privacidade</b> e <b>Termos de Uso</b>. Isso é importante para a transparência e conformidade com os requisitos de segurança e expectativas dos usuários.
Conclusão

Se você herdou um site que já tem um captcha ou outro sistema de proteção instalado e não tem acesso ao código, não tem problema! É bem fácil identificar qual tecnologia está sendo usada. Para verificar se tudo está funcionando corretamente, você pode usar o serviço de reconhecimento CapMonster Cloud em um ambiente de testes isolado, para garantir que o mecanismo de processamento de tokens e a lógica de verificação estejam funcionando corretamente.

No caso de Amazon AWS WAF, basta identificar o sistema, analisar o comportamento dele e se certificar de que a proteção está funcionando corretamente. No artigo, mostramos como identificar Amazon AWS WAF e onde encontrar instruções para a integração ou reconfiguração, para que você consiga manter a proteção com segurança e controlar o funcionamento dela.

Conclusion
Links úteis
DocIconDocumentação do AWS WAFDocIconDocumentação do CapMonster Cloud (trabalho com AWS WAF)DocIconVisão geral da proteção de recursos web com AWS WAF