UNLOCK API
Amazon AWS WAF

Amazon AWS WAF

Como enviar uma tarefa de Amazon AWS WAF para a UNLOCK API com createTask ou in.php: nomes do tipo de tarefa, todos os parâmetros, o objeto solution, os campos de proxy e exemplos de código em 7 linguagens.
Preço
$0.70 $0.0007 por tarefa
Você envia
URL da página, a site key do WAF e os valores iv e context da página de desafio
Você recebe
Valores para o cookie aws-waf-token

Visão geral e preço

Nomes do tipo de tarefa

Use o primeiro nome para resolver sem proxy. Use o segundo nome e adicione os campos de proxy para resolver pelo seu próprio proxy. O preço é o mesmo.
AmazonTaskProxylessSem proxy
AmazonTaskCom seu proxy

Também aceito: AntiAwsWafTaskProxyless, AntiAwsWafTask

Objeto da tarefa

type
StringObrigatório
Nome do tipo de tarefa. Reconhecido com letras maiúsculas ou minúsculas. AmazonTaskProxyless | AmazonTask
websiteURL
StringObrigatório
Endereço completo da página onde o CAPTCHA aparece, começando com http:// ou https://.
websiteKey
StringObrigatório
A chave do site do widget CAPTCHA, encontrada no código-fonte da página (por exemplo data-sitekey).
iv
StringObrigatório
O valor iv da página do AWS WAF.
context
StringObrigatório
O valor context da página do AWS WAF.
challengeScript
StringOpcional
Endereço do script challenge.js.
captchaScript
StringOpcional
Endereço do script captcha.js.

Campos que não aparecem aqui são repassados ao resolvedor como foram enviados.

Campos de proxy

Só para o nome de tipo com proxy. Envie os campos separados ou uma única string proxy.
proxyType
StringObrigatório
http, https, socks4 ou socks5.
proxyAddress
StringObrigatório
Endereço IP ou nome de host do proxy.
proxyPort
IntegerObrigatório
Porta do proxy.
proxyLogin
StringOpcional
Usuário do proxy, se o proxy exigir.
proxyPassword
StringOpcional
Senha do proxy, se o proxy exigir.
proxy
String
Todos os campos de proxy em uma única string, por exemplo http://user:pass@1.2.3.4:8080.

Usando proxy

Requisição

POST /createTask
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "AmazonTaskProxyless",
    "websiteURL": "https://example.com/login",
    "websiteKey": "AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AH...",
    "iv": "CgAFRjIw2vAAABSM",
    "context": "zPT0jOl1rQlUNaldX6LUpn4D6Tl9bJ8VUQ..."
  }
}

Objeto solution

Retornado em solution quando status é ready.
captcha_voucher
String
captcha voucher do AWS WAF.
existing_token
String
Token do AWS WAF. Envie-o como o cookie aws-waf-token.
POST /getTaskResult
{
  "errorId": 0,
  "taskId": 1001,
  "status": "ready",
  "solution": {
    "captcha_voucher": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "existing_token": "f8ab5749-f916-4d29-91ff-a2b8c1e5d2a7:EQoAf0APpGIKAAAA..."
  },
  "cost": "0.0007",
  "createTime": 1791640000,
  "endTime": 1791640014,
  "solveCount": 1
}

Exemplos de código

import time, requests

API = "https://unlock-api.com"
KEY = "YOUR_API_KEY"

task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
      "type": "AmazonTaskProxyless",
      "websiteURL": "https://example.com/login",
      "websiteKey": "AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AH...",
      "iv": "CgAFRjIw2vAAABSM",
      "context": "zPT0jOl1rQlUNaldX6LUpn4D6Tl9bJ8VUQ..."
    }
}).json()
if task["errorId"]:
    raise SystemExit(task["errorCode"])

for _ in range(60):   # 60 x 5 s = the 5 minute task limit
    time.sleep(5)
    r = requests.post(f"{API}/getTaskResult", json={"clientKey": KEY, "taskId": task["taskId"]}).json()
    if r["errorId"]:
        raise SystemExit(f"{r['errorCode']}: {r.get('errorDescription', '')}")   # failed tasks are refunded
    if r["status"] == "ready":
        print(r["solution"])
        break
else:
    raise SystemExit("timed out")

Método de formulário in.php

A mesma tarefa com a requisição de formulário clássica. res.php retorna a resposta como texto.
in.php, res.php
curl -s "https://unlock-api.com/in.php" -d "key=YOUR_API_KEY&method=amazon_waf&sitekey=KEY&iv=IV&context=CONTEXT&pageurl=https://example.com/login&json=1"
# {"status":1,"request":"1001"}

curl -s "https://unlock-api.com/res.php?key=YOUR_API_KEY&action=get&id=1001&json=1"
# {"status":0,"request":"CAPCHA_NOT_READY"}  then  {"status":1,"request":"ANSWER"}

API de formulário: in.php e res.php