Guia
Tarefa (Token)
Geetest

GeeTestTask: resolvendo Geetest

DICA

Crie a tarefa com o método createTask e obtenha o resultado com o método getTaskResult.

Os types de tarefa que suportamos:

  • GeeTestTaskProxyLess

TIPOS DE IMAGEM SUPORTADOS

TipoNotaEstado
img.pngslideestável
img_2.pngclique no íconeestável
img_2.pngesmagar íconeestável
img_2.pngnoveestável
img_2.pnggobangestável

Criar Tarefa

Crie uma tarefa com o createTask para criar uma tarefa.

Estrutura do Objeto da Tarefa

PropriedadesTipoObrigatórioDescrição
typeStringObrigatórioGeeTestTaskProxyLess
websiteURLStringObrigatórioEndereço web do site que usa geetest (Ex: https://geetest.com)
gtStringObrigatórioApenas Geetest V3 é obrigatório
challengeStringObrigatórioApenas Geetest V3 é obrigatório
captchaIdStringOpcionalapenas Geetest V4 é obrigatório
geetestApiServerSubdomainStringOpcionalSubdomínio de API especial, exemplo: api.geetest.com

Exemplo de Requisição

Exemplo de requisição usando Geetest V3

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type":"GeetestTaskProxyless",
        "websiteURL":"https://mywebsite.com/geetest/test.php",
        "gt":"",
        "challenge":"",
        "geetestApiServerSubdomain":"api.geetest.com" // Optional
    }
}

Exemplo de Requisição Usando Geetest V4

POST https://api.capsolver.com/createTask
Host: api.capsolver.com
Content-Type: application/json
{
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type":"GeetestTaskProxyless",
        "websiteURL":"https://mywebsite.com/geetest/test.php",
        "captchaId": "..."
    }
}

Exemplo de Resposta

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

Obtendo Resultado

Use o getTaskResult para obter o resultado. Dependendo da carga do sistema, você obterá o resultado no intervalo de 3s a 10s.

Exemplo de Requisição

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

Exemplo de Resposta

Exemplo de resposta usando GeetestV3

{
  "errorId": 0,
  "solution": {
    "challenge": "",
    "validate": ""
  },
  "status": "ready"
}

Exemplo de Resposta Usando GeetestV4

{
  "errorId": 0,
  "taskId": "e0ecaaa8-06f6-41fd-a02e-a0c79b957b15",
  "status": "ready",
  "solution": {
    "captcha_id": "",
    "captcha_output": "",
    "gen_time": "",
    "lot_number": "",
    "pass_token": "",
    "risk_type": "slide"
  }
}

Usar Requisição SDK

# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'
 
import capsolver
 
capsolver.api_key = "..."
# v3
solution = capsolver.solve({
    "type": "GeeTestTaskProxyLess",
    "websiteURL": "http://mywebsite.com/geetest/test.php",
    "gt": "...",
    "challenge": "..."
})
 
# v4
solution = capsolver.solve({
    "type": "GeeTestTaskProxyLess",
    "websiteURL": "http://mywebsite.com/geetest/test.php",
    "captchaId": "..."
})

Exemplo de Código

# pip install requests
import requests
import time
 
api_key = "YOUR_API_KEY"  # TODO: your api key of capsolver
 
 
def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'GeeTestTaskProxyLess',
            "websiteURL": "https://mywebsite.com/geetest/test.php",  # page url of your site
            "gt": "...",  # v3 is required
            "challenge":   "...",  # v3 is required
            "captchaId":   "...",  # v4 is required
        }
    }
    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")
        if status == "failed" or resp.get("errorId"):
            print("Solve failed! response:", res.text)
            return
 
 
solution = capsolver()
print(solution)

Pontos a serem observados

  1. Por favor, não copie diretamente da ferramenta de desenvolvedor do navegador, GET GT e challenge na requisição.

  2. Um pequeno número de erros ao reobter os parâmetros do código de verificação pode ser retentado.

  3. Os parâmetros do código de verificação só podem ser submetidos para identificação uma vez, não repita os mesmos parâmetros submetidos para identificação, é necessário reinicializar a aquisição.

  4. Nota: Se não conseguir passar, o site pode ter problemas de codificação, então substitua o símbolo = do CAPTCHA por %3D, outros sem codificação, por favor, note isso.

5Os parâmetros, como o servidor de teste, podem ser consultados aqui no documento Geetest.