Скрипт и контейнер
Проверяем адрес библиотеки, порядок загрузки, callback, размер контейнера и ошибки JavaScript.
Защита форм
Проверяем загрузку виджета, ключи, разрешённый домен, получение токена и серверную валидацию. Возвращаем отправку заявок без отключения защиты от ботов.
Диагностика
CAPTCHA работает в двух частях. Браузер получает одноразовый токен, а сервер отдельно проверяет его у провайдера. Исправление только виджета не защитит форму, если бэкенд принимает запрос без проверки.
Проверяем адрес библиотеки, порядок загрузки, callback, размер контейнера и ошибки JavaScript.
Сверяем клиентский ключ, список разрешённых сайтов, протокол, поддомены и тестовый режим.
Ищем блокировку CSP, расширением, DNS-фильтром, cookie-настройками или сетевым ограничением.
Проверяем получение, передачу вместе с формой, срок действия и запрет повторного использования.
Сверяем адрес API, серверный ключ, IP, таймаут, обработку статусов и закрытый сценарий при сбое.
Проверяем несколько форм, двойной клик, повторную попытку, сброс виджета и понятное сообщение пользователю.
Путь отправки
Уточните провайдера и момент отказа: скрипт не загрузился, задание не завершилось или сервер вернул ошибку после проверки. Для диагностики нужен текст ответа и время запроса. Секретный ключ и полный токен в заявку не вставляйте.
Сверяем экземпляр виджета с формой, которая отправляет данные. Проверяем форму в шапке и во всплывающем окне. Общая переменная токена может связать успешную проверку одной формы с отправкой другой или сохранить устаревшее значение.
После неуспешной отправки получаем новый токен по правилам провайдера. Проверяем двойной клик и возврат к форме. Нельзя считать сохранённый токен бессрочным разрешением на последующие заявки; срок действия и повторное использование проверяет сервер.
Различаем отказ проверки и сетевой таймаут. Записываем безопасный идентификатор операции и код причины, исключаем ключи из журнала. При недоступности сервиса сообщаем посетителю о проблеме и сохраняем введённый текст для повторной попытки.
Отправляем согласованный тестовый запрос без токена и с неверным значением. Заявка не должна поступить менеджеру. Успешный виджет в браузере ничего не доказывает, если сервер принимает прямую отправку без ответа системы защиты.
Контроль исправления
Проблемы полей и уведомлений относятся к исправлению формы. Сбои экранной клавиатуры и касаний рассматриваем в разделе мобильной версии.
Успешная проверка, отсутствующий токен и повторное использование токена. Дополнительно воспроизводим недоступность провайдера в тестовой среде. Сверяем ответ формы с фактом создания заявки, чтобы отказ не сопровождался ложным сообщением об успехе.
Сохраняем заполненные поля, возвращаем кнопку в доступное состояние и объясняем следующий шаг. Предлагаем опубликованный канал связи. Отключение серверной проверки ради отправки требует отдельного решения и не считается исправлением CAPTCHA.
CAPTCHA не подтверждает намерение купить услугу и не гарантирует отсутствие спама. После восстановления проверяем формат контакта, частоту запросов и регистрацию отказов. Тариф, внешние подключения и изменения обработки данных согласуем с владельцем сайта.
Результат
Кнопка, виджет и повторная попытка работают на выбранных устройствах и браузерах.
Заявка принимается только после успешного ответа провайдера CAPTCHA.
При недоступности внешнего сервиса форма не зависает молча и предлагает понятное действие.
Порядок работ
Пришлите URL формы, устройство и описание сбоя. Доступ к серверному ключу передавать в сообщении не нужно: при необходимости его меняют внутри защищённой конфигурации.
Фиксируем сетевые запросы, консоль, появление задания и момент остановки отправки.
Проходим путь от клика до callback, токена, обработчика формы и серверного ответа.
Меняем подключение виджета, настройки домена, логику формы или серверную валидацию.
Проверяем пустой, неверный, просроченный и повторный токен, таймаут и мобильный экран.
Документация Yandex SmartCaptcha по валидации указывает, что токен одноразовый и действует ограниченное время. Невидимый режим запускает проверку по событию формы, а задание показывается подозрительным запросам.
Границы работ
Сервер должен проверять входные данные, ограничивать частоту запросов и отклонять заявку при неуспешной проверке токена. Иначе бот отправит запрос напрямую, минуя интерфейс. Блокировщики рекламы и корпоративные фильтры иногда останавливают внешний скрипт у конкретного посетителя. Для такого случая нужен понятный текст ошибки или запасной канал связи. Подключение платного тарифа провайдера и изменение политики обработки данных согласуем отдельно.
Вопросы
Проверяем загрузку скрипта, клиентский ключ, разрешённый домен, контейнер, CSP и блокировщики.
Ищем ошибку callback, потерю токена, повторный перехват submit или отказ серверной проверки.
Да. Проверка запускается при отправке, а подозрительному посетителю сервис показывает задание. Серверная валидация остаётся обязательной.
Тестируем успешную заявку, неверный и повторный токен, таймаут, несколько форм и мобильные браузеры.
Первый шаг
Опишите, появляется ли виджет, проходит ли задание и что происходит после нажатия кнопки формы.