Skip to content
API
Grid капча
Botion

Botion Grid Captcha

Обзор

Botion — это капча выбора в сетке: на странице отображается эталонное изображение и сетка 3×3. Решатель должен вернуть индексы ячеек сетки, соответствующих эталону (индексы от 0, построчно: слева направо, сверху вниз).

🔲

Поле task.image кодирует два Base64-пейлоада, объединённых символом | — сначала изображение образца, затем изображение сетки.

Botion captcha UI example

1. Создать задачу

Формат отправки изображений

Изображение примера Botion request payload (sample | grid)

Изображение сетки Botion request payload (sample | grid)

Запрос

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

Параметры

Имя параметраТип данныхОбязательно?Описание
clientKeystringyesAPI key
task.typestringyesGridCaptcha
task.subTypestringyesbotion
task.imagestringyesBASE64_SAMPLE_IMAGE|BASE64_GRID_IMAGE — сначала изображение образца, затем |, затем изображение сетки 3×3 (оба в Base64, без префикса data:)
task.otherstringnotopk|grid_size. По умолчанию 3|3 если не указано

Пример запроса

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

Ответ

При успехе сервер возвращает errorId = 0 и taskId

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

2. Получить результат

Запрос

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

Параметры

Имя параметраТип данныхОбязательно?Описание
clientKeystringyesAPI key
taskIdstringyesTaskId, полученный на шаге (1)

Пример запроса

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

Ответ

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

solution.click — строка с индексами ячеек от 0 (построчно), разделёнными запятыми, которые нужно нажать в сетке 3×3.

Объяснение статусов

  • errorId = 0 и status = ready: Успешно решено, прочитайте индексы ячеек в solution.click
  • errorId = 0 и status = processing: Ещё решается, подождите 2 секунды и опросите снова
  • errorId > 0: Системная ошибка, проверьте errorCode и errorDescription

Примеры интеграции

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()
 
    # Шаг 1: Создать задачу
    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']
 
    # Шаг 2: Опрашивать результат
    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"
 
# Использование
indices = solve_botion('sample.png', 'grid.png', 'YOUR_API_KEY')
print('Ячейки для нажатия:', indices)

Распространённые коды ошибок

Код ошибкиОписаниеПримечания
0successУспех
1processingОбработка
2missing required fieldsОтсутствуют обязательные поля, проверьте параметры
3task not supportedТип задачи не поддерживается
4task creation failedСоздание задачи не удалось
5client key does not existAPI ключ не существует, проверьте ключ
6insufficient account balanceНедостаточный баланс, пополните счёт
7task failed, please create a new taskЗадача не удалась, создайте новую
8task ID does not existID задачи не существует

Рекомендации

Для достижения наилучших результатов при использовании Achicaptcha API для Botion Grid Captcha следуйте этим принципам:

1. Порядок изображений

  • Всегда отправляйте изображение образца (эталона) первым, затем |, затем изображение сетки
  • Не включайте префикс data:image/...;base64, — только чистый Base64
  • Убедитесь, что оба изображения полностью загружены и закодированы перед отправкой

2. Параметр task.other

  • Формат: topk|grid_size (например 3|3)
  • Если не указан, по умолчанию используется 3|3, но всегда задавайте явно во избежание непредвиденного поведения
  • Неверный grid_size нарушит маппинг индексов от 0 в solution.click

3. Интервал опроса

  • Ждите не менее 2 секунд между проверками результата
  • Не спамьте API последовательными запросами
  • Установите тайм-аут во избежание бесконечных циклов (рекомендуется: 60 секунд)

4. Обработка результата

  • solution.click — строка с индексами ячеек от 0 (построчно, слева направо, сверху вниз), разделёнными запятыми
  • Разделите по , и преобразуйте в целые числа перед нажатием соответствующих ячеек сетки

5. Логика повторных попыток

  • Реализуйте повтор при временных ошибках типа ERROR_NO_SLOT_AVAILABLE
  • Используйте экспоненциальную задержку при повторах
  • Ограничьте максимальное число попыток

6. Безопасность API ключа

  • Не храните API ключ в исходном коде
  • Используйте переменные окружения или менеджер секретов
  • Никогда не раскрывайте API ключ на стороне клиента

Полезные ссылки: