Калейдоскоп

Задачи со сдвигом пазла. Бета.

Пример задания

Перемещайте слайдер

Потяните вправо

1. Создание задачи, версия 1

POSThttps://api.capsola.cloud/create

Запрос

Ключ передаётся в заголовке X-API-Key, тело — JSON.

json
{
  "type": "PazlCaptcha",
  "task": "TASK_BASE_64"
}
typestring обязательный

Тип задачи — PazlCaptcha.

taskbase64 обязательный

Полный HTML-код страницы.

app_idstring

Идентификатор приложения разработчика — выдаётся в партнёрском разделе.

Ответ

json
{
  "status": 1,
  "response": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
statusnumber

1 — задача принята, 0 — ошибка.

responsestring

Идентификатор задачи или код ошибки.

1.1. Создание задачи, версия 2

Версия 2 принимает готовое изображение и список перестановок — HTML страницы не нужен.

POSThttps://api.capsola.cloud/create

Запрос

json
{
  "type": "PazlCaptchaV2",
  "image": "IMAGE_BASE_64",
  "task": "[23,12,12,23]"
}
typestring обязательный

Тип задачи — PazlCaptchaV2.

imagebase64 обязательный

Изображение капчи.

taskstring обязательный

Порядковый список перестановок.

app_idstring

Идентификатор приложения разработчика — выдаётся в партнёрском разделе.

Ответ

json
{
  "status": 1,
  "response": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
statusnumber

1 — задача принята, 0 — ошибка.

responsestring

Идентификатор задачи или код ошибки.

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

POSThttps://api.capsola.cloud/result

Запрос

json
{
  "id": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
idstring обязательный

Идентификатор задачи из ответа на /create.

Ответ

json
{
  "status": 1,
  "response": "12"
}
statusnumber

1 — задача решена, 0 — ошибка.

responsestring

Номер шага, на котором пазл сложен, — цикл кликов начинайте с 1. Либо код ошибки.

Ответ CAPCHA_NOT_READY означает, что задача ещё решается. Опрашивайте так:

  1. первый запрос — через 1 секунду после /create: у большинства капч ответ к этому моменту уже готов;
  2. дальше — каждые 2 секунды, пока не придёт ответ или другая ошибка, но не дольше 90 секунд.

Подробнее — про соединение, таймауты и повторы — в разделе «Интеграция».


Примеры использования

Примеры — для версии 2: картинка капчи берётся из файла pazl.png, в task — список перестановок со страницы. Для версии 1 отличается только тело /create: {"type": "PazlCaptcha", "task": "<HTML страницы в Base64>"}.

import base64
import time

import requests

API = 'https://api.capsola.cloud'

# Один клиент на все запросы — соединение переиспользуется.
session = requests.Session()
session.headers['X-API-Key'] = 'API_KEY'


def b64(path):
    with open(path, 'rb') as f:
        return base64.b64encode(f.read()).decode()


created = session.post(f'{API}/create', json={
    'type': 'PazlCaptchaV2',
    'image': b64('pazl.png'),
    'task': '[23,12,12,23]',
}, timeout=15).json()
print(created)

if created['status'] == 1:
    # Через 1 с, дальше каждые 2 с — не дольше 90 с.
    for delay in [1] + [2] * 45:
        time.sleep(delay)
        result = session.post(f'{API}/result', json={'id': created['response']}, timeout=10).json()
        print(result)
        if result['status'] == 1 or result['response'] != 'CAPCHA_NOT_READY':
            break