Обычный сайт (HTML-формы)
Если формы на сайте — обычные <form> с настоящей отправкой (не JS-перехватом) — это буквально 2 строки кода, без бэкенда на фронте:
- Зайдите в кабинет um-ko.ru/captcha/cabinet → вкладка «Капча и анти-бот» → «Выдать ключ сайту».
- Нажмите «📋 Код для сайта» у выданного ключа — скопируйте сниппет.
- Вставьте
<script>в<head>вашего сайта, добавьте атрибутdata-umko-captcha data-umko-site="ВАШ_КЛЮЧ"на защищаемую форму. - Готово — виджет сам решает Proof-of-Work в браузере и кладёт токен в скрытое поле
umko_captcha, форма отправляется как обычно. Боты отсеиваются, обычные посетители капчу не видят вообще.
На своём бэкенде обязательно проверьте токен — виджет только собирает его, отклонить неверный может лишь сервер:
POST https://um-ko.ru/api/captcha.php?action=verify&site=ВАШ_КЛЮЧ
Body: значение поля umko_captcha как есть (JSON-строка)
Ответ: {"ok":true} или {"ok":false}
Без этой проверки на своей стороне капча ничего не защищает — виджет только мешает боту, решение проверяете вы сами.
Сайт на React/Vue/Next.js и т.п. (SPA)
Если форма отправляется через fetch/axios с preventDefault() (типичный React/Vue/Next.js сайт) — атрибут data-umko-captcha не сработает: виджет слушает нативное событие submit формы, а не JS-запрос. Нужно вызвать виджет вручную:
- Подключите скрипт один раз глобально (например, в корневом layout):
<script src="https://um-ko.ru/api/umko-captcha.js" defer></script>. - Перед отправкой формы получите токен:
const token = await window.UmkoCaptcha.getToken('ВАШ_КЛЮЧ', 'login')(вторым параметром — контекст:login/register/payment/др., как удобно). - Отправьте его вместе с остальными полями формы как
umko_captcha, и на бэкенде проверьте тем жеaction=verify, что и для обычного сайта.
Важная деталь, на которой мы сами споткнулись (29.07): скрипт виджета — асинхронный, window.UmkoCaptcha появляется примерно через 1-1.5с после загрузки страницы. Если вызвать getToken сразу при монтировании компонента без ожидания — быстрый пользователь (или автозаполнение пароля браузером) может нажать «Отправить» раньше, чем виджет успеет прогрузиться, и получить honest-отказ капчи без своей вины. Дождитесь появления window.UmkoCaptcha (с таймаутом секунд 4-5) перед вызовом getToken, а не проверяйте его наличие один раз мгновенно.
Сервер целиком (не только сайт)
Для полной защиты сервера (WAF, rate-limit, GeoIP, анти-DDoS, fail2ban, CrowdSec) — одна команда самоустановки, показана во вкладке «Комплексная защита» того же кабинета вместе с вашим приватным серверным ключом. Устанавливается за одну команду под root, без вашего участия дальше — сам обновляется и шлёт статус в кабинет.