Руководство по миграции

Переход с Friendly Captcha на CaptchaLa

Та же позиция «приватность прежде всего». Подключите CaptchaLa, получите мобильные SDK, доступность в материковом Китае и видимую проверку как запасной вариант. Миграция — это два изменения в файлах.

FFriendly CaptchaCurrent setup~10 minCaptchaLaDrop-in target

Как выглядит изменение кода

До — Friendly Captcha
<div class="frc-captcha" data-sitekey="YOUR_SITE_KEY"></div>
<script type="module" src="https://cdn.jsdelivr.net/npm/@friendlycaptcha/sdk/site.compat.min.js" async defer></script>
После — CaptchaLa
<button id="login-btn">Sign in</button>
<script src="https://cdn.captcha-cdn.net/captchala-loader.js"></script>
<script>
  loadCaptchala(() => Captchala.init({ appKey: 'YOUR_APP_KEY', action: 'login' })
    .onSuccess(res => onToken(res.token))
    .bindTo('#login-btn'));
</script>
До — серверная проверка Friendly Captcha (Node)
const res = await fetch('https://api.friendlycaptcha.com/api/v1/siteverify', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    secret: process.env.FRIENDLY_SECRET,
    solution: req.body['frc-captcha-solution'],
    sitekey: process.env.FRIENDLY_SITEKEY,
  }),
})
const data = await res.json()
if (!data.success) return res.status(400).json({ error: 'bot' })
После — серверная проверка CaptchaLa (Node)
const res = await fetch('https://apiv1.captcha.la/v1/validate', {
  method: 'POST',
  headers: {
    'X-App-Key': process.env.CAPTCHALA_APP_KEY,
    'X-App-Secret': process.env.CAPTCHALA_APP_SECRET,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ pass_token: req.body['captchala-token'] }),
})
const { data } = await res.json()
if (!data || !data.valid) return res.status(400).json({ error: 'bot' })

Шаги миграции

  1. 1

    Зарегистрируйтесь и получите App Key + Secret

    Создайте бесплатный аккаунт CaptchaLa, добавьте сайт, скопируйте ключи. Без звонка продажам, без контракта.

  2. 2

    Замените тег виджета

    Замените frc-captcha на captchala, data-sitekey на data-app-key, а script src на наш CDN. Скрипт типа module становится обычным async-скриптом.

  3. 3

    Обновите имя скрытого поля

    Friendly Captcha отправляет frc-captcha-solution; мы отправляем captchala-token. Переименуйте в обработчике формы, если читаете его по имени.

  4. 4

    Обновите серверную проверку

    Эндпоинт меняется на apiv1.captcha.la/v1/validate. Тело лишается поля sitekey — мы определяем сайт по вашему appSecret. Флаг valid (data.valid) в форме ответа остаётся тем же.

  5. 5

    Разворачивайте постепенно

    Меняйте по одной форме за раз. CaptchaLa сосуществует с Friendly Captcha — они не делят cookie или состояние. Большинство команд находят, что конверсия слегка улучшается, потому что вычисления POW на устройствах пользователей исчезли.

Частые вопросы

Потеряю ли я проверяемую историю приватности?

Архитектура Friendly Captcha только на POW более проверяема в буквальном криптографическом смысле — там действительно нечего снимать в отпечаток. CaptchaLa тоже не снимает отпечатки, но наша архитектура (адаптивный риск + проверка) сложнее, что усложняет аудит. Если ваш критерий приватности — «проверяемость юристом по приватности с опытом в криптографии», это реальное различие, которое стоит взвесить.

А что насчёт мобильных?

Это один из крупнейших выигрышей миграции. Friendly Captcha только для веба. У CaptchaLa есть нативные SDK для iOS, Android и Flutter — тот же бэкенд, тот же дашборд, тот же биллинг. Внедряйте CAPTCHA в мобильное приложение без выбора второго вендора.

Как мои пользователи ощутят разницу?

На старых телефонах и слабых ноутбуках вычисления POW, которые Friendly Captcha выполняет в фоне, могут быть заметны — несколько секунд нагрузки на CPU. CaptchaLa не выполняет тяжёлых вычислений на устройстве. Большинство пользователей не заметят разницы; пользователи со слабым железом заметят нас меньше.