Caputchin
Руководства по переходу

Переход с hCaptcha

Caputchin использует ту же двухчастную модель, что и hCaptcha, виджет на странице, который выдаёт токен, и серверную проверку, которая его подтверждает, так что переход это в основном механическая замена, а не переписывание. Серверный обмен в особенности повторяет форму siteverify, которой следует и сам hCaptcha. Это руководство даёт до-и-после для каждой части.

Если ты ещё не создал аккаунт Caputchin и ключ сайта, сначала создай аккаунт; тебе понадобятся публичный ключ (cpt_pub_...) для страницы и секрет (cpt_sec_...) для бэкенда, то же разделение, что и у site key и secret key у hCaptcha.

Ментальная модель не меняется

Всё, что ты уже построил вокруг hCaptcha, отрендерить виджет, собрать токен, отправить его POST на сервер, проверить, прежде чем довериться запросу, остаётся. Меняются только имена и эндпоинты.

1. Замени клиентский сниппет

hCaptchaCaputchin
Скрипт<script src="https://js.hcaptcha.com/1/api.js" async defer><script src="https://cdn.jsdelivr.net/npm/@caputchin/widget@3/dist/widget.js">
Элемент<div class="h-captcha" data-sitekey="..."><caputchin-widget sitekey="cpt_pub_...">
Поле токена в формеh-captcha-response (авто-вставка)caputchin-token (авто-вставка)
Чтение токена в JShcaptcha.getResponse()detail.token события pass

Как и hCaptcha, виджет Caputchin авто-вставляет скрытое поле токена в форму, в которой он сидит, так что если твоя форма уже делала обычный POST, ты меняешь только элемент и имя поля, которое читает твой бэкенд. Смотри добавь виджет для полной клиентской настройки и выбор CDN или npm.

2. Замени серверную проверку

Вот где эти двое ближе всего, формы запроса и ответа сходятся почти поле в поле.

hCaptchaCaputchin
ЭндпоинтPOST https://api.hcaptcha.com/siteverifyPOST https://caputchin.com/api/v1/siteverify
Поля запросаsecret, responsesecret, response (идентично)
Ответ{ success, challenge_ts, hostname, "error-codes", score? }{ success, challenge_ts, hostname, error-codes, score? }
Правило довериядействуй только если success === trueдействуй только если success === true (идентично)

Одна заметка про формат: эндпоинт проверки hCaptcha ожидает application/x-www-form-urlencoded, а у Caputchin принимает JSON. Если твой существующий код слал поля в form-encoded виде, переключи тело на JSON ({"secret":"...","response":"..."}) с Content-Type: application/json. Сами поля не меняются. Полный справочник запроса/ответа на странице проверь токен на своём бэкенде; сниппеты по фреймворкам в примерах бэкенда.

3. Откажись от score, если ты использовал hCaptcha Enterprise

hCaptcha Enterprise возвращает рисковый score (где выше число означает больше риска) и просит тебя выбрать порог. Caputchin работает не так: success это авторитетное прошёл/не прошёл, потому что проверка действительно была пройдена (проверка proof-of-work или игровой раунд, перевыведенный на сервере), а не оценка риска.

Если в твоём коде было if (data.score < 0.7), замени его на if (data.success). Поле score у Caputchin никак не связано: оно существует только для игровых раундов и является счётом игры (информационным, для твоих собственных таблиц лидеров), никогда не риском или вероятностью бота, так что не привязывай к нему доступ. (Заметь, что направление тоже обратное, счёт hCaptcha растёт с риском; у Caputchin растёт с игровым результатом.)

Что переносится, а что становится лучше

  • Приватность, ради которой ты выбрал hCaptcha, сохранена. Caputchin не собирает ни IP, ни User-Agent, ни цифровой отпечаток, ни поведенческую телеметрию; протоколу некуда поместить идентификатор посетителя, так что и утекать или продавать нечего. Смотри философию.
  • Опциональная игра. Вместо испытания с выбором картинок ты можешь превратить проверку в короткую игру, в которую твои посетители и правда играют, и это та часть, что выстаивает против ИИ-решателей. Смотри добавь игру.
  • Строгий CSP остаётся строгим. Caputchin работает под жёсткой Content-Security-Policy; ты разрешаешь несколько источников, а не ослабляешь свою политику. Смотри как Caputchin изолирует игры в песочнице.

Подводные камни

  • Два ключа, два дома. Публичный ключ (cpt_pub_...) идёт на страницу; секрет (cpt_sec_...) остаётся только на сервере, ровно та же дисциплина, что и у hCaptcha. Не отправляй секрет в браузер.
  • Токен одноразовый. Как и у hCaptcha, токен проверяется один раз. Не кэшируй и не повторяй его.
  • Поменяй имя поля, которое читает твой бэкенд. Скрытое поле это caputchin-token, а не h-captcha-response, частый промах в одну строку.
  • Формат тела. Шли запрос проверки как JSON, а не form-encoded.

См. также

На этой странице