Como resolver o desafio AWS / Captcha com Python

Adélia Cruz
Neural Network Developer
04-Dec-2025

Introdução
Seus tarefas de raspagem de web ou automação estão sendo bloqueadas por um AWS WAF (Firewall de Aplicativos Web) aparentemente insuperável? Este é um desafio comum para muitos desenvolvedores. O AWS WAF é um serviço de segurança poderoso da Amazon projetado para proteger sites contra explorações web comuns e bots maliciosos. Ele identifica e bloqueia atividades suspeitas analisando padrões de tráfego, usando métodos que incluem desafios de JavaScript (retornando um código de status 202) e captchas de imagem mais complexos (retornando um código de status 405).
Embora essas medidas de segurança sejam essenciais para a proteção do site, elas podem ser um grande obstáculo para scripts de automação legítimos. Felizmente, com as ferramentas certas, você pode contornar efetivamente essas proteções. Este guia fornecerá um passo a passo detalhado sobre como usar o Python e CapSolver para obter facilmente o aws-waf-token, permitindo acesso sem interrupções a sites protegidos pelo AWS WAF.
⚙️ Pré-requisitos
Antes de começar, certifique-se de ter as seguintes ferramentas e informações prontas:
- Um proxy funcional: Isso é crucial para resolver o AWS WAF. É altamente recomendado usar proxies de ISP ou residenciais para evitar ser bloqueado devido a má reputação de IP.
- Python instalado: Certifique-se de que o Python está instalado no seu sistema.
- Chave de API do CapSolver: Você precisará de uma conta no CapSolver (Registre-se) para obter sua chave de API no painel.
🤖 Passo 1: Instalar Pacotes Python Necessários
Primeiro, precisamos instalar algumas bibliotecas Python importantes para fazer solicitações HTTP e analisar HTML. Abra seu terminal e execute o seguinte comando:
bash
pip install capsolver requests beautifulsoup4
👨💻 Passo 2: Escrever Código Python para Resolver o AWS WAF
O seguinte é o código Python completo para resolver desafios e captchas do AWS WAF usando o CapSolver. Este código baseia-se nas práticas mais recentes da documentação oficial do CapSolver, possui uma estrutura mais limpa e lida automaticamente com os dois cenários mais comuns de bloqueio.
Código Python Atualizado
python
import capsolver
import requests
from bs4 import BeautifulSoup
import re
from urllib.parse import urlparse
# -------------------POR FAVOR MODIFIQUE ESTES VALORES-------------------
# Seus detalhes de proxy no formato: http://username:password@ip:port
PROXY = "http://username:password@ip:port"
# A URL do site alvo que você deseja resolver o AWS WAF
PAGE_URL = "https://www.seu-site-aws-protegido.com"
# Sua chave de API do CapSolver do painel
CAPSOLVER_API_KEY = "SUA_CHAVE_API"
# ----------------------------------------------------------------
def solve_aws_waf(is_captcha_challenge, **kwargs):
"""
Resolve um desafio AWS WAF ou captcha usando o CapSolver.
:param is_captcha_challenge: True para um captcha (código de status 405), False para um desafio de JS (código de status 202).
:param kwargs: Parâmetros necessários para a tarefa de resolução.
:return: O objeto de solução, ou None em caso de falha.
"""
task_type = "AntiAwsWafTask" if is_captcha_challenge else "AntiAwsWafTaskProxyLess"
print(f"Criando tarefa '{task_type}'...")
task_payload = {
"type": task_type,
"websiteURL": PAGE_URL,
}
# Adicione parâmetros específicos com base no tipo de desafio
if is_captcha_challenge:
# Para desafios de captcha, são necessários awsKey, awsIv, awsContext
task_payload.update({
"awsKey": kwargs.get("awsKey"),
"awsIv": kwargs.get("awsIv"),
"awsContext": kwargs.get("awsContext"),
"awsChallengeJS": kwargs.get("awsChallengeJS"),
"proxy": PROXY
})
else:
# Para desafios de JS, apenas a URL awsChallengeJS é necessária
task_payload["awsChallengeJS"] = kwargs.get("awsChallengeJS")
try:
solution = capsolver.solve(task_payload)
if solution and solution.get("errorId", 0) == 0:
print("Solução obtida com sucesso!")
return solution
else:
error_desc = solution.get('errorDescription', 'Erro desconhecido') if solution else 'Erro desconhecido'
print(f"Falha ao resolver a tarefa: {error_desc}")
return None
except Exception as e:
print(f"Ocorreu uma exceção ao chamar o CapSolver: {e}")
return None
def main():
"""Função principal para executar todo o processo."""
capsolver.api_key = CAPSOLVER_API_KEY
session = requests.Session()
session.proxies = {"http": PROXY, "https": PROXY}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
}
print(f"Tentando acessar: {PAGE_URL}")
response = session.get(PAGE_URL, headers=headers)
print(f"Código de status recebido: {response.status_code}")
solution = None
# Cenário 1: Tratar desafio JavaScript do AWS (Código de status 202)
if response.status_code == 202:
print("Desafio JavaScript do AWS detectado.")
soup = BeautifulSoup(response.content, 'html.parser')
script_tag = soup.find('script', {'src': re.compile(r'token\.awswaf\.com')})
if script_tag:
challenge_js_url = script_tag['src']
print(f"Encontrada URL do desafio JS: {challenge_js_url}")
solution = solve_aws_waf(is_captcha_challenge=False, awsChallengeJS=challenge_js_url)
else:
print("Erro: Não foi possível encontrar o script de desafio AWS.")
# Cenário 2: Tratar Captcha do AWS (Código de status 405)
elif response.status_code == 405:
print("Captcha do AWS detectado.")
soup = BeautifulSoup(response.content, 'html.parser')
script_tag = soup.find('script', {'src': re.compile(r'token\.awswaf\.com')})
script_text_tag = soup.find('script', string=re.compile('.*key.*'))
if script_tag and script_text_tag:
challenge_js_url = script_tag['src']
script_text = script_text_tag.string
key = re.search(r'"key":"(.*?)"', script_text).group(1)
iv = re.search(r'"iv":"(.*?)"', script_text).group(1)
context = re.search(r'"context":"(.*?)"', script_text).group(1)
print(f"Parâmetros extraídos: Chave={key[:5]}..., IV={iv[:5]}..., Contexto={context[:5]}...")
solution = solve_aws_waf(
is_captcha_challenge=True,
awsKey=key,
awsIv=iv,
awsContext=context,
awsChallengeJS=challenge_js_url
)
else:
print("Erro: Falha ao extrair todos os parâmetros necessários do captcha da página.")
# Se resolvido com sucesso, defina o cookie e tente novamente a solicitação
if solution and solution.get("cookie"):
aws_token = solution["cookie"]
print(f"Obtido com sucesso o aws-waf-token: {aws_token[:30]}...")
domain = f".{urlparse(PAGE_URL).netloc}"
session.cookies.set("aws-waf-token", aws_token, domain=domain)
print("Cookie definido. Tentando novamente a solicitação...")
final_response = session.get(PAGE_URL, headers=headers)
print(f"Código de status da solicitação final: {final_response.status_code}")
if final_response.status_code == 200:
print("Bypass do AWS WAF realizado com sucesso!")
# print(final_response.text) # Remova o comentário para ver o conteúdo da página
else:
print("A solicitação falhou após definir o cookie. Verifique o token ou o proxy.")
else:
print("Falha ao resolver o AWS WAF. Saindo.")
if __name__ == "__main__":
main()
⚠️ Variáveis Importantes a Modificar
Antes de executar o código, certifique-se de modificar as seguintes variáveis:
PROXY: Substitua esta variável pelo endereço e credenciais do seu servidor proxy. O formato deve serhttp://username:password@ip:port.CAPSOLVER_API_KEY: Encontre sua chave de API no Painel do CapSolver e substitua o espaço reservado.PAGE_URL: Substitua esta variável pela URL do site alvo protegido pelo AWS WAF.
Conclusão
Ao integrar o CapSolver ao seu fluxo de automação Python, você pode lidar efetivamente com desafios de JavaScript e captchas disparados pelo AWS WAF. Este método simplifica um processo de verificação complexo em uma única chamada de API, permitindo que você se concentre na lógica do seu negócio em vez de se envolver em uma batalha constante com tecnologias anti-bot. Esta é uma solução valiosa para qualquer desenvolvedor que precise interagir com sites protegidos pelo AWS WAF.
Use o código de bônus CAPN ao recarregar sua conta do CapSolver para obter um bônus adicional de 5% em cada recarga — sem limites.
Redeeme-o agora no seu Painel do CapSolver
Perguntas Frequentes (FAQ)
Q1: Por que devo usar um proxy?
A1: O AWS WAF monitora estritamente o comportamento dos endereços IP. Solicitações de centros de dados ou IPs marcados como suspeitos são facilmente bloqueadas. Usar um proxy de alta qualidade residencial ou de ISP imita o comportamento de acesso de um usuário real e é um passo crítico para superar com sucesso o WAF.
Q2: Quanto tempo o aws-waf-token é válido?
A2: A validade deste token é geralmente muito curta, possivelmente apenas alguns minutos. Após a expiração do token, você precisa executar novamente o processo de verificação para obter um novo. É importante projetar uma lógica de atualização de token em seu aplicativo.
Q3: Qual é a diferença entre AntiAwsWafTask e AntiAwsWafTaskProxyLess?
A3: AntiAwsWafTask é usado para resolver o captcha do AWS, que requer um ambiente de navegador completo (normalmente visto com um código de status 405) e precisa de um proxy fornecido por você. AntiAwsWafTaskProxyLess é usado para o desafio mais simples de JavaScript (código de status 202), que é resolvido nos servidores do CapSolver e não requer que você forneça um proxy. Nosso código seleciona automaticamente o tipo de tarefa apropriado com base no código de status.
Q4: Este método funciona para todos os sites que usam o AWS WAF?
A4: Este método é eficaz para a maioria das configurações padrão do AWS WAF. No entanto, os proprietários de sites podem personalizar as regras do WAF, o que pode aumentar a dificuldade de contorná-las. Se você encontrar problemas, consulte a documentação ou o suporte do CapSolver. Diferentes desafios podem exigir estratégias diferentes.
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

Como resolver o desafio AWS / Captcha com Python
Um guia prático para lidar com desafios do AWS WAF usando Python e CapSolver, facilitando um acesso mais suave a sites protegidos

Adélia Cruz
04-Dec-2025

Como resolver o token de Captcha do AWS WAF
Este blog explica como você pode resolver o aws waf captcha de forma rápida, barata e fácil usando CapSolver

Adélia Cruz
01-Dec-2025
![Como resolver Captcha AWS usando Puppeteer [JavaScript] com a Extensão CapSolver](https://assets.capsolver.com/prod/posts/aws-captcha-solver-puppeteer/5e93a8e9739b4c24ab2f6cbba8563a93.png)
Como resolver Captcha AWS usando o Puppeteer [JavaScript] com a Extensão CapSolver
Aprenda a resolver de forma fluida o Captcha da AWS com o Puppeteer e a extensão Capsolver, um guia detalhado sobre como configurar e automatizar soluções de captcha de forma eficaz.

Adélia Cruz
25-Nov-2025

Top 5 Ferramentas para Resolver Desafios AWS WAF para Automação Empresarial e Raspagem de Web
Descubra os 5 principais ferramentas resolvendedoras de desafios do AWS WAF para raspagem de web sem problemas e automação empresarial. Encontre a melhor solução para contornar o AWS WAF.

Aloísio Vítor
13-Nov-2025

Como resolver o AWS Captcha com NodeJS
Neste artigo, mostraremos como resolver o desafio AWS Captcha / Node.JS.

Adélia Cruz
03-Nov-2025

Solução de CAPTCHA do AWS WAF: Solução de Token e Imagem para Scrapper
Aprenda como resolver desafios de CAPTCHA do AWS WAF para raspagem de sites e automação. Orientações práticas sobre soluções baseadas em tokens e em imagens, integração de API vs. navegador e melhores práticas.

Adélia Cruz
28-Oct-2025


