AwsWafCaptcha: resolvendo AWS WAF
Crie a tarefa com o método createTask e obtenha o resultado com o método getTaskResult.
Os tipos de tarefa types
que suportamos:
AntiAwsWafTask
este tipo de tarefa requer seus próprios proxies.AntiAwsWafTaskProxyLess
este tipo de tarefa não requer seus próprios proxies.
Criar Tarefa
Crie uma tarefa de reconhecimento com o método createTask.
Estrutura do Objeto da Tarefa
Propriedades | Tipo | Obrigatório | Descrição |
---|---|---|---|
type | String | Obrigatório | AntiAwsWafTask AntiAwsWafTaskProxyLess |
proxy | String | Opcional | Saiba Como usar proxies |
websiteURL | String | Obrigatório | O URL da página que retorna informações relacionadas ao captcha |
awsKey | String | Opcional | O valor key retornado pela página do captcha |
awsIv | String | Opcional | O valor iv retornado pela página do captcha |
awsContext | String | Opcional | O valor context retornado pela página do captcha |
awsChallengeJS | String | Opcional | O link challenge.js retornado pela página do captcha |
awsApiJs | String | Opcional | O link jsapi.js retornado pela página do captcha |
awsProblemUrl | String | Opcional | O URL do endpoint problem contendo palavras-chave como problem , num_solutions_required , etc. |
awsApiKey | String | Opcional | O valor api_key do endpoint problem |
awsExistingToken | String | Opcional | O aws-waf-token usado para a última verificação |
Se você não tem certeza de quais parâmetros passar para o capsolver, consulte os cenários a seguir para diferentes combinações de parâmetros. Se a sua situação não estiver coberta, entre em contato com nosso serviço de atendimento ao cliente para obter assistência.
Situação | Parâmetros a Passar | Pré-requisitos |
---|---|---|
Situação 1 | websiteURL | O código de resposta da página do captcha AWS pode ser 405, e os seguintes parâmetros podem ser encontrados no html:window.gokuProps = {"key":"AQID...","iv":"A6we...","context":"rGXm.."} |
Situação 2 | websiteURL awsKey awsIv awsContext awsChallengeJS | Sob a premissa da situação 1, se o capsolver retornar uma mensagem de erro:Captcha render unexpect status code XXX, please pass in the awsKey, awsIv, awsContext and awsChallengeJs parameters , Isso indica que o servidor não acionou o captcha. Por favor, analise manualmente os parâmetros key, iv e context e passe-os para o capsolver.Atenção especial Se você receber uma mensagem de erro dizendo timeout metering, your parameters have expired, please update awsKey, awsIv, awsContext or awsChallengeJS. , isso indica que os quatro parâmetros que você forneceu não correspondem entre si ou expiraram. Recomenda-se analisar todos os parâmetros em tempo real para cada solicitação. |
Situação 3-1 | websiteURL awsChallengeJS | Quando a página não consegue encontrar key, iv, context, mas possui challenge.js, passe challenge.js para o capsolver como o valor de awsChallengeJS. |
Situação 3-2 | websiteURL awsApiJs | Com base na situação 3-1, se não estiver claro de onde challenge.js vem, mas a página tiver jsapi.js, significa que challenge.js é montado a partir do código de jsapi.js, então jsapi.js pode ser passado diretamente para o capsolver como o valor de awsApiJs. |
Situação 4 | websiteURL awsProblemUrl | Em casos especiais, quando a página não consegue encontrar key, iv, context, challenge.js, e só tem captcha.js, você precisa passar o URL do endpoint problem para o capsolver. awsProblemUrl deve conter valores como problem e num_solutions_required . Esses valores podem ser encontrados procurando por visualSolutionsRequired no html da página. Exemplo completo de awsProblemUrl: https://ait.2608283a.us-east-1.captcha.awswaf.com/ait/ait/ait/problem?kind=visual&domain=www.amazon.com&locale=en-us&problem=gridcaptcha-5-0.15-0&num_solutions_required=2 |
Situação 5 | websiteURL awsApiKey awsApiJs awsExistingToken | Isso geralmente ocorre em situações que exigem verificação secundária. O endpoint problem contém um api_key (cujo valor é tipicamente constante para cada site) como awsApiKey . A página tem um jsapi.js como awsApiJs , e o aws-waf-token da verificação anterior é passado para o capsolver como awsExistingToken |
Exemplo de Requisição
POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "AntiAwsWafTask", // AntiAwsWafTaskProxyLess
"websiteURL": "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest", // Required
"awsKey": "AQIDAHjcYu/GjX+QlghicBg......shMIKvZswZemrVVqA==", // Optional
"awsIv": "CgAAFDIlckAAAAid", // Optional
"awsContext": "7DhQfG5CmoY90ZdxdHCi8WtJ3z......njNKULdcUUVEtxTk=", // Optional
"awsChallengeJS": "https://41bcdd4fb3cb.610cd090.us-east-1.token.awswaf.com/41bcdd4fb......a6c832/challenge.js", // Optional
"awsApiJs": "https://9175c2fd4189.edge.captcha-sdk.awswaf.com/9175c2fd4189/jsapi.js", // Optional
"awsProblemUrl": "https://ait...awswaf.com/ait/ait/ait/problem?kind=visual&...&problem=gridcaptcha-5-0.1-0&num_solutions_required=2", // Optional
"awsApiKey": "Sps+L2gV...", // Optional
"awsExistingToken": "5na16dg6-216a-...", // Optional
"proxy": "http:ip:port:user:pass" // socks5:ip:port:user:pass
}
}
Depois de nos enviar a tarefa, você deverá receber um ‘taskId’ na resposta, se for bem-sucedido. Por favor, leia errorCode: lista completa de erros se você não recebeu o ID da tarefa. Para mais informações, você também pode consultar esta postagem de blog Como resolver o token captcha da AWS Amazon
Exemplo de Resposta
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Obtendo Resultados
Depois de ter o taskId, você precisa enviar o taskId para recuperar a solução. A estrutura da resposta é explicada em getTaskResult.
Dependendo da carga do sistema, você obterá os resultados dentro do intervalo de 5s
a 30s
Exemplo de Requisição
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Exemplo de Resposta
{
"errorId": 0,
"taskId": "646825ef-9547-4a29-9a05-50a6265f9d8a",
"status": "ready",
"solution": {
"cookie": "223d1f60-0e9f-4238-ac0a-e766b15a778e:EQoAf0APpGIKAAAA:AJam3OWpff1VgKIJxH4lGMMHxPVQ0q0R3CNtgcMbR4VvnIBSpgt1Otbax4kuqrgkEp0nFKanO5oPtwt9+Butf7lt0JNe4rZQwZ5IrEnkXvyeZQPaCFshHOISAFLTX7AWHldEXFlZEg7DjIc="
}
}
Usar Requisição via SDK
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
"type": "AntiAwsWafTask",
"websiteURL": "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest",
"proxy": "ip:port:user:pass"
})
Código de Exemplo
# pip install requests
import requests
import time
api_key = "YOUR_API_KEY" # TODO: sua chave de API do capsolver
site_url = "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest" # TODO: URL da página do seu site
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'AntiAwsWafTaskProxyLess',
"websiteURL": site_url
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("Falha ao criar tarefa:", res.text)
return
print(f"Obtido taskId: {task_id} / Obtendo resultado...")
while True:
time.sleep(1) # atraso
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('cookie')
if status == "failed" or resp.get("errorId"):
print("Falha na resolução! resposta:", res.text)
return
token = capsolver()
print(token)