Skip to content
API
Grid капча
Tencent

TC Grid Captcha

Обзор

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

🔲

Поле task.image кодирует изображение сетки как одну строку Base64.

Вопрос: 选择图像 是 "灰色花瓶" TC Grid Captcha UI example

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

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

Изображение сетки TC Grid Captcha request payload (grid)

Запрос

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

Параметры

Имя параметраТип данныхОбязательно?Описание
clientKeystringyesAPI key
task.typestringyesGridCaptcha
task.subTypestringyestc
task.imagestringyesИзображение сетки в кодировке Base64
task.otherstringyesТекст вопроса/подсказки, отображаемый пользователю (например "灰色花瓶")

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

POST /createTask HTTP/1.1
Host: api.achicaptcha.com
Content-Type: application/json
 
{
  "clientKey": "YOUR_API_KEY",
  "task": {
    "type": "GridCaptcha",
    "subType": "tc",
    "image": "BASE64_GRID_IMAGE",
    "other": "灰色花瓶"
  }
}

Ответ

При успехе сервер возвращает 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 (построчно), разделёнными запятыми, которые нужно нажать в сетке.

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

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

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

import requests
import base64
import time
 
def solve_tc(grid_path, question, api_key='YOUR_API_KEY'):
    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': 'tc',
                'image': grid_b64,
                'other': question
            }
        }
    )
    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_tc('grid.jpg', '灰色花瓶', '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 для TC Grid Captcha следуйте этим принципам:

1. Кодирование изображения

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

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

  • Передавайте точный текст вопроса, отображаемый пользователю (например "灰色花瓶")
  • Это поле обязательно — его отсутствие приведёт к неверным результатам
  • Копируйте строку вопроса дословно из задания капчи

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

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

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

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

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

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

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

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

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