Переход с Turnstile на CaptchaLa
Прямая замена менее чем за 10 минут. Оставьте свои формы, избавьтесь от зависимости от Cloudflare, получите проверку в качестве запасного варианта и точки доступа в материковом Китае.
Как выглядит изменение кода
<div class="cf-turnstile" data-sitekey="YOUR_SITE_KEY"></div>
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script><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>const res = await fetch('https://challenges.cloudflare.com/turnstile/v0/siteverify', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
secret: process.env.TURNSTILE_SECRET,
response: req.body['cf-turnstile-response'],
}),
})
const data = await res.json()
if (!data.success) return res.status(400).json({ error: 'bot' })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
Зарегистрируйтесь и получите App Key + Secret
Создайте бесплатный аккаунт CaptchaLa, добавьте сайт и скопируйте App Key (публичный) и App Secret (серверный). Аккаунт Cloudflare не требуется.
- 2
Замените тег виджета
Замените cf-turnstile на captchala, а data-sitekey на data-app-key. Измените script src на наш CDN. Форма виджета (плейсхолдер div + тег script) остаётся той же.
- 3
Обновите имя скрытого поля
Turnstile добавляет cf-turnstile-response; CaptchaLa добавляет captchala-token. Большинство обработчиков форм не читают поле по имени, но если ваш читает — переименуйте константу в одном месте.
- 4
Обновите вызов серверной проверки
Смените эндпоинт на apiv1.captcha.la/v1/validate. Мы принимаем JSON (Turnstile принимает form-urlencoded), поэтому обновите Content-Type и форму тела. Ответ по-прежнему возвращает флаг valid (data.valid) для вашей логики ветвления.
- 5
Разворачивайте постепенно
Оставьте Turnstile на большинстве форм, сначала подключите CaptchaLa на одной форме с низким трафиком. Понаблюдайте за конверсией и частотой проверок в течение дня. Расширяйте, когда будете уверены — минимума и контракта нет.
Быстрее: используйте плагин
WordPress + WooCommerce
Если вы использовали сторонний плагин Turnstile в WordPress, замените его нашим официальным плагином. Вход, регистрация, комментарии, оформление заказа в WooCommerce, CF7 / Gravity / WPForms — всё покрыто одной установкой.
View integration →Flarum
Установите расширение CaptchaLa через Composer, включите его в админке, и формы Flarum (регистрация, вход, сброс пароля, ответы на посты) будут проходить через CaptchaLa.
View integration →Частые вопросы
Могу ли я оставить свой Cloudflare CDN и при этом использовать CaptchaLa?
Да. CaptchaLa независима от любого CDN — большинство наших клиентов оставляют Cloudflare как CDN и используют CaptchaLa для проверки. Эти два слоя не конфликтуют.
Будут ли по-прежнему действовать мои правила обнаружения ботов Cloudflare?
Да — это функции Cloudflare WAF / Bot Management, отдельные от Turnstile. Удаление виджета Turnstile никак не влияет на конфигурацию вашей зоны Cloudflare.
А если я использую Turnstile через Cloudflare Workers?
Миграция на стороне Worker такая же. Замените fetch к Turnstile на fetch к CaptchaLa. В документации есть сниппет, совместимый со средой выполнения Workers.