Turnstile — заміна CAPTCHA від Cloudflare: сервіс перевіряє відвідувача без картинок, світлофорів і вибору потрібних клітинок на фото.
Чим Turnstile відрізняється від звичайної CAPTCHA
Відмінність не лише у відсутності картинок, а й у самому принципі перевірки: класична CAPTCHA перевіряє людину через головоломку, Turnstile — через ознаки поведінки браузера і пристрою.
| Критерій | Звичайна CAPTCHA | Turnstile |
|---|---|---|
| Що бачить відвідувач | картинки, головоломку або чекбокс | зазвичай лише коротку перевірку без завдань |
| Що перевіряється | вміння розпізнати об'єкт на картинці | ознаки браузера і пристрою без головоломки |
| Чи потрібен акаунт Cloudflare | ні, сервіс сторонній | так, віджет випускається у панелі Cloudflare |
| Чи працює поза Cloudflare-проксі | так, не залежить від проксі | так, працює і без проксування сайту через Cloudflare |
Як це працює у загальних рисах
Віджет на сторінці перевіряє відвідувача у браузері і видає токен, що підтверджує результат перевірки. Цей токен потрапляє у форму разом з іншими полями, а сервер перед обробкою форми надсилає токен на перевірку і отримує відповідь, підтверджена перевірка чи ні.
Куди зазвичай ставлять Turnstile
- Форма входу в особистий кабінет.
- Форма реєстрації нового користувача.
- Форма зворотного зв'язку на сайті.
- Форма додавання коментаря під статтею.
Як підключити віджет і перевірку токена
Підключення складається з двох кроків: розмітка віджета на сторінці і перевірка токена на сервері.
<div class="cf-turnstile" data-sitekey="ваш-ключ-сайту"></div>
Другий крок — серверна перевірка перед обробкою форми: значення токена зі схованого поля форми надсилається разом із секретним ключем на перевірку, і форма обробляється лише за підтвердженого результату.
# взяти токен із надісланої форми
# надіслати токен разом із секретним ключем на перевірку
# продовжити обробку форми лише якщо перевірка підтверджена
Часті помилки підключення
| Проблема | Ймовірна причина | Що зробити |
|---|---|---|
| Віджет не з'являється на сторінці | ключ сайту вказано невірно або скрипт віджета не підключений | перевірити ключ і підключення скрипта віджета |
| Токен не проходить перевірку на сервері | секретний ключ переплутаний із ключем сайту | звірити, який ключ використовується на сервері, а який у розмітці |
| Віджет ламається на мобільних | батьківський блок форми занадто вузький або обрізаний стилями | перевірити ширину блока і переповнення по горизонталі |
| Перевірка спрацьовує на власних відвідувачах | застарілий або вже використаний токен надіслано повторно | оновлювати токен при повторному надсиланні форми |
Чого Turnstile не вирішує
Turnstile перевіряє відвідувача форми, проте не захищає від перевантаження сервера великою кількістю запитів і не обмежує частоту звернень. Для захисту від спаму загалом варто подивитися статтю про захист сайту від спаму, а для обмеження частоти запитів і перебору паролів — статтю про захист від брутфорс-атак.
Короткий висновок
Ставити Turnstile варто там, де форму заповнює жива людина і важливо відсікти автоматичну відправку без зайвих кроків для відвідувача. Там, де проблема в обсязі запитів, а не в їхньому джерелі, одного віджета замало — потрібне обмеження частоти запитів.