AwsWafCaptcha: résolution d’AWS WAF
Créez la tâche avec la méthode createTask et obtenez le résultat avec la méthode getTaskResult.
Les types de tâche types
que nous supportons :
AntiAwsWafTask
ce type de tâche nécessite vos propres proxys.AntiAwsWafTaskProxyLess
ce type de tâche ne nécessite pas vos propres proxys.
Créer une Tâche
Créez une tâche de reconnaissance avec la méthode createTask.
Structure de l’Objet Tâche
Propriétés | Type | Requis | Description |
---|---|---|---|
type | String | Requis | AntiAwsWafTask AntiAwsWafTaskProxyLess |
proxy | String | Optionnel | Apprenez Comment utiliser les proxys |
websiteURL | String | Requis | L’URL de la page qui renvoie des informations relatives au captcha |
awsKey | String | Optionnel | La valeur key renvoyée par la page captcha |
awsIv | String | Optionnel | La valeur iv renvoyée par la page captcha |
awsContext | String | Optionnel | La valeur context renvoyée par la page captcha |
awsChallengeJS | String | Optionnel | Le lien challenge.js renvoyé par la page captcha |
awsApiJs | String | Optionnel | Le lien jsapi.js renvoyé par la page captcha |
awsProblemUrl | String | Optionnel | L’URL du point de terminaison problem contenant des mots-clés tels que problem , num_solutions_required , etc. |
awsApiKey | String | Optionnel | La valeur api_key du point de terminaison problem |
awsExistingToken | String | Optionnel | Le aws-waf-token utilisé pour la dernière vérification |
Si vous n’êtes pas sûr des paramètres à transmettre à capsolver, veuillez vous référer aux scénarios suivants pour différentes combinaisons de paramètres. Si votre situation n’est pas couverte, veuillez contacter notre service client pour obtenir de l’aide.
Situation | Paramètres à Transmettre | Prérequis |
---|---|---|
Situation 1 | websiteURL | Le code de réponse de la page captcha AWS peut être 405, et les paramètres suivants peuvent être trouvés dans le html :window.gokuProps = {"key":"AQID...","iv":"A6we...","context":"rGXm.."} |
Situation 2 | websiteURL awsKey awsIv awsContext awsChallengeJS | Sous la précondition de la situation 1, si capsolver renvoie un message d’erreur : Captcha render unexpect status code XXX, please pass in the awsKey, awsIv, awsContext and awsChallengeJs parameters , cela indique que le serveur n’a pas déclenché le captcha. Veuillez analyser manuellement les paramètres key, iv et context et les transmettre à capsolver.Attention spéciale Si vous recevez un message d’erreur indiquant timeout metering, your parameters have expired, please update awsKey, awsIv, awsContext or awsChallengeJS. , cela indique que les quatre paramètres que vous avez fournis ne correspondent pas les uns aux autres ou ont expiré. Il est recommandé d’analyser tous les paramètres en temps réel pour chaque requête. |
Situation 3-1 | websiteURL awsChallengeJS | Lorsque la page ne trouve pas key, iv, context, mais possède challenge.js, transmettez challenge.js à capsolver comme valeur de awsChallengeJS. |
Situation 3-2 | websiteURL awsApiJs | Sur la base de la situation 3-1, s’il n’est pas clair d’où provient challenge.js, mais que la page possède jsapi.js, cela signifie que challenge.js est assemblé à partir du code de jsapi.js, alors jsapi.js peut être directement transmis à capsolver comme valeur de awsApiJs. |
Situation 4 | websiteURL awsProblemUrl | Dans des cas spéciaux, lorsque la page ne trouve pas key, iv, context, challenge.js, et ne possède que captcha.js, vous devez transmettre l’URL du point de terminaison “problem” à capsolver. awsProblemUrl doit contenir des valeurs telles que problem et num_solutions_required . Ces valeurs peuvent être trouvées en recherchant visualSolutionsRequired dans le HTML de la page. Exemple complet d’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 | Cela se produit généralement dans les situations nécessitant une vérification secondaire. Le point de terminaison problem contient une api_key (dont la valeur est généralement constante pour chaque site web) comme awsApiKey . La page a un jsapi.js comme awsApiJs , et le aws-waf-token de la vérification précédente est transmis à capsolver comme awsExistingToken . |
Exemple de Requête
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
}
}
Après avoir soumis la tâche, vous devriez recevoir un ‘taskId’ dans la réponse si celle-ci a réussi. Veuillez lire errorCode: liste complète des erreurs si vous n’avez pas reçu l’ID de tâche. Pour plus d’informations, vous pouvez également consulter cet article de blog Comment résoudre le token captcha AWS Amazon
Exemple de Réponse
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Obtenir les Résultats
Une fois que vous avez le taskId, vous devez soumettre le taskId pour récupérer la solution. La structure de la réponse est expliquée dans getTaskResult.
En fonction de la charge du système, vous obtiendrez les résultats dans un intervalle de 5s
à 30s
.
Exemple de Requête
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
{
"clientKey": "YOUR_API_KEY",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
Exemple de Réponse
{
"errorId": 0,
"taskId": "646825ef-9547-4a29-9a05-50a6265f9d8a",
"status": "ready",
"solution": {
"cookie": "223d1f60-0e9f-4238-ac0a-e766b15a778e:EQoAf0APpGIKAAAA:AJam3OWpff1VgKIJxH4lGMMHxPVQ0q0R3CNtgcMbR4VvnIBSpgt1Otbax4kuqrgkEp0nFKanO5oPtwt9+Butf7lt0JNe4rZQwZ5IrEnkXvyeZQPaCFshHOISAFLTX7AWHldEXFlZEg7DjIc="
}
}
Utiliser la Requête 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"
})
Exemple de Code
# pip install requests
import requests
import time
api_key = "YOUR_API_KEY" # TODO: votre clé API capsolver
site_url = "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest" # TODO: URL de la page de votre 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) # délai
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)