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.
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ô.
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:
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:
Na solicitação para resolver o AWS WAF, é necessário indicar os seguintes parâmetros:
type - AmazonTask;
websiteURL - endereço da página principal onde o captcha é resolvido;
challengeScript - link para challenge.js;
Os seguintes parâmetros são retirados de window.gokuProps (todos são do tipo string):
captchaScript - link para captcha.js (pode estar ausente se você tiver apenas um Challenge);
cookieSolution - padrão false — na resposta você receberá "captcha_voucher" e "existing_token". Se você precisar dos cookies "aws-waf-token", indique true.;
userAgent - User-Agent do navegador. Envie apenas um UA atual do sistema operacional Windows;
Também para esta tarefa é necessário o uso de seus proxies:
proxyType :
proxyAddress - Endereço IP do proxy IPv4/IPv6;
proxyPort - porta do proxy;
proxyLogin - login do servidor proxy;
proxyPassword - senha do servidor proxy.
https://api.capmonster.cloud/createTask{
"clientKey": "API_KEY",
"task": {
"type": "AmazonTask",
"websiteURL": "https://example.com/index.html",
"websiteKey": "h15hX7brbaRTR...Za1_1",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"captchaScript": "https://234324vgvc23.yejk.captcha-sdk.awswaf.com/234324vgvc23/jsapi.js",
"cookieSolution": true,
"proxyType": "http",
"proxyAddress": "8.8.8.8",
"proxyPort": 8080,
"proxyLogin": "proxyLoginHere",
"proxyPassword": "proxyPasswordHere"
}
}{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}{
"errorId":0,
"status":"ready",
"solution": {
"cookies": {
"aws-waf-token": "10115f5b-ebd8-45c7-851e-cfd4f6a82e3e:EAoAua1QezAhAAAA:dp7sp2rXIRcnJcmpWOC1vIu+yq/A3EbR6b6K7c67P49usNF1f1bt/Af5pNcZ7TKZlW+jIZ7QfNs8zjjqiu8C9XQq50Pmv2DxUlyFtfPZkGwk0d27Ocznk18/IOOa49Rydx+/XkGA7xoGLNaUelzNX34PlyXjoOtL0rzYBxMAQy0D1tn+Q5u97kJBjs5Mytqu9tXPIPCTSn4dfXv5llSkv9pxBEnnhwz6HEdmdJMdfur+YRW1MgCX7i3L2Y0/CNL8kd8CEhTMzwyoXekrzBM="
},
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36"
}
}Os dados recebidos do CapMonster Cloud (cookies válidos do AWS WAF) podem ser inseridos no contexto do navegador ou cliente HTTP. Depois disso, o site percebe a solicitação como verificada e permite continuar o trabalho sem verificações adicionais ou páginas de challenge.
Para automação e testes, é conveniente usar Puppeteer, Selenium ou Playwright, pois permitem:
Assim, pode-se verificar a correção do funcionamento da proteção e garantir que o site aceite e processe corretamente os cookies válidos do AWS WAF.
Importante: estes exemplos de código usam cookieSolution=False. Se como resultado você precisar obter cookies, defina cookieSolution=True.
// 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();
})();
O AWS WAF não pode ser instalado diretamente em um site. Ele funciona apenas através de recursos da AWS:
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:
Passo 3. Crie um pacote de proteção (Web ACL)
Este é o conjunto de regras de proteção para o seu recurso.
Passo 4. Configure a categoria da aplicação:
No bloco Tell us about your app:
Esses parâmetros são necessários para que a AWS ofereça regras ideais.
Passo 5. Selecione os recursos que serão protegidos
Se o seu site está no CloudFront > selecione CloudFront distributions
Se o seu backend está no ALB > selecione Regional resourcesSe API > selecione API Gateway REST APIMarque 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:Clique em Next.
Passo 7. Configuração (opcional)
Na tela Customize protection pack (web ACL):
Parâmetros principais:
Registro (Logging)
Escolha onde gravar os logs:
(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:
Em qualquer regra > Action > CAPTCHA / Challenge
Isso reduz o tráfego de bots e protege páginas de login e formulários.
Na seção Rule groups você pode adicionar:
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.