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.

1. Criar tarefa
Formato de envio de imagem
Imagem de amostra

Imagem de grade

Solicitação
POST https://api.achicaptcha.com/createTask
Parâmetros
| Nome do parâmetro | Tipo de dado | Obrigatório? | Descrição |
|---|---|---|---|
clientKey | string | yes | API key |
task.type | string | yes | GridCaptcha |
task.subType | string | yes | botion |
task.image | string | yes | BASE64_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.other | string | no | topk|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âmetro | Tipo de dado | Obrigatório? | Descrição |
|---|---|---|---|
clientKey | string | yes | API key |
taskId | string | yes | TaskId 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 = 0estatus = ready: Resolvido com sucesso, leia os índices de células emsolution.clickerrorId = 0estatus = processing: Ainda resolvendo, aguarde 2 segundos e verifique novamenteerrorId > 0: Erro do sistema, verifiqueerrorCodeeerrorDescription
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 erro | Descrição | Notas |
|---|---|---|
| 0 | success | Sucesso |
| 1 | processing | Processando |
| 2 | missing required fields | Campos obrigatórios ausentes, verifique os parâmetros |
| 3 | task not supported | Tipo de tarefa não suportado |
| 4 | task creation failed | Falha na criação da tarefa |
| 5 | client key does not exist | API key não existe, verifique a chave |
| 6 | insufficient account balance | Saldo insuficiente, adicione créditos |
| 7 | task failed, please create a new task | Tarefa falhou, crie uma nova tarefa |
| 8 | task ID does not exist | ID 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_sizeincorreto quebrará o mapeamento de índices de base 0 emsolution.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: