Защита форм

Не работает капча на сайте

Проверяем загрузку виджета, ключи, разрешённый домен, получение токена и серверную валидацию. Возвращаем отправку заявок без отключения защиты от ботов.

Диагностика

От загрузки скрипта
до решения сервера

CAPTCHA работает в двух частях. Браузер получает одноразовый токен, а сервер отдельно проверяет его у провайдера. Исправление только виджета не защитит форму, если бэкенд принимает запрос без проверки.

01

Скрипт и контейнер

Проверяем адрес библиотеки, порядок загрузки, callback, размер контейнера и ошибки JavaScript.

02

Ключ и домен

Сверяем клиентский ключ, список разрешённых сайтов, протокол, поддомены и тестовый режим.

03

Политики браузера

Ищем блокировку CSP, расширением, DNS-фильтром, cookie-настройками или сетевым ограничением.

04

Токен

Проверяем получение, передачу вместе с формой, срок действия и запрет повторного использования.

05

Серверная проверка

Сверяем адрес API, серверный ключ, IP, таймаут, обработку статусов и закрытый сценарий при сбое.

06

Логика формы

Проверяем несколько форм, двойной клик, повторную попытку, сброс виджета и понятное сообщение пользователю.

Путь отправки

Разделяем проверку CAPTCHA и создание заявки

Уточните провайдера и момент отказа: скрипт не загрузился, задание не завершилось или сервер вернул ошибку после проверки. Для диагностики нужен текст ответа и время запроса. Секретный ключ и полный токен в заявку не вставляйте.

01

Несколько форм

Сверяем экземпляр виджета с формой, которая отправляет данные. Проверяем форму в шапке и во всплывающем окне. Общая переменная токена может связать успешную проверку одной формы с отправкой другой или сохранить устаревшее значение.

02

Повторная попытка

После неуспешной отправки получаем новый токен по правилам провайдера. Проверяем двойной клик и возврат к форме. Нельзя считать сохранённый токен бессрочным разрешением на последующие заявки; срок действия и повторное использование проверяет сервер.

03

Ответ провайдера

Различаем отказ проверки и сетевой таймаут. Записываем безопасный идентификатор операции и код причины, исключаем ключи из журнала. При недоступности сервиса сообщаем посетителю о проблеме и сохраняем введённый текст для повторной попытки.

04

Проверка обработчика

Отправляем согласованный тестовый запрос без токена и с неверным значением. Заявка не должна поступить менеджеру. Успешный виджет в браузере ничего не доказывает, если сервер принимает прямую отправку без ответа системы защиты.

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

Проверяем успех, отказ и восстановление

Проблемы полей и уведомлений относятся к исправлению формы. Сбои экранной клавиатуры и касаний рассматриваем в разделе мобильной версии.

Какие заявки нужны для теста?

Успешная проверка, отсутствующий токен и повторное использование токена. Дополнительно воспроизводим недоступность провайдера в тестовой среде. Сверяем ответ формы с фактом создания заявки, чтобы отказ не сопровождался ложным сообщением об успехе.

Как не потерять обращение при отказе?

Сохраняем заполненные поля, возвращаем кнопку в доступное состояние и объясняем следующий шаг. Предлагаем опубликованный канал связи. Отключение серверной проверки ради отправки требует отдельного решения и не считается исправлением CAPTCHA.

Какие ограничения остаются?

CAPTCHA не подтверждает намерение купить услугу и не гарантирует отсутствие спама. После восстановления проверяем формат контакта, частоту запросов и регистрацию отказов. Тариф, внешние подключения и изменения обработки данных согласуем с владельцем сайта.

Результат

Посетитель отправляет заявку, бот не обходит проверку

Форма не блокирует человека

Кнопка, виджет и повторная попытка работают на выбранных устройствах и браузерах.

Сервер проверяет токен

Заявка принимается только после успешного ответа провайдера CAPTCHA.

Сбой виден пользователю

При недоступности внешнего сервиса форма не зависает молча и предлагает понятное действие.

Порядок работ

Проверяем форму как посетитель и как бот

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

01

Воспроизводим

Фиксируем сетевые запросы, консоль, появление задания и момент остановки отправки.

02

Проверяем цепочку

Проходим путь от клика до callback, токена, обработчика формы и серверного ответа.

03

Исправляем

Меняем подключение виджета, настройки домена, логику формы или серверную валидацию.

04

Тестируем отказ

Проверяем пустой, неверный, просроченный и повторный токен, таймаут и мобильный экран.

Документация Yandex SmartCaptcha по валидации указывает, что токен одноразовый и действует ограниченное время. Невидимый режим запускает проверку по событию формы, а задание показывается подозрительным запросам.

Границы работ

Одна CAPTCHA не заменяет защиту обработчика

Сервер должен проверять входные данные, ограничивать частоту запросов и отклонять заявку при неуспешной проверке токена. Иначе бот отправит запрос напрямую, минуя интерфейс. Блокировщики рекламы и корпоративные фильтры иногда останавливают внешний скрипт у конкретного посетителя. Для такого случая нужен понятный текст ошибки или запасной канал связи. Подключение платного тарифа провайдера и изменение политики обработки данных согласуем отдельно.

Вопросы

Перед исправлением

Почему капча не появляется?

Проверяем загрузку скрипта, клиентский ключ, разрешённый домен, контейнер, CSP и блокировщики.

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

Ищем ошибку callback, потерю токена, повторный перехват submit или отказ серверной проверки.

Можно ли использовать невидимую CAPTCHA?

Да. Проверка запускается при отправке, а подозрительному посетителю сервис показывает задание. Серверная валидация остаётся обязательной.

Как проверяется защита?

Тестируем успешную заявку, неверный и повторный токен, таймаут, несколько форм и мобильные браузеры.

Первый шаг

Пришлите страницу с неработающей CAPTCHA

Опишите, появляется ли виджет, проходит ли задание и что происходит после нажатия кнопки формы.