Challenge · CAPTCHA

Что такое CAPTCHA и зачем она нужна на сайте

CAPTCHA — это проверка, которая требует от клиента дополнительного действия или доказательства перед продолжением работы с сайтом. Она может быть текстовой, графической, checkbox/invisible или risk-based. Её задача — добавить стоимость автоматизации и получить дополнительное evidence, но сама по себе CAPTCHA не классифицирует весь трафик и не заменяет антибот-систему.

CAPTCHA простыми словами

CAPTCHA — общее название механизмов проверки, которые пытаются отличить допустимое взаимодействие от автоматизированного. На практике встречаются текстовые и графические задачи, выбор объекта на изображении, checkbox-проверки, invisible/passive проверки и risk-based Challenge. reCAPTCHA, hCaptcha и Cloudflare Turnstile — примеры разных реализаций этой идеи, но конкретная архитектура и privacy-модель у сервисов различаются.

Основные виды CAPTCHA и Challenge

ТипКак выглядитЧто важно учитывать
Текстовая CAPTCHAВвести символы/ответ из изображения или заданияПроста для понимания, но может ухудшать доступность и быть решаемой OCR/человеком.
Image CAPTCHAВыбрать объект или нужные изображенияУдобна как интерактивный Challenge; качество assets и accessibility критичны.
Checkbox«Я не робот» или аналогичный шагСам checkbox обычно лишь часть более широкой оценки, а не доказательство человека.
Invisible / passiveПроверка проходит без явной задачи до тех пор, пока риск невысокМеньше UX-friction, но требует прозрачной risk/readiness логики.
Risk-based ChallengeПроверка показывается только выбранным сессиямСнижает нагрузку на нормальных пользователей, если threshold и false positives контролируются.

Что CAPTCHA реально даёт

  • создаёт дополнительный шаг для подозрительной сессии;
  • может подтвердить успешное прохождение проверки;
  • даёт reputation-события pass/fail/timeout/abandon/replay;
  • позволяет повысить стоимость массовой автоматизации;
  • служит fallback, если более мягких evidence недостаточно.

Где CAPTCHA применяют на сайте

CAPTCHA чаще всего ставят там, где автоматизация может массово создавать стоимость или злоупотреблять бизнес-логикой. Это не только вход на сайт: полезнее защищать конкретные операции.

  • формы обратной связи и spam submissions;
  • регистрации и создание аккаунтов;
  • login/reset-password при признаках credential stuffing или bruteforce;
  • дорогой поиск, фильтры, API и scraping-сценарии;
  • подозрительные рекламные/поведенческие сессии;
  • повторные действия после накопления risk evidence.

Чего CAPTCHA не гарантирует

  • не доказывает, что любой прошедший — уникальный реальный покупатель;
  • не защищает сетевой канал от volumetric DDoS;
  • не должна заменять crawler verification;
  • может быть решена человеком или внешним сервисом;
  • может ухудшить UX и доступность при избыточном использовании.

UX, конверсия и accessibility

Любая интерактивная капча добавляет friction. На мобильных устройствах, для пользователей с ограничениями зрения/моторики и при медленной сети сложная проверка может заметно ухудшать выполнение целевого действия.

  • не ставить CAPTCHA глобально без необходимости;
  • предусматривать доступный fallback и понятную ошибку;
  • измерять conversion drop после включения;
  • не создавать бесконечный Challenge loop;
  • считать CAPTCHA частью security UX, а не декоративным виджетом.

Когда показывать Challenge

Практичнее применять Challenge по policy или risk threshold, а не на каждом запросе. Например, verified crawler получает отдельный hard decision; нормальный посетитель продолжает работу; подозрительная сессия получает дополнительную проверку; повторные независимые failures могут увеличивать risk.

Не создавать loop

Если Challenge или его assets недоступны, система должна использовать здоровый fallback или безопасно деградировать. Повторная перезагрузка одной сломанной проверки — архитектурный дефект.

Почему одной картинки недостаточно: token и backend verification

Корректный Challenge обычно заканчивается не «красивой галочкой» в браузере, а серверной проверкой результата. Клиент получает token/response, backend валидирует его и только затем разрешает защищённое действие.

  • token должен иметь ограниченный TTL/expiry;
  • результат полезно делать одноразовым, чтобы снижать replay;
  • backend verification должна быть обязательной частью протокола;
  • invalid/expired/duplicate response — отдельные состояния, а не один безымянный FAIL;
  • успешный Challenge не превращает посетителя навсегда в trusted human.
Публичный виджет без серверной проверки недостаточен

Например, документация reCAPTCHA и Turnstile отдельно требует server-side verification response/token и ограничивает повторное использование результата.

Почему важна readiness самой CAPTCHA

Pass/fail имеет смысл использовать как evidence только когда protocol, authorization, provider и нужные assets реально работают. Если активная картинка не читается или preview сломан, честный статус — DEGRADED/ERROR, а не READY.

Как это связано с AntiPF

Challenge Studio в AntiPF

В 10.050 Challenge Studio разделяет canonical built-in assets и пользовательские assets, имеет fallback и self-healing для допустимых случаев. Overall READY разрешён только при реально renderable активной проверке.

МодульChallenge Studio →СтатьяCAPTCHA vs антибот →СтатьяChallenge-response →РешениеЗащита сайта от ботов →

Источники и технические справки

Для проверяемых технических деталей использованы официальные материалы:

FAQ

Частые вопросы

CAPTCHA и антибот — одно и то же?

Нет. CAPTCHA — механизм дополнительной проверки, а антибот включает классификацию, правила, risk, crawler verification, telemetry и другие слои.

Нужно ли показывать капчу всем посетителям?

Обычно нет. Это повышает трение и может снижать конверсию; лучше risk-based применение.

Если пользователь ошибся в CAPTCHA, его надо блокировать?

Одна ошибка — слабое evidence. Имеет значение повторяемость и другой контекст риска.

Может ли CAPTCHA защитить от DDoS?

Она может усложнить часть application-level автоматизации, но не заменяет upstream L3/L4 anti-DDoS.

Чем invisible CAPTCHA отличается от обычной?

Invisible/passive схема старается не показывать пользователю задачу при нормальном риске и усиливает проверку только при необходимости. Это уменьшает friction, но повышает требования к корректности risk-модели и backend verification.

Зачем проверять CAPTCHA token на сервере?

Клиентский виджет можно обойти или подделать. Backend должен проверить подлинность, срок жизни и повторное использование response/token перед защищённым действием.

Следующий шаг

Нужно проверить трафик на реальном сайте?

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