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

Проверьте форму с клавиатурой и screen reader, наличие понятной альтернативы и сообщение об ошибке. По возможности показывайте challenge только при повышенном риске.

Коротко: что сделать

  • Проверить форму без мыши
  • Проверить озвучивание поля и ошибки
  • Оценить доступную альтернативу капче
  • Проверить срок и возможность обновить challenge
  • Проверить серверные антиспам-ограничения

Почему возникает проблема

Недоступность возникает, когда визуальная задача является единственным способом отправить форму или элементы challenge не имеют корректных имен и фокуса.

  • Изображение не имеет текстовой или аудиоальтернативы
  • Кнопка обновления недоступна с клавиатуры
  • Фокус теряется после ошибки
  • Screen reader не получает описание состояния
  • Challenge истекает слишком быстро
  • Капча показывается всем вместо риск-ориентированного сценария

Пошаговая диагностика

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

  • Пройти форму клавишами Tab, Enter и Space
  • Проверить NVDA, VoiceOver или другой screen reader
  • Увеличить масштаб до 200–400 процентов
  • Проверить контраст и видимый focus
  • Проверить сообщение при истечении challenge
  • Проверить форму при отключенном JavaScript согласно требованиям проекта

Как исправить

Лучший результат дает многоуровневая защита: rate limit, honeypot, поведенческий сигнал и доступная проверка только при необходимости.

  • Добавить серверный rate limiting
  • Использовать скрытое honeypot-поле без ловушки для screen reader
  • Предоставить доступную альтернативу challenge
  • Связать ошибки с полями через aria-describedby
  • Возвращать фокус к понятному месту
  • Сохранять введенные данные при повторной проверке

Как проверить результат

  • Отправить форму только с клавиатуры
  • Проверить screen reader
  • Проверить мобильный zoom
  • Проверить ошибку и повтор без потери данных
  • Убедиться, что антиспам продолжает блокировать автоматический поток

Как не допустить повторения

Доступность формы нужно тестировать вместе с защитой от злоупотреблений при каждом изменении интеграции.

  • Добавить accessibility-check в приемку
  • Измерять отказы на шаге капчи
  • Иметь альтернативный канал обращения
  • Обновлять сторонний виджет и проверять его изменения

Чего не стоит делать

  • Не полагаться только на alt у сложной картинки
  • Не делать аудиокапчу единственной альтернативой без проверки качества
  • Не сбрасывать всю форму после ошибки
  • Не скрывать focus outline

Что подготовить для диагностики

  • URL формы
  • Название captcha-сервиса
  • Сценарий пользователя
  • Результат проверки клавиатурой
  • Требуемый уровень WCAG

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

Нужно ли полностью убрать капчу?

Не обязательно. Ее можно заменить риск-ориентированной проверкой и доступной альтернативой.

Подходит ли невидимая капча?

Она уменьшает барьер, но нужно проверить конфиденциальность, ложные блокировки и возможность доступно пройти дополнительный challenge.

Что использовать против простого спама?

Rate limit, honeypot, CSRF-защиту, временные признаки формы и серверную проверку содержимого в разумной комбинации.

Когда стоит обратиться за помощью

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

Итог

Доступная антиспам-защита не заставляет каждого пользователя распознавать картинку и сохраняет введенные данные. Проверить и доработать форму можно через @rabotator_support.