AwsWafCaptcha: AWS WAF lösen
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
Eigenschaften | Typ | Erforderlich | Beschreibung |
---|---|---|---|
type | String | Erforderlich | AntiAwsWafTask AntiAwsWafTaskProxyLess |
proxy | String | Optional | Erfahren Sie mehr über Verwendung von Proxys |
websiteURL | String | Erforderlich | Die URL der Seite, die Captcha-bezogene Informationen zurückgibt |
awsKey | String | Optional | Der key -Wert, der von der Captcha-Seite zurückgegeben wird |
awsIv | String | Optional | Der iv -Wert, der von der Captcha-Seite zurückgegeben wird |
awsContext | String | Optional | Der context -Wert, der von der Captcha-Seite zurückgegeben wird |
awsChallengeJS | String | Optional | Der challenge.js -Link, der von der Captcha-Seite zurückgegeben wird |
awsApiJs | String | Optional | Der jsapi.js -Link, der von der Captcha-Seite zurückgegeben wird |
awsProblemUrl | String | Optional | Die problem -Endpunkt-URL, die Schlüsselwörter wie problem , num_solutions_required usw. enthält. |
awsApiKey | String | Optional | Der api_key -Wert des problem -Endpunkts |
awsExistingToken | String | Optional | Das aws-waf-token , das für die letzte Verifizierung verwendet wurde |
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.
Situation | Zu übergebende Parameter | Voraussetzungen |
---|---|---|
Situation 1 | websiteURL | Der 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 2 | websiteURL 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-1 | websiteURL 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-2 | websiteURL 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 4 | websiteURL 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 5 | websiteURL 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)