Skip to content
API
Captcha Geetest

Geetest Image Captcha

Visão Geral

O Geetest é um sistema de captcha popular na China e países asiáticos, usando desafios interativos como arrastar peças de quebra-cabeça e reconhecimento de imagem. Nós fornecemos serviços para resolver todos os tipos de Imagem Geetest (Geetest v3, Geetest v4, ...) em navegadores, simuladores e farms de telefones.

🧩

Esta documentação orienta você através do manuseio do Geetest Captcha que requer que os usuários identifiquem e cliquem em objetos em sequência na imagem de fundo. Para captcha do tipo arrastar, siga as instruções para o tipo arrastar do Tiktok Captcha.

Geetest Captcha

1. Criar Solicitação

Formato de Envio de Imagem

Separe as imagens de ícones e as imagens de fundo conforme mostrado abaixo

Solicitação

POST https://api.achicaptcha.com/createTask

Parâmetros

Nome do parâmetroTipo de dadosObrigatório?Descrição
clientKeystringsimChave da API
task.typestringsimGeetestImageCaptchaTask
task.imagestringsimLista de imagens base64 seguindo o princípio: icon_1
task.subTypeintsimTipo de captcha: 7: Selecionar objetos na ordem

Exemplo de Solicitação

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "SUA_CHAVE_API",
  "task": {
    "type": "GeetestImageCaptchaTask",
    "image": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...|/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT...",
    "subType": 7
  }
}

Nota: O parâmetro image deve ser uma string base64 de ícones e imagens de fundo, separados por |. Ordem: icon_1|icon_2|icon_3|...|background

Resposta

Em caso de sucesso, o servidor retorna errorId = 0 e taskId

{
  "errorId": 0,
  "taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}

2. Obter Resultado

Solicitação

POST https://api.achicaptcha.com/getTaskResult

Parâmetros

Nome do parâmetroTipo de dadosObrigatório?Descrição
clientKeystringsimChave da API
taskIdstringsimTaskId obtido em (1)

Exemplo de Solicitação

POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "SUA_CHAVE_API",
  "taskId": "f2fc70d6-c76b-4fba-9480-205ac1fe9fb9"
}

Resposta

{ 
  "errorId": 0, 
  "status": "ready", 
  "solution": "x1,y1,x2,y2,x3,y3" 
}  

Explicação do Status

  • errorId = 0 e status = ready: Resolvido com sucesso, leia o resultado em solution
  • errorId = 1 e status = processing: Resolvendo captcha, aguarde 1-2 segundos e tente novamente
  • errorId diferente de 0 e 1: Erro do sistema, retorna código de erro e descrição

Significado do Resultado

  • solution: Retorna coordenadas para clicar no captcha, formato x1,y1,x2,y2,x3,y3,...
    • Cada par (x, y) representa coordenadas de pixel para clicar na imagem de fundo
    • A ordem de clique corresponde à ordem dos ícones exibidos

Exemplos de Integração

import requests
import time
 
 
def solve_geetest_image(base64_images, sub_type=7, api_key='SUA_CHAVE_API'):
    # base64_images: "icon1|icon2|icon3|background" - string base64 separada por |
    
    # Passo 1: Criar tarefa
    create_task_url = 'https://api.achicaptcha.com/createTask'
    create_task_payload = {
        'clientKey': api_key,
        'task': {
            'type': 'GeetestImageCaptchaTask',
            'image': base64_images,
            'subType': sub_type
        }
    }
    
    response = requests.post(create_task_url, json=create_task_payload)
    result = response.json()
    
    if result['errorId'] != 0:
        raise Exception(result['errorDescription'])
    
    task_id = result['taskId']
    
    # Passo 2: Obter resultado
    get_result_url = 'https://api.achicaptcha.com/getTaskResult'
    
    while True:
        time.sleep(2)  # Aguardar 2 segundos
        
        get_result_payload = {
            'clientKey': api_key,
            'taskId': task_id
        }
        
        response = requests.post(get_result_url, json=get_result_payload)
        result = response.json()
        
        if result['errorId'] not in [0, 1]:
            raise Exception(result['errorDescription'])
        
        if result['status'] == 'ready':
            return result['solution']  # "x1,y1,x2,y2,x3,y3"
        
        # Se status == 'processing', continuar loop
 
# Uso
# Assuma que você tem imagens base64
icon1_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon2_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
icon3_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
background_base64 = '/9j/4AAQSkZJRgABAQEASABIAAD...'
 
base64_images = f'{icon1_base64}|{icon2_base64}|{icon3_base64}|{background_base64}'
solution = solve_geetest_image(base64_images, 7, 'SUA_CHAVE_API')
print('Coordenadas do Geetest:', solution)  # "x1,y1,x2,y2,x3,y3"
 
# Analisar coordenadas e usar
coords = [int(c) for c in solution.split(',')]
for i in range(0, len(coords), 2):
    x, y = coords[i], coords[i + 1]
    print(f'Clicar em ({x}, {y})')
    # Realizar clique nas coordenadas (x, y)

Códigos de Erro Comuns

Código de ErroDescriçãoNotas
0successSucesso
1processingProcessando
2missing required fieldsCampos obrigatórios ausentes, verifique os parâmetros novamente
3task not supportedTipo de tarefa não suportado
4task creation failedFalha na criação da tarefa
5client key does not existA chave da API não existe, verifique a chave novamente
6insufficient account balanceSaldo da conta insuficiente, adicione mais créditos
7task failed, please create a new taskTarefa falhou, por favor crie uma nova tarefa
8task ID does not existID da tarefa não existe

Melhores Práticas

Para obter os melhores resultados ao usar a API Achicaptcha para Geetest Image, siga estes princípios:

1. Prepare Imagens no Formato Correto

  • Todas as imagens devem ser codificadas em base64
  • Ordem da imagem: icon_1|icon_2|...|icon_n|background
  • Imagens Base64 são separadas pelo caractere |
  • Garanta que a imagem de fundo seja a última na string

2. Use os Resultados Corretamente

  • O resultado retornado é uma string de coordenadas: x1,y1,x2,y2,x3,y3,...
  • Cada par (x, y) são coordenadas de pixel na imagem de fundo
  • A ordem de clique corresponde à ordem dos ícones exibidos
  • Clique precisamente nas coordenadas para completar o captcha

3. Intervalo de Polling

  • Aguarde pelo menos 1-2 segundos entre as verificações de resultado
  • Não inunde a API com muitas solicitações consecutivas
  • Defina um tempo limite (timeout) para evitar loops infinitos (recomendado 60 segundos)

4. Tratamento de Erros

  • Verifique errorId = 1 para status de processamento
  • Tente novamente para erros temporários (errorId = 6, 7)
  • Crie uma nova tarefa se a tarefa atual falhar
  • Limite o número máximo de tentativas

5. Segurança da Chave API

  • Não codifique a chave API diretamente no código
  • Use variáveis de ambiente
  • Não exponha a chave API no lado do cliente (client-side)
  • Faça chamadas de API do backend/servidor

Links Úteis: