Anleitung
Aufgabe (Token)
AWS WAF

AwsWafCaptcha: AWS WAF lösen

TIP

Erstellen Sie die Aufgabe mit der Methode createTask und erhalten Sie das Ergebnis mit der Methode getTaskResult.

Die von uns unterstützten Aufgabentypen types:

  • AntiAwsWafTask dieser Aufgabentyp erfordert Ihre eigenen Proxys.
  • AntiAwsWafTaskProxyLess dieser Aufgabentyp erfordert keine eigenen Proxys.

Aufgabe erstellen

Erstellen Sie eine Erkennungsaufgabe mit der Methode createTask.

Aufgabenobjektstruktur

EigenschaftenTypErforderlichBeschreibung
typeStringErforderlichAntiAwsWafTask
AntiAwsWafTaskProxyLess
proxyStringOptionalErfahren Sie mehr über Verwendung von Proxys
websiteURLStringErforderlichDie URL der Seite, die Captcha-bezogene Informationen zurückgibt
awsKeyStringOptionalDer key-Wert, der von der Captcha-Seite zurückgegeben wird
awsIvStringOptionalDer iv-Wert, der von der Captcha-Seite zurückgegeben wird
awsContextStringOptionalDer context-Wert, der von der Captcha-Seite zurückgegeben wird
awsChallengeJSStringOptionalDer challenge.js-Link, der von der Captcha-Seite zurückgegeben wird
awsApiJsStringOptionalDer jsapi.js-Link, der von der Captcha-Seite zurückgegeben wird
awsProblemUrlStringOptionalDie problem-Endpunkt-URL, die Schlüsselwörter wie problem, num_solutions_required usw. enthält.
awsApiKeyStringOptionalDer api_key-Wert des problem-Endpunkts
awsExistingTokenStringOptionalDas aws-waf-token, das für die letzte Verifizierung verwendet wurde
Welche Parameter soll ich verwenden?

Wenn Sie unsicher sind, welche Parameter an capsolver übergeben werden sollen, beachten Sie bitte die folgenden Szenarien für verschiedene Parameterkombinationen. Sollte Ihre Situation nicht abgedeckt sein, kontaktieren Sie bitte unseren Kundenservice für Unterstützung.

SituationZu übergebende ParameterVoraussetzungen
Situation 1websiteURLDer Antwortcode der AWS-Captcha-Seite kann 405 sein, und die folgenden Parameter können im HTML gefunden werden:
window.gokuProps = {"key":"AQID...","iv":"A6we...","context":"rGXm.."}
Situation 2websiteURL
awsKey
awsIv
awsContext
awsChallengeJS
Unter der Voraussetzung von Situation 1, wenn capsolver eine Fehlermeldung zurückgibt: Captcha render unexpect status code XXX, please pass in the awsKey, awsIv, awsContext and awsChallengeJs parameters, deutet dies darauf hin, dass der Server das Captcha nicht ausgelöst hat. Bitte parsen Sie die Parameter key, iv und context manuell und übergeben Sie diese an capsolver.
Besondere Aufmerksamkeit
Wenn Sie eine Fehlermeldung erhalten, die besagt timeout metering, your parameters have expired, please update awsKey, awsIv, awsContext or awsChallengeJS., deutet dies darauf hin, dass die von Ihnen angegebenen vier Parameter nicht miteinander korrespondieren oder abgelaufen sind. Es wird empfohlen, alle Parameter für jede Anfrage in Echtzeit zu parsen.
Situation 3-1websiteURL
awsChallengeJS
Wenn die Seite key, iv, context nicht finden kann, aber challenge.js vorhanden ist, übergeben Sie challenge.js als Wert von awsChallengeJS an capsolver.
Situation 3-2websiteURL
awsApiJs
Basierend auf Situation 3-1, wenn unklar ist, woher challenge.js stammt, aber die Seite jsapi.js enthält, bedeutet dies, dass challenge.js aus dem Code von jsapi.js zusammengesetzt wird. Dann kann jsapi.js direkt als Wert von awsApiJs an capsolver übergeben werden.
Situation 4websiteURL
awsProblemUrl
In speziellen Fällen, wenn die Seite key, iv, context, challenge.js nicht finden kann und nur captcha.js vorhanden ist, müssen Sie die Problem-Endpunkt-URL an capsolver übergeben. awsProblemUrl sollte Werte wie problem und num_solutions_required enthalten. Diese Werte können durch Suchen nach visualSolutionsRequired im Seiten-HTML gefunden werden.

awsProblemUrl vollständiges Beispiel: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
Dies tritt normalerweise in Situationen auf, die eine sekundäre Verifizierung erfordern. Der problem-Endpunkt enthält einen api_key (dessen Wert für jede Website typischerweise konstant ist) als awsApiKey. Die Seite hat eine jsapi.js als awsApiJs, und das aws-waf-token der vorherigen Verifizierung wird als awsExistingToken an capsolver übergeben.

Beispielanfrage

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
    }
}

Nachdem Sie die Aufgabe an uns übermittelt haben, sollten Sie in der Antwort eine ‘taskId’ erhalten, falls dies erfolgreich war. Bitte lesen Sie errorCode: vollständige Fehlerliste, falls Sie die Aufgaben-ID nicht erhalten haben. Für weitere Informationen können Sie auch diesen Blogbeitrag Wie man AWS Amazon Captcha Token löst konsultieren.

Beispielantwort

{
    "errorId": 0,
    "errorCode": "",
    "errorDescription": "",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Ergebnisse abrufen

Nachdem Sie die Aufgaben-ID haben, müssen Sie die Aufgaben-ID übermitteln, um die Lösung abzurufen. Die Antwortstruktur wird unter getTaskResult erklärt.

Abhängig von der Systemauslastung erhalten Sie die Ergebnisse innerhalb eines Zeitraums von 5s bis 30s.

Beispielanfrage

POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json
 
{
    "clientKey": "YOUR_API_KEY",
    "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

Beispielantwort

{
  "errorId": 0,
  "taskId": "646825ef-9547-4a29-9a05-50a6265f9d8a",
  "status": "ready",
  "solution": {
    "cookie": "223d1f60-0e9f-4238-ac0a-e766b15a778e:EQoAf0APpGIKAAAA:AJam3OWpff1VgKIJxH4lGMMHxPVQ0q0R3CNtgcMbR4VvnIBSpgt1Otbax4kuqrgkEp0nFKanO5oPtwt9+Butf7lt0JNe4rZQwZ5IrEnkXvyeZQPaCFshHOISAFLTX7AWHldEXFlZEg7DjIc="
  }
}

SDK-Anfrage verwenden

# 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"
})

Beispielcode

# 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)