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 são:
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 | Required | AntiAwsWafTask AntiAwsWafTaskProxyLess |
proxy | String | Required | Saiba Como usar proxies |
websiteURL | String | Required | Voltar à URL da página com informações relacionadas ao captcha |
awsKey | String | Optional | O valor key retornado pela página captcha |
awsIv | String | Optional | O valor iv retornado pela página captcha |
awsContext | String | Optional | O valor context retornado pela página captcha |
awsChallengeJS | String | Optional | A página captcha retorna o link challenge.js |
awsApiJs | String | Optional | A página captcha retorna o link jsapi.js |
awsProblemUrl | String | Optional | URL da interface problem com palavras-chave problem e num_solutions_required etc. |
awsApiKey | String | Optional | valor da api_key da interface problem |
awsExistingToken | String | Optional | aws-waf-token usado na última validação |
Caso você não saiba quais parâmetros passar ao capsolver, consulte as seguintes situações para passar diferentes parâmetros, se nenhuma delas se encaixar no seu caso, entre em contato com nosso suporte.
Situação | Parâmetros de transmissão | pré-condição |
---|---|---|
Situação 1 | websiteURL | O código de resposta da página de captcha do 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 | Na pré-condição do cenário 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 , Para indicar que o servidor não acionou o captcha, analise manualmente os parâmetros key , iv , context para o capsolver. Atenção especial Se você receber timeout metering, your parameters have expired, please update awsKey, awsIv, awsContext or awsChallengeJS. Um erro indica que os quatro parâmetros que você passou não correspondem um ao outro ou estão expirados, recomendando que todos os parâmetros sejam analisados em tempo real a cada solicitação. |
Situação 3-1 | websiteURL awsChallengeJS | Quando a página não encontrar key , iv , context , mas tiver challenge.js , passe challenge.js como valor do awsChallengeJS para o capsolver. |
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 tem jsapi.js , isso significa que challenge.js é montado a partir do código de jsapi.js , então jsapi.js pode ser passado diretamente para capsolver como o valor de awsApiJs. |
Situação 4 | websiteURL awsProblemUrl | Em versões especiais, quando a página não pode encontrar key , iv , context , challenge.js , apenas captcha.js , é necessário passar o url da interface problem para o capsolver, o awsProblemUrl deve conter o equivalente problem , num_solutions_required e esses valores podem ser encontrados na pesquisa de visualSolutionsRequired no html da página.awsProblemUrl exemplo completo: 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 | Geralmente ocorre em casos que exigem verificação secundária, a interface problem contém uma api_key (o valor geralmente não muda 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", // Required
"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 enviar a tarefa para nós, você deverá receber na resposta um ‘ID da tarefa’ se for bem-sucedido. Leia errorCode: lista completa de erros se você não receber o ID da tarefa.
Exemplo de Resposta
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Obter Resultados
Após obter o ID da tarefa, você precisa enviar o ID da tarefa para recuperar a solução. A estrutura da resposta é explicada em getTaskResult.
Dependendo da carga do sistema, você receberá os resultados no 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="
}
}
Solicitação de Uso da 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"
})