Guide
Tâche (Token)
AWS WAF

AwsWafCaptcha: résolution d’AWS WAF

TIP

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ésTypeRequisDescription
typeStringRequisAntiAwsWafTask
AntiAwsWafTaskProxyLess
proxyStringOptionnelApprenez Comment utiliser les proxys
websiteURLStringRequisL’URL de la page qui renvoie des informations relatives au captcha
awsKeyStringOptionnelLa valeur key renvoyée par la page captcha
awsIvStringOptionnelLa valeur iv renvoyée par la page captcha
awsContextStringOptionnelLa valeur context renvoyée par la page captcha
awsChallengeJSStringOptionnelLe lien challenge.js renvoyé par la page captcha
awsApiJsStringOptionnelLe lien jsapi.js renvoyé par la page captcha
awsProblemUrlStringOptionnelL’URL du point de terminaison problem contenant des mots-clés tels que problem, num_solutions_required, etc.
awsApiKeyStringOptionnelLa valeur api_key du point de terminaison problem
awsExistingTokenStringOptionnelLe aws-waf-token utilisé pour la dernière vérification
Quels paramètres dois-je utiliser ?

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.

SituationParamètres à TransmettrePrérequis
Situation 1websiteURLLe 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 2websiteURL
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-1websiteURL
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-2websiteURL
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 4websiteURL
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 5websiteURL
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)