Перейти к основному содержимому
Возникают проблемы с получением токена?
Свяжитесь с поддержкой

ImageToText

Это обычная капча, представляющая собой изображение с текстом, который нужно ввести в соответствующую строку.

Внимание!

Использование прокси-серверов для данной задачи не требуется.

Параметры запроса

type<string>required

ImageToTextTask


body<string>required

Содержимое файла капчи закодированное в base64*. Убедитесь, что значение отправляется одной строкой, без переносов.


capMonsterModule<string>optional

Имя модуля, например “yandex“. Альтернативный способ передачи имени модуля и список всех доступных модулей можно найти здесь.
Пример: yandex, special и другие.


recognizingThreshold<integer>optional

Порог распознавания капчи с возможным значением от 0 до 100. Например, если в систему было отправлено значение 90, и задача решилась с уверенностью 80, то деньги за решение не спишутся. В этом случае пользователь получит ответ ERROR_CAPTCHA_UNSOLVABLE. Альтернативный способ установки порога списания денег описан в статье.


case<boolean>optional

Учитывать регистр при решении или нет. Возможные значения: true, false


numeric<integer>optional

1 - если капча состоит только из цифр.
Возможные значения: 0, 1


math<boolean>optional

false — по умолчанию не задано;
true — капча требует выполнения математического действия (например, капча 2 + 6 вернёт значение 8).
Важно: для модуля captcha_math не используйте параметр math: true.


*Base64 - это способ кодирования данных, позволяющий представить бинарные данные в виде текста. Пример получения изображения капчи в формате base64 с помощью консоли в Инструментах разработчика:

const captchaUrl = 'https://example.com/captcha.jpg';

function loadAndEncodeCaptchaToBase64(url) {
fetch(url)
.then(response => response.blob())
.then(blob => {
const reader = new FileReader();
reader.readAsDataURL(blob);

reader.onloadend = function() {
const base64Data = reader.result;
console.log('Base64 Encoded Captcha:', base64Data);

};
})
.catch(error => {
console.error('Error occurred while loading or encoding the captcha:', error);
});
}

loadAndEncodeCaptchaToBase64(captchaUrl);

Метод создания задачи

POST
https://api.capmonster.cloud/createTask

Запрос

{
"clientKey":"API_KEY",
"task": {
"type":"ImageToTextTask",
"body":"BASE64_BODY_HERE!"
}
}

Ответ

{
"errorId":0,
"taskId":407533072
}

Метод получения результата задачи

Используйте метод getTaskResult чтобы получить решение капчи. В зависимости от загрузки системы вы получите ответ через время в диапазоне от 300 мс до 6 с.

POST
https://api.capmonster.cloud/getTaskResult

Запрос

{
"clientKey":"API_KEY",
"taskId": 407533072
}

Ответ

{
"errorId":0,
"status":"ready",
"solution": {
"text":"answer"
}
}

СвойствоТипОписание
textStringТекст решения капчи

Как найти все нужные параметры для создания задачи на решение

Вручную

  1. Откройте ваш сайт, где отображается капча, в браузере.
  2. Правой кнопкой кликните по элементу капчи и выберите Inspect.

base64

Найдите нужный элемент в DOM-дереве и наведите на него курсор – закодированное в base64 изображение отобразится непосредственно в атрибутах элемента:

base64elements

Если изображение ссылается на внешний URL, а не содержит данные в формате base64, его можно найти в разделе сетевых запросов (Network). Кликните правой кнопкой мыши по нужному запросу и выберите Copy image as data URI. Вы сразу получите кодировку изображения в формате base64, скопированную в буфер обмена.

base64network

Автоматически

Для автоматизации поиска параметров их можно извлекать через браузер (обычный или headless, например, с Playwright) или напрямую из HTTP-запросов. Поскольку значения динамических параметров действуют недолго, их рекомендуется использовать сразу после получения.

Важно!

Приведённые фрагменты кода являются базовыми примерами для ознакомления в извлечении необходимых параметров. Точная реализация будет зависеть от вашего сайта с капчей, его структуры и используемых HTML-элементов и селекторов.

Показать код (для браузера)
(async () => {
const img = document.querySelector('img'); // Пример селектора

const imageUrl = img.src;

const response = await fetch(imageUrl);

if (!response.ok) {
throw new Error("Ошибка загрузки изображения");
}

const buffer = await response.arrayBuffer();

// Преобразуем бинарные данные в base64
const base64Image = btoa(String.fromCharCode(...new Uint8Array(buffer)));

console.log(base64Image);
})();
Показать код (Node.js)
(async () => {
const imageUrl = "https://example/img/.jpg"; // Ссылка на изображение

const response = await fetch(imageUrl);

if (!response.ok) {
throw new Error("Ошибка загрузки изображения");
}

const buffer = await response.arrayBuffer();

// Преобразуем данные в base64
const base64Image = Buffer.from(buffer).toString("base64");

console.log(base64Image);
})();

Используйте библиотеку SDK

Показать код (для браузера)
// https://github.com/ZennoLab/capmonstercloud-client-js

import { CapMonsterCloudClientFactory, ClientOptions, ImageToTextRequest, CapMonsterModules } from '@zennolab_com/capmonstercloud-client';

document.addEventListener('DOMContentLoaded', async () => {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: 'YOUR_API_KEY' }) // Укажите ваш API-ключ CapMonster Cloud
);

// При необходимости можно проверить баланс
const balance = await cmcClient.getBalance();
console.log("Balance:", balance);

const imageToTextRequest = new ImageToTextRequest({
body: 'some base64 body', // Замените на реальное значение
CapMonsterModule: CapMonsterModules.YandexWave,
Case: true,
numeric: 1,
recognizingThreshold: 65,
math: false
});

const result = await cmcClient.Solve(imageToTextRequest);
console.log("Solution:", result);
});
Показать код (Node.js)
// https://github.com/ZennoLab/capmonstercloud-client-js

import { CapMonsterCloudClientFactory, ClientOptions, ImageToTextRequest, CapMonsterModules } from '@zennolab_com/capmonstercloud-client';

const API_KEY = "YOUR_API_KEY"; // Укажите ваш API-ключ CapMonster Cloud

async function solveImageToText() {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);

// При необходимости можно проверить баланс
const balance = await cmcClient.getBalance();
console.log("Balance:", balance);

const imageToTextRequest = new ImageToTextRequest({
body: 'some base64 body', // Замените на реальное значение
CapMonsterModule: CapMonsterModules.YandexWave,
Case: true,
numeric: 1,
recognizingThreshold: 65,
math: false
});

const result = await cmcClient.Solve(imageToTextRequest);
console.log("Solution:", result);
}

solveImageToText().catch(console.error);