Капча, которую сложно обойти боту — и просто решить человеку
Интерактивная 3D-капча с полностью серверным рендером: браузер получает только кадры, ни формы фигуры, ни правильного ответа. Поведенческая телеметрия отсекает автоматизацию, а человеку остаётся одна короткая задача.
Регистрация занимает минуту · капча защищает саму регистрацию
Живая капча — попробуйте прямо здесь
Это настоящий виджет, а не картинка: слева вращается фигура, справа — шар с полостью. Совместите контуры, и сцена закроется.
Статистика сервиса
Почему это сложно обойти
Серверный рендер
Клиент не знает ни формы фигуры, ни ориентаций, ни камеры. Скрипт получает пиксели и отправляет только дельты перетаскивания.
Телеметрия ввода
Ритм, микродрожание, развороты, паузы, navigator.webdriver, сдвиг часов. Машинные решения отклоняются до выдачи токена.
Пассивная проверка
Эндпоинт /api/v1/risk без капчи: сайт может не показывать задачу тем, кого система считает человеком.
Серверный таймер
Время жизни сессии и попытки решения считает только сервер — подмена клиентских часов ни на что не влияет.
Как подключить
Создайте виджет
В панели настройте цвета, прозрачность, размер, пульсацию, качество и надпись. Живая капча на странице настроек позволит сразу проверить результат.
Встройте скрипт
Один тег на странице сайта. Капча откроется во фрейме, при решении вызовет ваш обработчик с токеном.
Проверьте токен
Сервер сайта вызывает /api/v1/verify с секретным ключом. Примеры — на странице «Как подключить».
Пользователь открывает форму на сайте
Регистрация, вход или заявка. Сайт сам решает, показывать ли капчу — можно заранее спросить пассивную оценку POST /api/v1/risk и пропустить доверенных.
Клиент запрашивает капчу
POST /api/v1/challenge?k=jcv4w_… — сервис создаёт сессию и возвращает только { id, width, height }. Ни формы фигуры, ни ответа в браузер не уходит.
Браузер играет, сервер считает
Клиент получает кадры GET /api/v1/frame/{id} и отправляет перетаскивания POST /api/v1/input/{id}. Сервис параллельно собирает телеметрию: ритм, микродрожание, паузы, признаки автоматизации.
Капча решена — выдаётся токен
Когда фигура встаёт в полость, сервис проверяет риск и подписывает токен (HMAC, действует 300 секунд). Клиент забирает его из GET /api/v1/status/{id} → { solved, token }.
Токен уходит на ваш сервер
Клиент передаёт токен в вашу форму или обработчик — это единственное, что нужно от браузера дальше.
Сервер сайта проверяет токен
GET /api/v1/verify?token=… с заголовком X-Api-Key: jcv4_… — сервис отвечает { valid: true|false }.
Сайт продолжает действие
valid: true — создаём аккаунт или принимаем заявку. false — просим пройти капчу заново. Токен можно проверить повторно, пока он не истёк.
API — коротко
POST /api/v1/challenge?k=КЛЮЧ_ВИДЖЕТА → { id, width, height }
GET /api/v1/frame/{id}?v=N → кадр | 204
POST /api/v1/input/{id} → { solved }
GET /api/v1/status/{id} → { solved, token }
GET /api/v1/verify?token=… → { valid } // заголовок X-Api-Key
POST /api/v1/risk → { score, verdict, flags }
// проверка токена на вашем сервере
using var http = new HttpClient();
http.DefaultRequestHeaders.Add("X-Api-Key", "jcv4_ВАШ_КЛЮЧ");
var r = await http.GetFromJsonAsync<Verify>("/api/v1/verify?token=" + token);
if (r is { valid: true }) { /* человек */ }
record Verify(bool valid);
// проверка токена на вашем сервере
const r = await fetch("/api/v1/verify?token=" + encodeURIComponent(token),
{ headers: { "X-Api-Key": "jcv4_ВАШ_КЛЮЧ" } });
const { valid } = await r.json();
if (valid) { /* человек */ }
<?php
// проверка токена на вашем сервере
$ch = curl_init("/api/v1/verify?token=" . urlencode($token));
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-Api-Key: jcv4_ВАШ_КЛЮЧ"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$res = json_decode(curl_exec($ch), true);
if (!empty($res["valid"])) { /* человек */ }
Частые вопросы
Что это и зачем?
Это 3D-капча: пользователь совмещает фигуру с полостью в шаре. Она нужна, чтобы защитить формы сайта (регистрацию, вход, заявки, восстановление пароля) от ботов и автоматизации — при этом человек тратит 10–20 секунд.
Как это работает?
Сервер сам рисует сцену и отдаёт браузеру только кадры. Клиент не знает ни формы фигуры, ни правильного ответа, ни камеры — он отправляет лишь движения мыши. Смотрите схему выше.
Какие ключи мне нужны?
Два: публичный ключ виджета (jcv4w_…) — вставляется в HTML, и секретный API-ключ (jcv4_…) — только на вашем сервере для проверки токена. Секретный ключ нельзя публиковать.
Что видит бот?
Только картинки-кадры и булевы ответы. Правильный ответ нигде не передаётся — его нельзя подсмотреть в JS. Плюс сервис анализирует поведение: машинный ритм, отсутствие микродрожания, сдвиг часов и другие признаки — и отклоняет решение до выдачи токена.
Какие лимиты и размеры?
На решение — от 30 до 60 секунд, попытка решения не чаще 1 раза в секунду. Размер капчи: до 320 px для User, до 512 px для UserPlus, до 1024 px для Admin; качество WebP — 50/75/100 соответственно.
Сколько это стоит?
Сервис открытый: создайте аккаунт и получите ключи бесплатно. Ограничения — только технические (лимиты запросов и размеры по роли).
Свяжитесь с нами
Вопросы, идеи, проблемы с подключением — пишите напрямую.
Готовы защитить свой сайт?
Регистрация занимает минуту: e-mail, пароль, капча — и ключи сразу в панели.
Начать бесплатно