Спам-боты постоянно обходят интернет и ищут формы. Нашли поле для ввода - отправили в него мусор со ссылками. Им не нужен ваш товар, им нужно, чтобы ссылка попала в письмо, в комментарий, в базу. Если форма никак не защищена, поток такого мусора быстро становится больше, чем поток реальных заявок, и менеджер перестаёт открывать почту вовремя.
Скрытое поле-ловушка
Самый простой и незаметный способ. В форму добавляют лишнее поле, например «сайт» или «отчество», и прячут его через стили. Живой человек этого поля не видит и не заполняет. Робот видит в коде все поля и заполняет всё подряд. Если пришла заявка с заполненной ловушкой - это бот, отправку молча отклоняют. Метод не мешает никому из настоящих посетителей и отсекает большую часть примитивных ботов.
Ограничение частоты и времени
Человек не может отправить форму через полсекунды после загрузки страницы - он физически не успеет прочитать и заполнить. Если между открытием страницы и отправкой прошло меньше двух-трёх секунд, это почти наверняка робот. Так же работает ограничение по количеству: с одного адреса не больше нескольких заявок в минуту. Оба правила проверяются на сервере и не видны пользователю.
Капча
Капча нужна не всегда. Современные варианты вроде невидимой проверки от Google или hCaptcha чаще всего не требуют от человека ничего - они оценивают поведение в фоне и пропускают. Картинки с искажёнными буквами и «найдите светофоры» стоит ставить только там, где спам действительно давит, потому что часть живых людей на них сдаётся и уходит. Правило простое: начинайте с невидимых методов, капчу с заданиями добавляйте, только если без неё не справиться.
- Скрытое поле-ловушка - ставится всегда, вреда нет
- Проверка времени заполнения - отсекает быстрых ботов
- Ограничение числа заявок с одного адреса за период
- Невидимая капча - следующий уровень, если мусор продолжается
- Капча с заданиями - крайняя мера при массовом спаме
Проверка на стороне сервера
Вся защита должна работать на сервере, а не только в браузере. Робот часто не открывает страницу вообще, а шлёт запрос напрямую на адрес обработчика формы, минуя весь ваш JavaScript. Если проверка живёт только в браузере, такой бот её просто не увидит. Поэтому и ловушку, и лимиты, и капчу окончательно проверяет код на сервере перед тем, как создать заявку и отправить письмо.
Что делать с уже прорвавшимся спамом
Полностью спам не исчезнет никогда, задача - свести его к единицам в неделю. Помогает фильтр в почте по характерным словам и простое правило для менеджера: заявка без внятного текста и с непонятным именем закрывается без ответа. Если спам идёт волнами с конкретных диапазонов адресов, их блокируют на уровне сервера. Раз в квартал стоит проверять, не сломалась ли защита после очередного обновления сайта - это случается чаще, чем кажется.
Ещё один рабочий приём - логировать все отклонённые отправки. Вы не видите этот мусор в почте, но в логе видно, сколько попыток спама отсекается в день и какими методами. Если однажды поток резко вырос или, наоборот, в почту снова полезли роботные заявки, лог сразу покажет, на каком рубеже защита перестала справляться. Это гораздо надёжнее, чем узнавать о проблеме по жалобам менеджера.
Не стоит увлекаться и наваливать все методы сразу на простую форму обратной связи. Каждый барьер немного повышает шанс, что живой человек передумает и уйдёт. Разумный порядок - начать с невидимых проверок, понаблюдать неделю за реальным потоком мусора и добавлять следующий уровень только тогда, когда текущего не хватает. Форма на сайте нужна для клиентов, а не для борьбы с ботами любой ценой.