1. Как работает CapMonster Cloud в качестве сервиса распознавания капчи
CapMonster Cloud действует как облачный сервис решения капчи (captcha solver): вы отправляете описание задачи капчи (URL сайта, ключи и параметры), сервис решает её на своей стороне, затем возвращает токен или текстовый ответ, который вы можете передать на целевой сайт. Платформа поддерживает множество типов капч, такие как Google reCAPTCHA v2, v3 (включая Enterprise-версии), а также общие задачи на основе изображений (тип ImageToTextTask) и другие типы задач, задокументированные в API.
Каждый отправляемый вами запрос определяет объект task, описывающий капчу для решения, и объект solution, который вы получаете позже. Для reCAPTCHA v3 тип задачи RecaptchaV3EnterpriseTask использует собственную прокси-инфраструктуру CapMonster Cloud, поэтому вам не нужно управлять прокси самостоятельно при интеграции этого сервиса в ваши процессы.
Ключевые роли, которые CapMonster Cloud может играть в вашем стеке:
- Как серверная часть для решения капчи в инструментах парсинга (scraping) и тестовых окружениях.
- Как шаг решения капчи внутри автоматизированных процессов (например, вход или отправка форм).
- Как переиспользуемый модуль решения капчи, общий для нескольких микросервисов.
2. Базовый рабочий процесс API CapMonster Cloud
HTTP API CapMonster Cloud построен на простом паттерне: создание задачи и затем опрос её результата. Все запросы используют JSON POST и включают ваш clientKey — уникальный ключ API вашей учётной записи CapMonster Cloud.
На высоком уровне типичный процесс решения капчи выглядит так:
- Подготовьте объект задачи с правильным type и параметрами капчи (например, RecaptchaV3TaskProxyless плюс websiteURL, websiteKey, minScore и pageAction).
- Вызовите метод createTask по адресу https://api.capmonster.cloud/createTask с вашим clientKey и объектом task.
- Опрашивайте https://api.capmonster.cloud/getTaskResult с возвращённым taskId пока statusне станет ready, затем считайте решение (например, в параметре gRecaptchaResponse).
3. Начало работы: аккаунт, ключи, песочница и демо-капчи
Чтобы использовать CapMonster Cloud в качестве сервиса распознавания капчи, вам необходимо сначала получить clientKey (ключ API) уникальный для вашей учётной записи, который затем будете передавать в каждом вызове API как поле clientKey.
Для безопасной разработки и тестирования CapMonster предоставляет специальные демо-страницы, такие как https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta для reCAPTCHA v3 или https://capmonster.cloud/ru/demo/recaptcha-v2 для reCAPTCHA v2. Эти демо-страницы выступают в качестве песочницы (sandbox), где вы можете протестировать интеграцию и отладить логику решения капч без влияния на продакшн-систему.
Рекомендуемый паттерн настройки:
- Используйте локальное или staging окружение для разработки, настроенное на тестовую страницу lessons.zennolab.com, чтобы проверить ваш процесс решения капчи.
- Как только всё будет стабильно, замените websiteURL и websiteKey на ваши реальные страницы, сохраняя те же паттерны интеграции с API CapMonster Cloud.
Этот подход позволит вам безопасно интегрировать сервис распознавания капч до перехода на продакшн-трафик.
4. Решение капчи reCAPTCHA v3 через API (демо)
Тип задачи RecaptchaV3TaskProxyless — хороший пример использования CapMonster Cloud для распознавания невидимых капч. В документации поясняется, что reCAPTCHA v3 работает в фоновом режиме, оценивая поведение пользователя, и возвращает оценку риска от 0.1 до 0.9; при создании задачи ваш бот или приложение должны задать minScore (допустимые границы риска) и pageAction.
4.1. Создание задачи RecaptchaV3TaskProxyless
Для reCAPTCHA v3 запрос createTask для демо-страницы выглядит так:
{
"clientKey": "API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta",
"websiteKey": "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
"minScore": 0.3,
"pageAction": "myverify"
}
}
Здесь
- websiteURL указывает на песочницу reCAPTCHA v3 на lessons.zennolab.com.
- websiteKey — это публичный ключ reCaptcha для сайта, извлечённый из скриптов страницы.
- minScore задаёт минимальную приемлемую оценку риска, от 0.1 до 0.9.
- pageAction соответствует строке действия, передаваемой в grecaptcha.execute, например "login_test" или "myverify" .
Ваш бэкенд или обёртка сервиса решения капчи должны отправить этот JSON методом POST на https://api.capmonster.cloud/createTask и считать возвращённый taskId (идентификатор задачи) если errorId равен 0 (ошибок нет).
4.2. Опрос getTaskResult для получения решения капчи
Для получения решение капчи после создания задачи необходимо через некоторое время запросить метод getTaskResult.
Запрос
{
"clientKey":"API_KEY",
"taskId": 407533072
}
Ответ
{
"errorId":0,
"status":"ready",
"solution": {
"gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}
Поле `solution.gRecaptchaResponse`— это строка токена, которая должна быть вставлена в поле формы reCAPTCHA v3 `<textarea ></textarea>`.
В сценариях автоматизации ваш бот должен выполнить следующие действия:
- Вызвать createTask и затем getTaskResult.
- Инъецировать значение gRecaptchaResponse в скрытую textarea на целевой странице.
- Отправить форму.
Вместе эти шаги реализуют конвейер решения капчи для reCAPTCHA v3.
5. Создание приложения или бота с помощью SDK
CapMonster Cloud предоставляет официальные SDK-библиотеки, которые оборачивают HTTP API и облегчают создание приложения для решения капч без ручной компоновки каждого JSON-запроса. Страница документации о reCAPTCHA v3 включает готовые к использованию примеры для JavaScript, Python и .NET.
5.1. Пример SDK для JavaScript
// https://github.com/CapMonsterCloud/capmonstercloud-client-js
import {
CapMonsterCloudClientFactory,
ClientOptions,
RecaptchaV3ProxylessRequest
} 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 recaptchaV3Request = new RecaptchaV3ProxylessRequest({
websiteURL: 'https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta', // URL вашей страницы с капчей
websiteKey: '6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob',
minScore: 0.6,
pageAction: 'myverify',
});
const solution = await cmcClient.Solve(recaptchaV3Request);
console.log('Solution:', solution);
});
Этот пример показывает, как:
- Инициализировать клиент с clientKey.
- Опционально вызвать getBalance() для проверки средств на аккаунте.
- Создать RecaptchaV3ProxylessRequest с URL демо-сайта и ключом.
- Вызвать Solve для выполнения задачи и вывода решения в лог.
Вы можете адаптировать этот паттерн внутри браузерных расширений, скриптов Node.js или контроллеров веб-автоматизации при создании своего сервиса распознавания капч.
5.2. Пример SDK для Python
# https://github.com/CapMonsterCloud/capmonstercloud-client-python
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV3ProxylessRequest
client_options = ClientOptions(api_key="YOUR_API_KEY") # Ваш API-ключ CapMonster Cloud
cap_monster_client = CapMonsterClient(options=client_options)
# При необходимости можно проверить баланс
balance = asyncio.run(cap_monster_client.get_balance())
print("Balance:", balance)
recaptcha_v3_request = RecaptchaV3ProxylessRequest(
websiteUrl="https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta", # URL вашей страницы с капчей
websiteKey="6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob", # Замените на корректное значение
minScore=0.6,
pageAction="myverify"
)
async def solve_captcha():
return await cap_monster_client.solve_captcha(recaptcha_v3_request)
responses = asyncio.run(solve_captcha())
print(responses)
Этот фрагмент демонстрирует асинхронный вызов solve_captcha с теми же демонстрационными websiteUrl и websiteKey, что вы видели в примере с JSON.
5.3. Пример SDK для .NET
// https://github.com/CapMonsterCloud/capmonstercloud-client-dotnet
using Zennolab.CapMonsterCloud.Requests;
using Zennolab.CapMonsterCloud;
class Program
{
static async Task Main(string[] args)
{
var clientOptions = new ClientOptions
{
ClientKey = "YOUR_API_KEY" // Ваш API-ключ CapMonster Cloud
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
// При необходимости можно проверить баланс
var balance = await cmCloudClient.GetBalanceAsync();
Console.WriteLine("Balance: " + balance);
var recaptchaV3Request = new RecaptchaV3ProxylessRequest
{
WebsiteUrl = "https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta", // URL вашей страницы с капчей
WebsiteKey = "6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob",
MinScore = 0.6,
PageAction = "myverify"
};
var recaptchaV3Result = await cmCloudClient.SolveAsync(recaptchaV3Request);
Console.WriteLine("Solution: " + recaptchaV3Result.Solution.Value);
}
}
Здесь SolveAsync скрывает низкоуровневые вызовы createTaskи getTaskResult, возвращая типизированный объект результата со значением решения, готовым для инъекции на целевую страницу или в HTTP-запрос. Вы можете встроить это в консольный инструмент, микросервис или более крупное приложение, которое централизует логику решения капч для других систем.
6. Обработка ошибок, неверные токены и приёмка токенов
Документация метода createTask описывает стандартную модель ошибок, которую необходимо интегрировать в ваш сервис распознавания капч. Каждый ответ включает errorId, где 0 означает успех, а ненулевое значение указывает на ошибку с соответствующими errorCode и errorDescription.
Метод createTask включает такой пример ответа с ошибкой:
{
"errorId": 1,
"errorCode": "ERROR_KEY_DOES_NOT_EXIST",
"errorDescription": "Account authorization key not found in the system or has incorrect format",
"taskId": 0
}
Надёжная реализация должна учитывать следующие моменты:
- Проверять errorId после каждого вызова createTask и обрабатывать случаи, такие как неверные API-ключи или некорректные задачи.
- Обрабатывать сетевые таймауты или временные проблемы сервиса с повторными попытками и экспоненциальной задержкой (backoff) там, где это уместно.
- При опросе getTaskResult продолжать, пока не получите финальный статус (ready или ошибка) и логировать отклонённые токены или необычные паттерны для последующего анализа.
Рассматривайте любое отклонение gRecaptchaResponse целевым сайтом как сигнал для логирования контекста (URL, действие, оценка, тело ответа), чтобы можно было настроить minScore, убедиться в корректности websiteKeyи pageAction, или перепроверить, что вы используете правильный тип капчи.