Назад в блог
Разработка Опубликовано 27.08.2026 1 мин чтения

CAPTCHA есть — но ничего не защищает

Видимый виджет reCAPTCHA, hCaptcha или Turnstile мало говорит о защите формы. Вот типичные ошибки настройки и способ проверить собственные формы за несколько минут.

Многие владельцы сайтов добавляют CAPTCHA к контактной форме, видят маленький значок или флажок и считают проблему спама решённой. Но мусор продолжает приходить. Часто сама CAPTCHA исправна — она лишь не подключена ни к чему, что способно остановить бота. Эта статья описывает типичные пути превращения reCAPTCHA, hCaptcha и Cloudflare Turnstile в украшение и способы проверки Ваших форм.

Где на самом деле происходит защита

Все три сервиса работают по одному принципу. Скрипт в браузере выполняет проверки и передаёт форме токен — короткую строку со смыслом «этот посетитель прошёл проверку». Токен вместе с отправкой формы поступает на Ваш сервер. Только там принимается реальное решение: сервер отправляет токен с секретным ключом поставщику и получает ответ — успех или отказ, а для reCAPTCHA v3 также оценку. Если какое-либо звено отсутствует, виджет всё ещё выглядит нормально, но бот, отправляющий прямо обработчику формы, проходит беспрепятственно.

Цепочка, от которой зависит CAPTCHA
1Скрипт загружается
Скрипт поставщика загружен и может выполняться на странице формы.
2Токен выдан
Браузер получает краткоживущий токен для однократного использования.
3Токен отправлен
Токен передаётся серверу вместе с полями формы.
4Сервер проверяет
Ваш сервер проверяет токен у поставщика с помощью секретного ключа.
5Сервер решает
Отправка отклоняется без положительного ответа (а для v3 также достаточно высокой оценки).
Защита существует лишь при работе каждого шага — а решающие происходят на сервере, вне поля зрения.

Тестовый ключ, пропускающий всё

Google, hCaptcha и Cloudflare публикуют специальные тестовые ключи, чтобы разработчики могли запускать автоматические тесты без решения головоломок. С соответствующим тестовым секретом проверка всегда успешна — именно для этого они нужны. Они предназначены для локальных и тестовых сред, но регулярно переживают перенос в эксплуатацию: разработчик вставляет их во время сборки, сайт запускается, а заменить их никто не вспоминает. reCAPTCHA хотя бы показывает в виджете уведомление о тестовом использовании, но при невидимой конфигурации почти никто не смотрит. Если на рабочем сайте стоят и тестовый ключ сайта, и тестовый секрет, проходит любая отправка — человека или бота; если тестовый только ключ сайта, проверка, напротив, не проходит и реальные сообщения могут отклоняться.

Токен, который никто не проверяет

Вторая классическая ошибка — сервер, который никогда не спрашивает поставщика. Виджет работает, токен создаётся и отправляется, а обработчик формы просто игнорирует его. Типичные источники — написанные вручную формы, скопированные фрагменты только для браузера и незавершённые настройки плагина. Близкий вариант: сервер вызывает сервис проверки, но проверяет лишь прохождение запроса, а не содержание ответа. Или порог оценки reCAPTCHA v3 установлен в 0, принимая любую оценку сервиса. Некоторые обработчики также работают по принципу «fail open»: при отсутствии токена или сбое проверки всё равно принимают сообщение — а бот просто не передаёт токен.

Когда виджет на деле не загружается

Другие ошибки настройки ломают браузерную часть. Если ключ сайта не зарегистрирован для домена — типично после переноса из тестовой среды на рабочий сайт, смены домена или нового поддомена, — поставщик отказывается выдавать токены и показывает ошибку в виджете или консоли браузера. После смены темы или обновления плагина разметка виджета может оставаться на странице, а оживляющий её скрипт исчезнуть. Инструмент согласия на cookie может дать тот же эффект, блокируя скрипт CAPTCHA до согласия посетителя. Дальнейшее зависит от сервера: если он требует действительный токен, реальные посетители больше не могут отправить сообщения и никто не замечает потерянных обращений; если не требует, боты проходят свободно.

Ещё два случая легко пропустить. У reCAPTCHA v3 значок в углу показывает лишь загрузку скрипта где-то на странице — возможно, темой или другим плагином, — тогда как интеграция в самом плагине формы выключена. А плагины кеширования могут сохранять страницу с токеном, встроенным в HTML. Токены CAPTCHA действуют лишь несколько минут и проверяются однократно, поэтому кешированный токен не проходит у реальных посетителей; соблазнительное «исправление» отключением проверки незаметно убирает защиту.

Внешний вид и действительность
Что Вы видите
  • Виджет показывает уведомление «только для тестирования»
  • Значок v3 находится в углу
  • Виджет отображается и возвращает токен
  • Спам прекратился — но и реальные обращения тоже
Что может происходить
  • Используются публичные тестовые ключи, и любая проверка успешна
  • Интеграция reCAPTCHA в плагине формы выключена
  • Сервер никогда не отправляет токен на проверку или игнорирует результат
  • Ключ сайта не зарегистрирован для домена или кешированные токены истекли

Краткая самостоятельная проверка

  1. 1Откройте страницу формы в приватном окне, откройте инструменты разработчика браузера и проверьте консоль на ошибки скрипта CAPTCHA.
  2. 2Проверьте реальное появление виджета — до и после принятия баннера cookie — и невозможность отправить форму при его отсутствии.
  3. 3В консоли администратора поставщика проверьте, что ключ сайта содержит Ваш рабочий домен (включая варианты вроде www), а ключи в плагине формы или коде соответствуют ему — это не ключи из документации или тестовой конфигурации.
  4. 4В настройках плагина формы убедитесь, что интеграция CAPTCHA включена именно для этой формы; для reCAPTCHA v3 проверьте, что порог оценки выше 0.
  5. 5Если у Вас есть доступ к коду, найдите серверную проверку и убедитесь, что она отклоняет отправку при отрицательном ответе или отсутствии токена.
  6. 6Исключите страницу формы из полностраничного кеширования или убедитесь, что токен создаётся заново в браузере.
  7. 7Отправьте настоящее тестовое сообщение и проверьте получение; повторите проверку после изменений темы, плагинов или инструмента согласия.
Что внешняя проверка может и не может увидеть
Тестовые ключи, разметка виджета без скрипта, ошибки консоли и заблокированные скрипты видны снаружи — бесплатная проверка на formexposed.com ищет именно эти признаки, ничего не отправляя. Действительно ли Ваш сервер проверяет токен, на странице не видно; это показывает только серверный код или настоящая отправка.

CAPTCHA — один уровень, а не вся защита. В сочетании с honeypot, проверкой времени и серверной фильтрацией ошибка в одном месте не оставляет форму полностью открытой. Если Вы хотите быстро понять состояние своих форм, введите домен на formexposed.com — отчёт покажет, в порядке ли видимые снаружи части конфигурации CAPTCHA.