Графическая капча без доступной альтернативы блокирует форму для пользователей с нарушением зрения. Защита от спама не должна превращаться в обязательное распознавание изображения: лучше сочетать серверные ограничения и доступную проверку риска.
Проверьте форму с клавиатурой и 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.