Skip to content
API
Captcha de Grilla
Botion

Botion Grid Captcha

Descripción general

Botion es una captcha de selección en cuadrícula: la página muestra una imagen de muestra de referencia y una cuadrícula de 3×3. El solucionador debe devolver qué celdas de la cuadrícula coinciden con la referencia (índices de base 0, orden de fila: de izquierda a derecha, de arriba a abajo).

🔲

El campo task.image codifica dos cargas útiles Base64 unidas por | — primero la imagen de muestra, luego la imagen de cuadrícula.

Botion captcha UI example

1. Crear tarea

Formato de envío de imagen

Imagen de muestra Botion request payload (sample | grid)

Imagen de cuadrícula Botion request payload (sample | grid)

Solicitud

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

Parámetros

Nombre del parámetroTipo de dato¿Requerido?Descripción
clientKeystringyesAPI key
task.typestringyesGridCaptcha
task.subTypestringyesbotion
task.imagestringyesBASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE — primero la imagen de muestra, luego |, luego la imagen de cuadrícula 3×3 (ambas en Base64, sin prefijo data:)
task.otherstringnotopk|grid_size. Por defecto 3|3 si se omite

Ejemplo de solicitud

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"
  }
}

Respuesta

Cuando tiene éxito, el servidor devuelve errorId = 0 y taskId

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

2. Obtener resultado

Solicitud

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

Parámetros

Nombre del parámetroTipo de dato¿Requerido?Descripción
clientKeystringyesAPI key
taskIdstringyesTaskId obtenido del paso (1)

Ejemplo de solicitud

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

Respuesta

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

solution.click es una cadena de índices de celdas de base 0 (orden de fila) separados por comas para hacer clic en la cuadrícula 3×3.

Explicación de estados

  • errorId = 0 y status = ready: Resuelto exitosamente, leer índices de celdas en solution.click
  • errorId = 0 y status = processing: Aún resolviendo, esperar 2 segundos y consultar de nuevo
  • errorId > 0: Error del sistema, verificar errorCode y errorDescription

Ejemplos de integración

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()
 
    # Paso 1: Crear tarea
    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']
 
    # Paso 2: Consultar 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('Celdas a hacer clic:', indices)

Códigos de error comunes

Código de errorDescripciónNotas
0successÉxito
1processingProcesando
2missing required fieldsFaltan campos requeridos, verificar parámetros
3task not supportedTipo de tarea no soportado
4task creation failedCreación de tarea fallida
5client key does not existAPI key no existe, verificar clave
6insufficient account balanceSaldo insuficiente, añadir créditos
7task failed, please create a new taskTarea fallida, crear una nueva tarea
8task ID does not existID de tarea no existe

Mejores prácticas

Para obtener los mejores resultados al usar la API de Achicaptcha para Botion Grid Captcha, siga estos principios:

1. Orden de imágenes

  • Siempre envíe primero la imagen de muestra (referencia), luego |, luego la imagen de cuadrícula
  • No incluya el prefijo data:image/...;base64, — solo Base64 sin procesar
  • Asegúrese de que ambas imágenes estén completamente cargadas y codificadas antes de enviar

2. Parámetro task.other

  • El formato es topk|grid_size (ej. 3|3)
  • Si se omite, por defecto es 3|3, pero siempre configúrelo explícitamente para evitar comportamiento inesperado
  • Un grid_size incorrecto romperá el mapeo de índices de base 0 en solution.click

3. Intervalo de consulta

  • Espere al menos 2 segundos entre verificaciones de resultado
  • No sature la API con solicitudes consecutivas
  • Establezca un tiempo de espera para evitar bucles infinitos (recomendado: 60 segundos)

4. Procesamiento de resultados

  • solution.click es una cadena de índices de celdas de base 0 (orden de fila, de izquierda a derecha, de arriba a abajo) separados por comas
  • Divida por , y convierta a enteros antes de hacer clic en las celdas de cuadrícula correspondientes

5. Lógica de reintento

  • Implemente reintentos para errores temporales como ERROR_NO_SLOT_AVAILABLE
  • Use retroceso exponencial al reintentar
  • Limite el número máximo de intentos de reintento

6. Seguridad de la API key

  • No codifique su API key en el código fuente
  • Use variables de entorno o un gestor de secretos
  • Nunca exponga la API key en el lado del cliente

Enlaces útiles: