Я Максим, веб-разработчик. На большинстве сайтов формы защищают гугловской reCAPTCHA по привычке. Но в российском проекте это спорное решение: reCAPTCHA — сервис Google, она грузит сторонние скрипты, отправляет данные за рубеж и нестабильно работает у части аудитории. При этом спам в формах никуда не девается. Разбираю, чем заменить reCAPTCHA и как защитить формы так, чтобы и боты не лезли, и живые клиенты не страдали.

Чем плоха reCAPTCHA на российском сайте

  • это скрипт Google, который грузится с зарубежных серверов и может не загрузиться у части пользователей;
  • она отправляет данные о посетителе в Google — тот же сюжет, что с запретом зарубежной аналитики и пикселей;
  • иногда мучает живых людей бесконечными «выберите светофоры», роняя конверсию;
  • это зависимость от иностранного сервиса, который завтра может стать недоступен.

Yandex SmartCaptcha — российская замена

Главная прямая альтернатива. SmartCaptcha от Яндекса:

  • работает на российской инфраструктуре, стабильно грузится в России;
  • в большинстве случаев проверяет посетителя незаметно, без головоломок;
  • не тащит на сайт скрипты Google.

Для публичных форм, по которым реально идёт спам — обратная связь, регистрация, комментарии, — это понятная замена reCAPTCHA один в один.

Способы защиты без капчи вообще

Часто капча и не нужна — есть тихие методы, которые не видит пользователь:

  • honeypot-поле — скрытое поле, невидимое человеку; бот его заполняет, и заявка отсекается. Просто и эффективно против массовых ботов;
  • проверка времени заполнения — человек не отправляет форму за полсекунды; слишком быстрые отправки режутся;
  • лимиты по IP и частоте — один адрес не шлёт пятьдесят заявок в минуту;
  • подпись или токен формы — форма принимается, только если её реально открывали на вашем сайте;
  • серверная валидация — проверка данных на бэкенде, а не только в браузере.

Эти методы работают незаметно и закрывают большую часть спама без единой капчи.

Как сочетать

Мой подход — слоями, от незаметного к явному:

  • сначала тихие методы: honeypot, проверка времени, серверная валидация, лимиты;
  • если спам пробивается на конкретной форме — добавляете SmartCaptcha именно туда;
  • капчу ставите точечно, на проблемные публичные формы, а не на каждую форму подряд.

Так живой клиент в большинстве случаев вообще не видит препятствий, а боты упираются в защиту.

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

  • не ставьте reCAPTCHA по инерции на российском сайте — лишние скрипты Google и риск;
  • не вешайте тяжёлую капчу на каждую форму — конверсия просядет;
  • не полагайтесь только на клиентскую проверку: бот шлёт данные напрямую, минуя ваш JavaScript, поэтому серверная валидация обязательна;
  • не забывайте про доступность: капча не должна отрезать людей со скринридерами.

Чек-лист

  1. Уберите Google reCAPTCHA с форм российского сайта.
  2. Включите тихие методы: honeypot, проверка времени, лимиты по IP.
  3. Добавьте серверную валидацию всех форм.
  4. На проблемные публичные формы поставьте Yandex SmartCaptcha.
  5. Не вешайте капчу на формы, где спама нет.
  6. Проверьте доступность защиты для людей со скринридерами.

Мой совет

Спам с форм лечится слоями, и капча здесь крайний слой, к которому переходят, когда тихих методов не хватило. Honeypot, лимиты и серверная проверка убирают большую часть ботов незаметно для клиента. Если этого мало — ставьте российскую SmartCaptcha точечно, а не гугловскую reCAPTCHA на весь сайт. Нужно убрать reCAPTCHA и настроить защиту форм без потери конверсии — пишите.