AwsWafCaptcha: resolviendo AWS WAF
Cree la tarea con el método createTask y obtenga el resultado con el método getTaskResult.
Los tipos de tarea types
que admitimos:
AntiAwsWafTask
este tipo de tarea requiere sus propios proxies.AntiAwsWafTaskProxyLess
este tipo de tarea no requiere sus propios proxies.
Crear Tarea
Cree una tarea de reconocimiento con el método createTask.
Estructura del Objeto de Tarea
Properties | Type | Required | Description |
---|---|---|---|
type | String | Required | AntiAwsWafTask AntiAwsWafTaskProxyLess |
proxy | String | Optional | Aprenda Cómo usar proxies |
websiteURL | String | Required | La URL de la página que devuelve información relacionada con el captcha |
awsKey | String | Optional | El valor key devuelto por la página de captcha |
awsIv | String | Optional | El valor iv devuelto por la página de captcha |
awsContext | String | Optional | El valor context devuelto por la página de captcha |
awsChallengeJS | String | Optional | El enlace challenge.js devuelto por la página de captcha |
awsApiJs | String | Optional | El enlace jsapi.js devuelto por la página de captcha |
awsProblemUrl | String | Optional | La URL del endpoint problem que contiene palabras clave como problem , num_solutions_required , etc. |
awsApiKey | String | Optional | El valor api_key del endpoint problem |
awsExistingToken | String | Optional | El aws-waf-token utilizado para la última verificación |
Si no está seguro de qué parámetros pasar a capsolver, consulte los siguientes escenarios para diferentes combinaciones de parámetros. Si su situación no está cubierta, comuníquese con nuestro servicio de atención al cliente para obtener ayuda.
Situation | Passing Parameters | Prerequisites |
---|---|---|
Situation 1 | websiteURL | El código de respuesta de la página de captcha de AWS puede ser 405, y los siguientes parámetros se pueden encontrar en el html:window.gokuProps = {"key":"AQID...","iv":"A6we...","context":"rGXm.."} |
Situation 2 | websiteURL awsKey awsIv awsContext awsChallengeJS | Bajo la condición previa de la situación 1, si capsolver devuelve un mensaje de error:Captcha render unexpect status code XXX, please pass in the awsKey, awsIv, awsContext and awsChallengeJs parameters , Indica que el servidor no activó el captcha. Por favor, analice manualmente los parámetros key, iv y context y páselos a capsolver.Atención especial Si recibe un mensaje de error que dice timeout metering, your parameters have expired, please update awsKey, awsIv, awsContext or awsChallengeJS. , indica que los cuatro parámetros proporcionados no se corresponden entre sí o han caducado. Se recomienda analizar todos los parámetros en tiempo real para cada solicitud. |
Situation 3-1 | websiteURL awsChallengeJS | Cuando la página no puede encontrar key, iv, context, pero tiene challenge.js, pase challenge.js a capsolver como el valor de awsChallengeJS. |
Situation 3-2 | websiteURL awsApiJs | Basado en la situación 3-1, si no está claro de dónde viene challenge.js, pero la página tiene jsapi.js, significa que challenge.js se ensambla a partir del código de jsapi.js, entonces jsapi.js se puede pasar directamente a capsolver como el valor de awsApiJs. |
Situation 4 | websiteURL awsProblemUrl | En casos especiales, cuando la página no puede encontrar key, iv, context, challenge.js, y solo tiene captcha.js, debe pasar la URL del endpoint del problema a capsolver. awsProblemUrl debe contener valores como problem y num_solutions_required . Estos valores se pueden encontrar buscando visualSolutionsRequired en el html de la página. Ejemplo 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 |
Situation 5 | websiteURL awsApiKey awsApiJs awsExistingToken | Esto suele ocurrir en situaciones que requieren verificación secundaria. El endpoint problem contiene una api_key (cuyo valor suele ser constante para cada sitio web) como awsApiKey . La página tiene un jsapi.js como awsApiJs , y el aws-waf-token de la verificación anterior se pasa a capsolver como awsExistingToken |
Ejemplo de Solicitud
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
}
}
Después de enviarnos la tarea, debería recibir en la respuesta un ‘taskId’ si fue exitoso. Por favor, lea errorCode: lista completa de errores si no recibió el ID de la tarea. Para más información, también puede consultar esta entrada de blog Cómo resolver el token de captcha de AWS Amazon.
Ejemplo de Respuesta
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Obtención de Resultados
Una vez que tenga el taskId, debe enviar el taskId para recuperar la solución. La estructura de la respuesta se explica en getTaskResult.
Dependiendo de la carga del sistema, obtendrá los resultados en un intervalo de 5s
a 30s
.
Ejemplo de Solicitud
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Ejemplo de Respuesta
{
"errorId": 0,
"taskId": "646825ef-9547-4a29-9a05-50a6265f9d8a",
"status": "ready",
"solution": {
"cookie": "223d1f60-0e9f-4238-ac0a-e766b15a778e:EQoAf0APpGIKAAAA:AJam3OWpff1VgKIJxH4lGMMHxPVQ0q0R3CNtgcMbR4VvnIBSpgt1Otbax4kuqrgkEp0nFKanO5oPtwt9+Butf7lt0JNe4rZQwZ5IrEnkXvyeZQPaCFshHOISAFLTX7AWHldEXFlZEg7DjIc="
}
}
Uso de la Solicitud 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 Ejemplo
# pip install requests
import requests
import time
api_key = "YOUR_API_KEY" # TODO: your api key of capsolver
site_url = "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest" # TODO: page url of your 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("Failed to create task:", res.text)
return
print(f"Got taskId: {task_id} / Getting result...")
while True:
time.sleep(1) # delay
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("Solve failed! response:", res.text)
return
token = capsolver()
print(token)