Turnstile — замена CAPTCHA от Cloudflare: сервис проверяет посетителя без картинок, светофоров и выбора нужных клеток на фото.
Чем Turnstile отличается от обычной CAPTCHA
Отличие не только в отсутствии картинок, но и в самом принципе проверки: классическая CAPTCHA проверяет человека через головоломку, Turnstile — через признаки поведения браузера и устройства.
| Критерий | Обычная CAPTCHA | Turnstile |
|---|---|---|
| Что видит посетитель | картинки, головоломку или чекбокс | обычно только короткую проверку без заданий |
| Что проверяется | умение распознать объект на картинке | признаки браузера и устройства без головоломки |
| Нужен ли аккаунт Cloudflare | нет, сервис сторонний | да, виджет выпускается в панели Cloudflare |
| Работает ли вне Cloudflare-прокси | да, не зависит от прокси | да, работает и без проксирования сайта через Cloudflare |
Как это работает в общих чертах
Виджет на странице проверяет посетителя в браузере и выдаёт токен, подтверждающий результат проверки. Этот токен попадает в форму вместе с остальными полями, а сервер перед обработкой формы отправляет токен на проверку и получает ответ, подтверждена проверка или нет.
Куда обычно ставят Turnstile
- Форма входа в личный кабинет.
- Форма регистрации нового пользователя.
- Форма обратной связи на сайте.
- Форма добавления комментария под статьёй.
Как подключить виджет и проверку токена
Подключение состоит из двух шагов: разметка виджета на странице и проверка токена на сервере.
<div class="cf-turnstile" data-sitekey="ваш-ключ-сайта"></div>
Второй шаг — серверная проверка перед обработкой формы: значение токена из скрытого поля формы отправляется вместе с секретным ключом на проверку, и форма обрабатывается только при подтверждённом результате.
# взять токен из отправленной формы
# отправить токен вместе с секретным ключом на проверку
# продолжить обработку формы только если проверка подтверждена
Частые ошибки подключения
| Проблема | Вероятная причина | Что сделать |
|---|---|---|
| Виджет не появляется на странице | ключ сайта указан неверно или скрипт виджета не подключён | проверить ключ и подключение скрипта виджета |
| Токен не проходит проверку на сервере | секретный ключ перепутан с ключом сайта | сверить, какой ключ используется на сервере, а какой в разметке |
| Виджет ломается на мобильных | родительский блок формы слишком узкий или обрезан стилями | проверить ширину блока и переполнение по горизонтали |
| Проверка срабатывает на своих же посетителях | устаревший или уже использованный токен отправлен повторно | обновлять токен при повторной отправке формы |
Что Turnstile не решает
Turnstile проверяет посетителя формы, но не защищает от перегрузки сервера множеством запросов и не ограничивает частоту обращений. Для защиты от спама в целом стоит посмотреть статью о защите сайта от спама, а для ограничения частоты запросов и перебора паролей — статью о защите от брутфорс-атак.
Короткий вывод
Ставить Turnstile стоит там, где форму заполняет живой человек и важно отсечь автоматическую отправку без лишних шагов для посетителя. Там, где проблема в объёме запросов, а не в их источнике, одного виджета мало — нужно ограничение частоты запросов.