Skip to content
API
Captcha em Grelha
Botion

Botion Grid Captcha

Visão geral

Botion é um captcha de seleção em grade: a página exibe uma imagem de amostra de referência e uma grade 3×3 de blocos. O solucionador deve retornar quais células da grade correspondem à referência (índices de base 0, ordem de linha: da esquerda para a direita, de cima para baixo).

🔲

O campo task.image codifica dois payloads Base64 unidos por | — primeiro a imagem de amostra, depois a imagem de grade.

Botion captcha UI example

1. Criar tarefa

Formato de envio de imagem

Imagem de amostra Botion request payload (sample | grid)

Imagem de grade Botion request payload (sample | grid)

Solicitação

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

Parâmetros

Nome do parâmetroTipo de dadoObrigatório?Descrição
clientKeystringyesAPI key
task.typestringyesGridCaptcha
task.subTypestringyesbotion
task.imagestringyesBASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE — primeiro a imagem de amostra, depois |, depois a imagem de grade 3×3 (ambas em Base64, sem prefixo data:)
task.otherstringnotopk|grid_size. Padrão 3|3 se omitido

Exemplo de solicitação

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GridCaptcha",
    "subType": "botion",
    "image": "BASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE",
    "other": "3|3"
  }
}

Resposta

Quando bem-sucedido, o servidor retorna errorId = 0 e taskId

{
  "errorId": 0,
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

2. Obter resultado

Solicitação

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

Parâmetros

Nome do parâmetroTipo de dadoObrigatório?Descrição
clientKeystringyesAPI key
taskIdstringyesTaskId obtido da etapa (1)

Exemplo de solicitação

POST /getTaskResult HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "taskId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

Resposta

{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "click": "0,2,5"
  }
}

solution.click é uma string de índices de células de base 0 (ordem de linha) separados por vírgulas para clicar na grade 3×3.

Explicação dos status

  • errorId = 0 e status = ready: Resolvido com sucesso, leia os índices de células em solution.click
  • errorId = 0 e status = processing: Ainda resolvendo, aguarde 2 segundos e verifique novamente
  • errorId > 0: Erro do sistema, verifique errorCode e errorDescription

Exemplos de integração

import requests
import base64
import time
 
def solve_botion(sample_path, grid_path, api_key='YOUR_API_KEY', other='3|3'):
    with open(sample_path, 'rb') as f:
        sample_b64 = base64.b64encode(f.read()).decode()
    with open(grid_path, 'rb') as f:
        grid_b64 = base64.b64encode(f.read()).decode()
 
    # Passo 1: Criar tarefa
    create_resp = requests.post(
        'https://api.achicaptcha.com/createTask',
        json={
            'clientKey': api_key,
            'task': {
                'type': 'GridCaptcha',
                'subType': 'botion',
                'image': f'{sample_b64}|{grid_b64}',
                'other': other
            }
        }
    )
    result = create_resp.json()
 
    if result['errorId'] != 0:
        raise Exception(result['errorDescription'])
 
    task_id = result['taskId']
 
    # Passo 2: Verificar resultado
    while True:
        time.sleep(2)
        poll_resp = requests.post(
            'https://api.achicaptcha.com/getTaskResult',
            json={'clientKey': api_key, 'taskId': task_id}
        )
        result = poll_resp.json()
 
        if result['errorId'] != 0:
            raise Exception(result['errorDescription'])
 
        if result['status'] == 'ready':
            return result['solution']['click']  # e.g. "0,2,5"
 
# Uso
indices = solve_botion('sample.png', 'grid.png', 'YOUR_API_KEY')
print('Células para clicar:', indices)

Códigos de erro comuns

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

Melhores práticas

Para melhores resultados ao usar a API Achicaptcha para Botion Grid Captcha, siga estes princípios:

1. Ordem das imagens

  • Sempre envie a imagem de amostra (referência) primeiro, depois |, depois a imagem de grade
  • Não inclua o prefixo data:image/...;base64, — apenas Base64 bruto
  • Certifique-se de que ambas as imagens estejam completamente carregadas e codificadas antes de enviar

2. Parâmetro task.other

  • O formato é topk|grid_size (ex. 3|3)
  • Se omitido, o padrão é 3|3, mas sempre defina explicitamente para evitar comportamento inesperado
  • Um grid_size incorreto quebrará o mapeamento de índices de base 0 em solution.click

3. Intervalo de verificação

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

4. Processamento de resultados

  • solution.click é uma string de índices de células de base 0 (ordem de linha, da esquerda para a direita, de cima para baixo) separados por vírgulas
  • Divida por , e converta para inteiros antes de clicar nas células de grade correspondentes

5. Lógica de nova tentativa

  • Implemente novas tentativas para erros temporários como ERROR_NO_SLOT_AVAILABLE
  • Use backoff exponencial ao tentar novamente
  • Limite o número máximo de tentativas

6. Segurança da chave de API

  • Não codifique sua chave de API no código-fonte
  • Use variáveis de ambiente ou um gerenciador de segredos
  • Nunca exponha a chave de API no lado do cliente

Links úteis: