MTCaptcha
и CapMonster Cloud

Решение капчи, установка на сайт и тестирование.

Стоимость решения MTCaptcha

Тип капчи
Цена (РУБ)
Руб. arrow
₽ 115.00
1000 токенов
Вам достался «по наследству» сайт с подключённой капчей или другой защитой, но доступа к исходному коду нет? В такой ситуации возникают вопросы: какую именно систему защиты использует сайт, правильно ли она установлена и как проверить её работу?

В этой статье мы постарались дать ответы на все вопросы. А начать решение задачи нужно с определения того, какая система защиты используется. Для этого можно обратиться к списку популярных капч и систем антибот-защиты, где представлены визуальные примеры и ключевые признаки, которые могут помочь быстро определить, с чем вы имеете дело.

Если вы обнаружили, что на вашем сайте используется MTCaptcha, следующим шагом станет более подробное изучение её свойств и самой работы. Также в этой статье вы можете изучить инструкцию по подключению системы MTCaptcha, чтобы полностью разобраться, как она функционирует на вашем сайте. Это позволит не только понимать текущую защиту, но и грамотно планировать её поддержку.

Что такое MTCaptcha
Что такое MTCaptcha
MTCaptcha — это система защиты сайта от автоматизированных действий, использующая интеллектуальную проверку и капчу. Сначала сервис анализирует трафик в фоновом режиме. Если поведение посетителя кажется подозрительным, система автоматически отображает текстовую капчу для дополнительной проверки.

Как решить MTCaptcha через CapMonster Cloud

При тестировании форм с MTCaptcha часто возникает необходимость проверить работу капчи и убедиться, что она корректно интегрирована.

Вы можете вручную протестировать подставленную на ваш сайт капчу.

  • Откройте страницу с формой и убедитесь, что капча отображается.
  • Попробуйте отправить форму без её прохождения — сервер должен выдать ошибку.
  • После успешного решения капчи — форма должна отправиться без ошибок.

Для автоматического распознавания капчи можно использовать специализированные сервисы, например, CapMonster Cloud — инструмент, который принимает параметры капчи, обрабатывает их на своих серверах и возвращает готовый токен. Этот токен можно подставить в форму, чтобы пройти проверку без участия пользователя.

Работа с CapMonster Cloud через API обычно включает следующие шаги:

Создание задачи (Task)Создание задачи (Task)
arrow
Отправка запроса к APIОтправка запроса к API
arrow
Получение результатаПолучение результата
arrow
Подстановка токена на страницуПодстановка токена на страницу
arrow
Распознавание MTCaptcha с использованием готовых библиотек
Сервис CapMonster Cloud предоставляет готовые библиотеки для удобной работы на языках Python, JavaScript (Node.js) и C#.
Python
JavaScript
C#
Решение, подстановка токена и отправка формы
Пример на Node.js для полного цикла распознавания капчи на вашей веб-странице. Возможные подходы: использовать HTTP-запросы для получения HTML и параметров капчи, отправить ответ и обработать результат; или с помощью инструментов для автоматизации (например, Playwright) — открыть страницу, дождаться капчи, отправить параметры (для тестирования вы можете отправить как правильные, так и некорректные данные), получить результат через клиент CapMonster Cloud, подставить токен в форму и увидеть результат.

  // npm install playwright @zennolab_com/capmonstercloud-client
import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, MTCaptchaRequest } from '@zennolab_com/capmonstercloud-client';

const API_KEY = 'YOUR_API_KEY';
const TARGET_URL = 'https://example.com';

async function main() {
  const browser = await chromium.launch({ headless: false });
  const context = await browser.newContext();
  const page = await context.newPage();

 
  let websiteKey = null;
  page.on('request', request => {
    const url = request.url();
    if (url.startsWith('https://service.mtcaptcha.com/mtcv1/api/getchallenge.json')) {
      const params = new URL(url).searchParams;
      const sk = params.get('sk');
      if (sk) {
        websiteKey = sk;
        console.log('Extracted websiteKey (sk):', websiteKey);
      }
    }
  });

  
  await page.goto(TARGET_URL, { waitUntil: 'networkidle' });

  if (!websiteKey) {
    console.error('Failed to extract websiteKey (sk) from the page');
    await browser.close();
    return;
  }

  
  const client = CapMonsterCloudClientFactory.Create(
    new ClientOptions({ clientKey: API_KEY })
  );

  
  const mtcaptchaRequest = new MTCaptchaRequest({
    websiteURL: TARGET_URL,
    websiteKey: websiteKey,
    isInvisible: false,
    pageAction: 'login'
  });

  // Решение капчи
  const result = await client.Solve(mtcaptchaRequest);

  
  const verifiedToken = typeof result?.solution?.value === 'string'
    ? result.solution.value
    : JSON.stringify(result.solution.token);

  console.log('VerifiedToken:', verifiedToken);

  
  // Вставляем токен и отправляем форму (замените на нужный селектор)
  await page.evaluate((token) => {
    const input = document.querySelector('#mtcaptcha-verifiedtoken-1');
    if (input) input.value = token;
  }, verifiedToken);

  console.log('Token inserted into input');

  
  // await page.click('button[type="submit"]');

  await page.waitForTimeout(5000);

  await browser.close();
}

main().catch(err => {
  console.error('An error occurred:', err);
});
Как подключить MTCaptcha к своему сайту
Чтобы уверенно ориентироваться в работе капчи на вашем сайте, понимать логику её проверки, заново подключить или перенастроить, рекомендуем вам изучить этот раздел. В нём описан процесс подключения защиты — это поможет быстро разобраться во всех нюансах.

1. Зарегистрируйтесь или войдите в свой аккаунт MTCaptcha.

2. После регистрации добавьте свой сайт. Вы получите два ключа.

  • Site Key — публичный ключ для фронтенда, чтобы показать виджет.
  • Private Key — приватный ключ для сервера, чтобы проверять правильность решений капчи. Храните его только на сервере, не передавайте его в клиентскую часть.

Пример:

HowTo Connect image 1

3. Настройте клиентскую часть MTCaptcha:

Вставьте код в <head> страницы.

Замените <YOUR SITE KEY> на ваш Site Key, полученный в панели MTCaptcha.


  <head>
  <script>
    var mtcaptchaConfig = {
      sitekey: "<YOUR SITE KEY>"
    };
  
    (function() {
      var mt_service = document.createElement('script');
      mt_service.async = true;
      mt_service.src = 'https://service.mtcaptcha.com/mtcv1/client/mtcaptcha.min.js';
      (document.head || document.body).appendChild(mt_service);
  
      var mt_service2 = document.createElement('script');
      mt_service2.async = true;
      mt_service2.src = 'https://service2.mtcaptcha.com/mtcv1/client/mtcaptcha2.min.js';
      (document.head || document.body).appendChild(mt_service2);
    })();
  </script>
</head>


Добавьте контейнер капчи в <body>

Там, где хотите отобразить капчу (например, внутри формы):

<div class="mtcaptcha"></div>

Виджет загрузится автоматически.

HelpIcon

Вы можете использовать готовые SDK и плагины для быстрой интеграции:

  • Server-side SDKs: Java, Node.js, PHP
  • Client-side SDKs: React, React Native, Vue
  • CMS-плагины: WordPress, Drupal

Также MTCaptcha предлагает удобную демонстрационную страницу, на которой можно протестировать и настроить работу защиты перед подключением на свой сайт.

4. Работа с серверной частью. Получите Verified-Token на клиенте.

Через скрытое поле формы:

<input type="hidden" name="mtcaptcha-verifiedtoken" />

Или через JS:

mtcaptcha.getVerifiedToken() / mtcaptchaVerifiedCallback(status)

Отправьте токен на сервер вместе с формой или запросом.

Проверьте токен через API (серверная проверка):

GET https://service.mtcaptcha.com/mtcv1/api/checktoken?privatekey=<PRIVATE_KEY>&token=<TOKEN>
  • privatekey — ваш приватный ключ (только на сервере)
  • token — токен от клиента

Альтернативный URL для серверов с firewall:

https://service2.mtcaptcha.com/mtcv1/api/checktoken

Обработайте ответ:

success: true → капча пройдена, продолжайте обработку.

ПримерПример
arrow

success: false → ошибка (токен просрочен, повторное использование и т.д.)

HelpIcon
Каждый verifiedToken действует несколько минут и может быть проверен только один раз через CheckToken API, что предотвращает повторное использование токена. После получения токена сервер должен успеть его проверить — виджет MTCaptcha гарантирует минимум 50 секунд для валидации.

Простой пример с использованием модуля MTCaptcha на Node.jsПростой пример с использованием модуля MTCaptcha на Node.js
arrow

HelpIcon

Для более детального изучения возможностей MTCaptcha — кастомизации виджета, настройки клиентской и серверной частей, интеграции с фреймворками и других аспектов работы — рекомендуем обратиться к официальной документации.

Background
Возможные ошибки и отладка
Bug Icon
Неверный сайт или ключ
Капча не загружается или сервер возвращает invalid-privatekey или privatekey-mismatch-token.Убедитесь, что используете корректную пару sitekey и privatekey.
Bug Icon
Токен отсутствует или некорректный
Ошибки missing-input-token, invalid-token, bad-request. Проверьте, что значение токена передаётся на сервер и не изменяется.
Bug Icon
Просроченный токен(token-expired)
Токен действует ограниченное время (обычно ~120 секунд), после чего его нужно получить заново.
Bug Icon
Повторная проверка токена(token-duplicate-cal)
Токен можно проверить только один раз — это защита от replay-атак.
Bug Icon
Истёкший или деактивированный ключ(expired-sitekey-or-account)
Убедитесь, что ключи актуальны и аккаунт активен.
Bug Icon
Для диагностики включите логирование запросов и выводите fail_codes, чтобы понять причину ошибки.
Проверка устойчивости защиты
Рекомендации по безопасности и оптимизации
Храните <span class="font-bold">privatekey только на сервере</span> — не передавайте его в клиент.
Логируйте <span class="font-bold">fail_codes</span> для отслеживания причин ошибок и анализа попыток обхода защиты.
Разместите на форме ссылки на <span class="font-bold">Политику конфиденциальности</span> и <span class="font-bold">Условия использования</span>, если это требуется политикой вашей платформы.
Заключение

Если вам достался сайт с уже установленной капчей или другой системой защиты и при этом нет доступа к коду — ничего страшного! Определить, какая именно технология используется, достаточно легко. А для проверки корректности работы можно использовать сервис распознавания CapMonster Cloud в изолированной тестовой среде, чтобы убедиться, что механизм обработки токенов и логика проверки функционируют корректно.

В случае с MTCaptcha — достаточно распознать систему, изучить её поведение и убедиться, что защита функционирует корректно. В статье мы показали, как определить MTCaptcha и где найти инструкции по её подключению или перенастройке, чтобы уверенно поддерживать защиту и контролировать её работу.

Conclusion
Полезные ссылки
DocIconДокументация MTCaptchaDocIconДокументация CapMonster Cloud (работа с MTCaptcha)DocIconSDK и плагины для быстрой интеграции MTCaptchaDocIconДемо-страница (Code Builder) MTCaptcha

Часто задаваемые вопросы о MTCaptcha

Если sitekey (sk) не виден в HTML страницы или JavaScript, изучите сетевые запросы, чтобы найти его:

  1. Откройте DevTools → Network.
  2. Активируйте CAPTCHA и отфильтруйте запросы по getchallenge.json.
  3. Скопируйте параметр запроса sk из URL.

Для автоматизации (например, Playwright): перехватите тот же запрос программно, разберите sk из строки URL и напрямую сопоставьте его с полем websiteKey в полезной нагрузке MTCaptchaTask CapMonster Cloud.

Параметр pageAction в MTCaptchaTask должен строго соответствовать значению act, найденному в сетевом запросе getchallenge.json сайта (наряду с параметром sk). Соответствие чувствительно к регистру и включает специальные символы. Если сайт использует значение по умолчанию %24, полностью опустите pageAction из запроса. Подробнее

Это происходит, когда срок действия verifiedToken истекает до того, как ваш бэкенд его проверит. Токены MTCaptcha по умолчанию действительны только 60–120 секунд. Надёжное решение — запускать задачу в CapMonster Cloud непосредственно перед отправкой формы, а не в начале сессии.

Устанавливайте isInvisible: true только если виджет MTCaptcha работает в невидимом режиме. Признаки такого режима:

  • При загрузке страницы не отображается чекбокс или видимый элемент капчи.
  • Дополнительная проверка появляется только при обнаружении подозрительного или ботоподобного поведения.

Если страница отображает стандартный видимый виджет MTCaptcha, вы можете не указывать флаг isInvisible в запросе.

Указание неверного булева значения приведёт к генерации недействительного токена из-за несоответствия логики решателя.

Это можно сделать, вручную вставив решённый токен из API CapMonster Cloud:

  1. Запросите решение через API CapMonster Cloud с помощью Postman, скрипта или другого HTTP-клиента, передав параметры sk и act.
  2. Скопируйте solution.token из ответа API.
  3. Откройте DevTools на целевой странице и найдите скрытое поле <input name="mtcaptcha-verifiedtoken">.
  4. Вставьте токен в атрибут value поля и отправьте форму для подтверждения валидации.

Кроме того, можно изучить сетевой трафик страницы, чтобы определить точный endpoint для серверной проверки, и отправить прямой HTTP-запрос с решённым токеном.