Invalid Captcha: что означает эта ошибка и как её исправить
Ошибка invalid captcha появляется, когда сайт не может завершить проверку CAPTCHA. Само сообщение не объясняет, на каком этапе возник сбой. Посетитель видит лишь, что форма не отправилась. Владелец сайта обычно может получить код ошибки из ответа на запрос проверки. Этот код помогает найти и устранить причину в reCAPTCHA v2, reCAPTCHA v3 или Cloudflare Turnstile.
Главное
- Сообщение об ошибке в форме редко указывает на конкретную причину. Ищите её в ответе на запрос проверки и серверных логах.
- Если ошибка возникает не при каждой отправке, сначала проверьте срок действия токена. В reCAPTCHA он составляет 2 минуты, в Turnstile — 300 секунд. Уже проверенный токен тоже будет отклонён. Запрашивайте или обновляйте токен незадолго до отправки формы.
- Если форму не удаётся отправить никому, сначала проверьте ключи и настройки домена.
- Даже success: true в ответе reCAPTCHA v3 не гарантирует, что сайт примет запрос. Если оценка score ниже заданного порога, сервер может отклонить форму.
- Плагины кеширования и оптимизации скриптов могут отдавать устаревшие данные формы или нарушать работу скрипта CAPTCHA. Прежде чем менять настройки, сравните, как работает форма при загрузке страницы из кеша и без него.
Что означает Invalid Captcha?
Сообщение об ошибке означает, что сайт отклонил результат проверки CAPTCHA, отправленный вместе с формой. Чтобы понять причину invalid captcha, проследите, как обрабатывается токен. Браузер получает его, когда посетитель проходит проверку в виджете.
Затем посетитель отправляет форму, и токен вместе с ней поступает на сервер. Самостоятельно проверить токен сервер не может, поэтому отправляет его вместе с секретным ключом в API siteverify. Google или Cloudflare возвращает ответ в формате JSON. В нём всегда есть поле success, а при неудачной проверке — ещё и массив error-codes.
На стороне браузера (в форме). Иногда виджет не загружается или не возвращает подходящий результат. Тогда форма блокирует отправку ещё до того, как запрос попадёт на сервер. Текст сообщения задаёт сам сайт или плагин формы, и конкретная причина в нём часто не указана.
На стороне сервера (при обращении к API проверки). Если проверка не пройдена, siteverify возвращает success: false и код в массиве error-codes. По этому коду можно определить причину: в reCAPTCHA timeout-or-duplicate указывает на истёкший или уже использованный токен, а invalid-input-secret — на неверный секретный ключ. В reCAPTCHA v3 сервер может отклонить запрос и после ответа success: true, если оценка score ниже заданного порога.
Чтобы разобраться с invalid captcha в своей форме, найдите этап, на котором не прошла проверка. Для отладки важна именно эта причина, поэтому начните с кода ошибки в серверных логах.
Термины
Токен (token): строка, которую виджет создаёт после проверки. Сервер передаёт её в siteverify в параметре response.
Публичный ключ (sitekey): открытая часть пары ключей. Его добавляют на страницу для загрузки виджета. Ключ должен соответствовать типу виджета, а при включённых ограничениях по домену — и домену страницы.
Секретный ключ (secret key): закрытая часть пары ключей, соответствующая публичному ключу sitekey. Сервер хранит её и передаёт в параметре secret при каждом вызове siteverify.
Оценка (score): число от 0.0 до 1.0 в ответе siteverify для reCAPTCHA v3. Значение 1.0 с высокой вероятностью указывает на легитимное взаимодействие, а 0.0 — на бота.
Порог (threshold): минимальная оценка, при которой сайт принимает запрос. Выбирайте порог по данным собственного трафика.
Почему возникает Invalid Captcha в 2026 году
- Истёкший или повторно использованный токен. В reCAPTCHA срок действия токена составляет 2 минуты с момента выдачи, в Turnstile — 300 секунд. Каждый токен можно проверить только один раз. Поэтому форма, которую долго заполняли или отправили повторно, может быть отклонена.
- Неверный публичный или секретный ключ. Если публичный ключ не соответствует домену или типу CAPTCHA, проверка может не пройти. При неверном секретном ключе siteverify возвращает invalid-input-secret.
- Оценка ниже порога (reCAPTCHA v3). Сам токен в этом случае корректен: Google возвращает success: true, но значение score оказывается ниже заданного порога. Будет ли посетитель видеть ошибку, определяет код сайта.
- Устаревшие данные из плагина кеширования. Кешированная копия может содержать старый публичный ключ, скрипт формы или значение для её защиты. Некоторые интеграции также кешируют уже созданный токен. К следующей отправке формы срок его действия может истечь, либо токен окажется использованным повторно.
- Расширения браузера, проблемы с сетью и блокировка скриптов. Блокировщик рекламы, расширение для защиты приватности или корпоративный фильтр могут заблокировать виджет, и токен не будет создан. Если сервер всё же вызовет siteverify без параметра response, в ответе придёт missing-input-response. Если в Turnstile не удаётся загрузить iframe, в браузере появится ошибка 200500.
- Миграция ключей reCAPTCHA и квоты. По графику миграции Google автоматический перенос ключей Classic в Google Cloud был запланирован на IV квартал 2025 — I квартал 2026 года. Ключи, не связанные с проектом Google Cloud, могут потерять доступ к API. Бесплатная квота составляет 10 000 проверок на организацию в месяц. Подробнее об ошибках квот и проверке токенов — в нашем руководстве по устранению сбоев reCAPTCHA.
Invalid Captcha Token: неверные и истёкшие токены
Invalid captcha token означает, что siteverify не принимает токен. Он может отсутствовать, иметь некорректный формат, истечь или уже пройти проверку. Если срок действия токена закончился до серверной проверки, виджет должен создать новый.
В reCAPTCHA код ошибки лишь частично уточняет причину. И истечение срока действия, и повторное использование приводят к timeout-or-duplicate, поэтому по одному коду их не различить. Неверный токен или некорректный формат дают invalid-input-response, а отсутствие параметра response — missing-input-response.
В документации Cloudflare по проверке токенов Turnstile есть расхождение: в разделе о сроке действия токена для его истечения указан код timeout-or-duplicate, а в таблице ошибок — invalid-input-response. В обоих случаях посетителю нужен новый токен. Определить точную причину помогут временные метки и логи запросов.
Для каждой отправки фиксируйте два момента: когда браузер получил токен и когда сервер его проверил. Выполняйте проверку до передачи запроса в фоновую очередь. Повторные запросы тоже требуют внимания. В reCAPTCHA повторная проверка завершится ошибкой повторного использования, если первая попытка уже использовала токен. В Turnstile для этого предусмотрен параметр idempotency_key: используйте один UUID для запроса проверки и всех его повторных попыток, а для следующей проверки создавайте новый. Этот параметр не продлевает срок действия токена.
Дальнейшие действия зависят от причины:
- Проверяйте каждый токен один раз при обработке отправленной формы.
- В reCAPTCHA v3 запрашивайте токен при отправке формы, а не при загрузке страницы.
- В Turnstile параметр refresh-expired по умолчанию имеет значение auto. Если выбрано значение manual, обновление запускает посетитель. При значении never обрабатывайте истечение срока действия через expired-callback и turnstile.reset(). Подробнее — в настройках виджета.
Если вы посетитель сайта
Если после отправки формы появляется сообщение «invalid captcha» или «captcha verification failed», перезагрузите страницу и отправьте форму ещё раз. Срок действия токена мог истечь, пока вы заполняли форму, особенно если страница долго оставалась открытой.
Если ошибка повторяется, временно отключите расширения браузера, например блокировщик рекламы или средства защиты приватности, и попробуйте снова. Также можно отключить VPN и проверить, включён ли JavaScript. Если это не помогло, свяжитесь с владельцем сайта: причина может быть на его стороне.
Invalid reCAPTCHA и Invalid Captcha Response от Google
Invalid captcha response от Google — это ответ siteverify со значением success: false на запрос проверки, отправленный вашим сервером. Сам по себе он мало что объясняет. Чтобы понять причину invalid reCAPTCHA в вашем случае, посмотрите код ошибки в этом ответе.
Для проверки сервер отправляет POST-запрос на https://www.google.com/recaptcha/api/siteverify с параметрами secret и response. Параметр remoteip можно добавить, но он необязателен. Если www.google.com недоступен, можно использовать www.recaptcha.net. В текущей документации SiteVerify Google называет этот API устаревшим (legacy) и рекомендует CreateAssessment для новых интеграций. После миграции ключи продолжают работать с SiteVerify.
При проблемах с секретным ключом возвращаются missing-input-secret или invalid-input-secret. Код bad-request указывает на некорректный формат запроса. Учитывайте, что поле challenge_ts содержит время загрузки задания CAPTCHA, а не точное время выдачи токена.
Проверяйте и успешные ответы. Если при отправке формы с рабочего сайта поле hostname указывает на тестовое окружение, значит, токен был создан там. В v3 сравните значение action с операцией, которую ожидает сервер, затем сопоставьте оценку score с заданным порогом. Так можно отличить токен, прошедший проверку, от отправки формы, которую сервер действительно принял. Эти случаи разобраны в статье об ошибках проверки reCAPTCHA и способах их исправления.
Captcha Validation Failed и Captcha Verification Failed
Оба сообщения означают, что форма не прошла проверку CAPTCHA, но ни одно не указывает на этап сбоя. Сайты и плагины выбирают формулировки самостоятельно. Единого правила, по которому validation обозначает локальную проверку, а verification — серверную, нет.
Условия появления сообщения зависят от того, как форма обрабатывает CAPTCHA. Например, посетитель может отправить форму до загрузки виджета, и страница сразу отклонит пустое поле токена. Сервер тоже может отклонить запрос без токена, не вызывая siteverify.
Чтобы понять причину captcha verification failed, проверьте, дошла ли форма до сервера и что произошло дальше. Ответ success: false указывает на отклонение запроса со стороны API.
Проследите отправку формы от браузера до сервера. Если запроса на отправку формы нет, её заблокировала проверка в браузере. Если запрос дошёл до сервера, но вызова siteverify не было, сервер остановил обработку раньше. Одно сообщение может сопровождать разные ошибки, поэтому по логам найдите этап, на котором запрос не прошёл.
Ошибки публичного ключа и несовпадение домена
Ошибка публичного ключа sitekey возникает, когда он не соответствует домену страницы или типу виджета. Такие ошибки конфигурации обычно затрагивают все запросы с одинаковыми настройками.
Если в reCAPTCHA включена проверка домена, страница должна находиться на разрешённом домене. Домен в списке также разрешает его поддомены. Для неразрешённого домена появляется сообщение «ERROR for site owner: Invalid domain for site key». При использовании ключа v3 с виджетом v2 в виде флажка — «ERROR for site owner: Invalid key type». Подробнее — в документации Google по настройке ключей.
Turnstile возвращает 110200 для неразрешённого домена, 110100 для неверного публичного ключа и 110110 для ключа, который не удалось найти. Правила настройки доменов также распространяются на поддомены: запись example.com разрешает shop.example.com. Но если указан только www.example.com, родительский домен и соседний поддомен, например shop.example.com, не разрешаются.
На сервере выполняется отдельная проверка: неверный секретный ключ приводит к invalid-input-secret. Частые ошибки:
- ключи скопированы из другого окружения;
- новый домен не добавлен в список разрешённых;
- публичный и секретный ключи взяты из разных пар.
Храните оба ключа в одном источнике конфигурации для каждого окружения. Обновляйте настройки домена до переключения трафика. Если вы отключаете проверку домена Google, сервер должен проверять поле hostname и отклонять токены с доменов, которых нет в списке разрешённых.
Оценка ниже порога в reCAPTCHA v3
Низкая оценка может привести к отклонению формы даже при корректном токене. Например, siteverify возвращает success: true и score: 0.3, а порог на сайте равен 0.5. Код сайта отклоняет запрос, и посетитель видит ошибку. reCAPTCHA v3 сама не показывает задания для проверки: в этом случае запрос отклоняет сайт по собственным правилам.
Google присваивает каждому запросу оценку от 0.0 до 1.0. Значение 1.0 с высокой вероятностью указывает на легитимное взаимодействие, а 0.0 — на бота. Прежде чем выбирать порог, изучите распределение оценок собственного трафика.
Чтобы разобраться, почему запросы отклоняются по порогу, записывайте в логи следующие поля каждого ответа v3:
- success и коды ошибок, если они есть;
- score — чтобы видеть распределение оценок реального трафика;
- action — его значение должно соответствовать операции, которую ожидает сервер;
- hostname и challenge_ts — для проверки источника токена и времени загрузки задания CAPTCHA.
Отклоняйте запросы с неожиданным значением action, а не просто записывайте их в логи. Если проверку не проходят легитимные пользователи, сначала изучите оценки для каждой операции. Можно задать отдельный порог для каждой операции или вместо немедленного отклонения добавить ещё один шаг, например подтверждение электронной почты. В рекомендациях Google по интерпретации оценок описано, как выбирать действие с учётом риска.
Плагины кеширования и Invalid Captcha
Плагины кеширования могут вызывать invalid captcha, если отдают устаревшие данные формы или мешают выполнению скриптов. Один из признаков — форма работает для авторизованного пользователя, но не для анонимного посетителя. В зависимости от настроек кеша эти группы могут получать разные версии страницы.
Само по себе кеширование HTML обычно не кеширует токен CAPTCHA: браузер создаёт его отдельно. На проблемной странице проверьте:
- не сохраняет ли интеграция уже созданный токен для повторного использования;
- не истёк ли срок действия защитных значений формы, например nonce плагина;
- не остались ли старый публичный ключ или скрипт формы после изменения конфигурации;
- не меняют ли настройки оптимизации скриптов порядок загрузки и не задерживают ли виджет.
Сначала сравните работу формы при загрузке страницы из кеша и без него. Если причина в кеше, исправьте обновление динамических полей или исключите проблемную страницу из кеширования. Если причина в оптимизации скриптов, исключите скрипт CAPTCHA из соответствующей настройки. Отключать кеширование страниц для всех форм не требуется.
После смены ключей очистите устаревший кеш страницы, а если копия хранится в CDN — и кеш CDN. Для Turnstile загружайте api.js напрямую с Cloudflare. В документации по интеграции отдельно указано, что этот файл не следует самостоятельно проксировать или кешировать.
Диагностика Invalid Captcha по типу CAPTCHA
На уровне протокола причина invalid captcha определяется по этапу сбоя. Для дальнейшей диагностики сопоставьте симптом с типом CAPTCHA и проверьте код ошибки siteverify. Если вы не знаете, какой сервис использует форма, начните со статьи о том, как определить тип CAPTCHA на сайте.
reCAPTCHA v2
В reCAPTCHA v2 проблема проявляется либо как сообщение в виджете, либо как код ошибки в ответе siteverify. В документации Google по проверке токенов перечислены серверные ошибки и объяснены их значения.
Симптом | Вероятная причина | Что проверить |
|---|---|---|
Виджет показывает «ERROR for site owner: Invalid domain for site key» | Текущий домен не разрешён для ключа | Список доменов и наличие в нём родительского домена, разрешающего этот поддомен |
Виджет показывает «ERROR for site owner: Invalid key type» | Тип ключа не соответствует виджету | Версию ключа и режим виджета |
success: true с сообщением «Over free quota.» | Бесплатная месячная квота превышена, оплата не подключена; проверка работает в режиме fail open — не блокирует запросы из-за превышения квоты | Подключена ли оплата для проекта и каков объём использования по всей организации |
missing-input-response | Токен не передан в SiteVerify | Доходит ли значение g-recaptcha-response до сервера и передаётся ли дальше в параметре response |
invalid-input-response | Неверный токен или некорректный формат | Передаётся ли токен из формы на сервер без изменений |
invalid-input-secret | Неверный секретный ключ или некорректный формат | Принадлежит ли секретный ключ той же паре, что и публичный |
timeout-or-duplicate | Срок действия токена истёк или токен уже прошёл проверку | Время с момента выдачи токена и число вызовов проверки на одну отправку формы |
reCAPTCHA v3
В reCAPTCHA v3 большинство проблем связано либо с обработкой оценки score, либо с кодом ошибки в ответе siteverify.
Симптом | Вероятная причина | Что проверить |
|---|---|---|
success: true, но форма отклонена | Оценка ниже порога или не пройдена другая проверка на сервере | Оценку score, ожидаемое значение action и домен в поле hostname |
success: true, фиксированное значение score: 0.9 и «Over free quota.» | Бесплатная месячная квота превышена, оплата не подключена; проверка работает в режиме fail open — не блокирует запросы из-за превышения квоты | Подключена ли оплата и каков месячный объём использования по всей организации |
Значение action отличается от ожидаемого | Токен создан для другой операции | Совпадает ли операция, которую ожидает сервер, со значением action в ответе проверки |
timeout-or-duplicate | Срок действия токена истёк или токен уже прошёл проверку | Когда создаётся токен и не используется ли он повторно |
invalid-input-secret | Неверный секретный ключ или некорректный формат | Настройки секретного ключа |
Значение hostname отличается от ожидаемого домена | Токен создан на другом сайте или в тестовом окружении | Есть ли домен из поля hostname в списке разрешённых доменов на сервере |
missing-input-response | Токен не передан в SiteVerify | Загрузку скрипта, вызов grecaptcha.execute() и отправку токена |
Cloudflare Turnstile
О сбоях виджета Turnstile сообщает через коды ошибок в браузере. Они обрабатываются отдельно от ответов серверного API Siteverify.
Симптом | Вероятная причина | Что проверить |
|---|---|---|
Ошибка виджета 110200 (Domain not authorized) | Домен не разрешён для публичного ключа | Список разрешённых доменов для виджета |
Ошибка виджета 110100 (Invalid sitekey) или 110110 (Sitekey not found) | Неверный публичный ключ или опечатка | Публичный ключ в панели Cloudflare |
timeout-or-duplicate | Токен использован повторно или истёк — согласно разделу документации о сроке действия токена | Время с момента выдачи токена, повторные вызовы и использование одного значения idempotency_key для повторных попыток одной проверки |
missing-input-response | Токен не передан в Siteverify | Завершена ли проверка в виджете и передан ли токен в параметре response |
invalid-input-response | Неверный токен или некорректный формат; в таблице ошибок Cloudflare также указано истечение срока действия | Целостность токена и устраняет ли ошибку новый токен |
missing-input-secret или invalid-input-secret | Секретный ключ отсутствует, неверен или срок его действия истёк | Секретный ключ для этого виджета |
bad-request | Некорректный формат запроса проверки | POST-запрос на https://challenges.cloudflare.com/turnstile/v0/siteverify с параметрами secret и response |
internal-error | Внутренняя ошибка при проверке | Повторный запрос проверки |
FAQ: invalid captcha
Тестирование интеграций CAPTCHA с CapMonster Cloud
CapMonster Cloud помогает QA-инженерам и разработчикам запускать автоматизированные тесты интеграций CAPTCHA на собственных сайтах и формах, например в конвейерах CI и при регрессионном тестировании. В документации CapMonster Cloud описаны типы задач для reCAPTCHA v2 (RecaptchaV2Task), reCAPTCHA v3 (RecaptchaV3TaskProxyless) и Cloudflare Turnstile (TurnstileTask). Используйте полученные токены, чтобы проверить серверную обработку результатов CAPTCHA после развёртывания.
NB: Пожалуйста, обратите внимание, что продукт предназначен для автоматизации тестирования исключительно ваших собственных веб-сайтов и ресурсов, к которым у вас есть законное право доступа.






