Документация

Документация для решения TextCaptcha

1. Создание задачи TextCaptcha

Чтобы создать задачу TextCaptcha, отправьте POST-запрос на адрес https://api.capsola.cloud/create с указанием API-ключа в заголовке X-API-Key. В теле запроса передайте данные в формате JSON.

Запрос

  • URL: https://api.capsola.cloud/create
  • Метод: POST
  • Заголовок: X-API-Key: API KEY
  • Content-Type: application/json
  • Тело запроса (JSON):
    • type - * Обязательно. Тип задачи, в данном случае "TextCaptcha"
    • task - * Обязательно. Изображение капчи в формате Base64.
    • app_id - Идентификатор приложения разработчика (можно найти в разделе реферальная система для разработчиков)
    {
      "type": "TextCaptcha",
      "task": "IMAGE_BASE_64"
    }

Ответ

После успешного создания задачи получите уникальный идентификатор задачи.

{
  "status": 1,
  "response": "9051d4b4-0000-44d3-a4c2-db0215227862"
}
  • status - статус выполнения запроса (1 - успешно, 0 - ошибка).
  • response - идентификатор задания / код ошибки

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

Чтобы получить результаты обработки задачи TextCaptcha, отправьте POST-запрос на адрес https://api.capsola.cloud/result с указанием API-ключа в заголовке X-API-Key. В теле запроса передайте идентификатор задачи из предыдущего запроса.

Запрос

  • URL: https://api.capsola.cloud/result
  • Метод: POST
  • Заголовок: X-API-Key: API KEY
  • Тело запроса (JSON):
    • id - идентификатор созданной задачи
    {
      "id": "9051d4b4-0000-44d3-a4c2-db0215227862"
    }

Ответ

Получите результаты обработки задачи TextCaptcha.

{
  "status": 1,
  "response": "Фраза для ввода"
}
  • status - статус выполнения запроса (1 - успешно, 0 - ошибка).
  • response - координаты в формате x и y для каждой точки / код ошибки.

Если в ответе вы получаете значение CAPCHA_NOT_READY, это означает, что результаты еще не готовы. В таком случае, рекомендуется подождать от 2 до 10 секунд и повторить запрос на получение результатов. Повторяйте запрос, пока не получите успешный результат (status равен 1) или другой статус, указывающий на ошибку.


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

Python
import requests
import time
import base64
url_create = 'https://api.capsola.cloud/create'
url_result = 'https://api.capsola.cloud/result'
headers = {
    'Content-type': 'application/json',
    'X-API-Key': 'API_KEY'
}
# Create task
image_url = 'https://capsola.cloud/examples/text/task.png'
image_response = requests.get(image_url).content
IMAGE_BASE_64 = base64.b64encode(image_response)
data = {
  'type': 'TextCaptcha',
  'task': IMAGE_BASE_64,
}
request = requests.post(url = url_create, json = data, headers=headers)
request = request.json()
print(request)
# Get result
if request['status'] == 1:
    task_id = request['response']
    while True:
        time.sleep(2)
        data = {
            'id': task_id
        }
        request = requests.post(url=url_result, json=data, headers = headers)
        request = request.json()
        print(request)
        if request['status'] == 1:
            break
        if request['status'] == 0 and request['response'] != 'CAPCHA_NOT_READY':
            break
PHP
$url_create = 'https://api.capsola.cloud/create';
$url_result = 'https://api.capsola.cloud/result';
$headers = [
    'Content-Type: application/json',
    'X-API-Key: API_KEY'
];
function loadImageAsBase64($imageUrl)
{
    $imageData = file_get_contents($imageUrl);
    if ($imageData === false) {
        return null;
    }
    $base64Image = base64_encode($imageData);
    return $base64Image;
}
function makeRequest($url, $data, $headers) {
    $context = stream_context_create([
        'http' => [
            'method' => 'POST',
            'header' => implode("\r\n", $headers),
            'content' => json_encode($data)
        ]
    ]);
    return json_decode(file_get_contents($url, false, $context), true);
}
# Create task
$IMAGE_URL = "https://capsola.cloud/examples/text/task.png";
$CLICK_BASE_64 = loadImageAsBase64($IMAGE_URL);
$data = [
  'type' => 'TextCaptcha',
  'task' => $IMAGE_URL
];
$response = makeRequest($url_create, $data, $headers);
var_dump($response);
# Get result
if ($response['status'] == 1) {
    $task_id = $response['response'];
    while (1) {
        sleep(2);
        $response = makeRequest($url_result, ['id' => $task_id], $headers);
        var_dump($response);
        if ($response['status'] == 1) {
            break;
        }
        if ($response['status'] == 0 && $response['response'] != 'CAPCHA_NOT_READY') {
            break;
        }
    }
}
Nodejs
const urlCreate = "https://api.capsola.cloud/create";
const urlResult = "https://api.capsola.cloud/result";
const headers = {
  "Content-Type": "application/json",
  "X-API-Key: API_KEY",
};
const IMAGE_URL = "https://capsola.cloud/examples/text/task.png";
async function loadImageAsBase64(imageUrl) {
  const response = await fetch(imageUrl);
  const arrayBuffer = await response.arrayBuffer();
  const buffer = Buffer.from(arrayBuffer);
  const base64Image = buffer.toString('base64');
  return base64Image;
}
async function createTask() {
  const request = await fetch(urlCreate, {
    method: "POST",
    headers: headers,
    body: JSON.stringify({
      type: "TextCaptcha",
      task: await loadImageAsBase64(IMAGE_URL),
    }),
  });
  const { status, response } = await request.json();
  console.log({ status, response });
  if (status === 1) return response;
  console.error("Failed to create task:", response);
  return null;
}
async function getResult(taskId) {
  while (true) {
    await new Promise((resolve) => setTimeout(resolve, 2000));
    const request = await fetch(urlResult, {
      method: "POST",
      headers: headers,
      body: JSON.stringify({ id: taskId }),
    });
    const { status, response } = await request.json();
    console.log({ status, response });
    if (status === 1) break;
    if (status === 0 && response !== "CAPCHA_NOT_READY") break;
  }
}
async function main() {
  const taskId = await createTask();
  if (taskId) await getResult(taskId);
}
main();