Спам через форму на сайте: как остановить без капчи

Спам через форму останавливается набором невидимых мер, которые не мешают людям: скрытое поле-ловушка, проверка времени заполнения, ограничение количества отправок с одного адреса, проверка содержимого на сервере. Этого хватает для 90% ботов. Капчу стоит включать вторым рубежом — только когда невидимые меры не справляются, и лучше в «умном» варианте, который показывает задание лишь подозрительным посетителям. Главное правило: любая защита должна работать на сервере, а не только в браузере, иначе бот отправит запрос напрямую.
Откуда берётся спам
- Простые боты обходят интернет и заполняют все формы подряд: реклама, ссылки, случайный текст.
- Боты под конкретные CMS знают, как устроены стандартные формы WordPress или Битрикса, и отправляют запросы напрямую на обработчик.
- Ручной спам: люди за небольшие деньги вручную заполняют формы рекламой услуг продвижения и кредитов. Его невидимые меры не останавливают, зато и объём у него небольшой.
- Атака на почту: бот вставляет в форму чужие адреса, чтобы ваш сайт отправлял им письма. Это бьёт по репутации домена и может привести к блокировке отправки.
- Подбор и проверка данных через формы входа и восстановления пароля — отдельная история, к ней нужна защита от перебора.

Невидимые меры защиты
| Мера | Как работает | Против кого |
|---|---|---|
| Поле-ловушка | Скрытое поле, которое человек не видит и не заполняет; бот заполняет | Простые боты |
| Время заполнения | Форма, отправленная быстрее 2–3 секунд после загрузки, отклоняется | Боты, отправляющие сразу |
| Одноразовый токен формы | Сервер выдаёт токен при загрузке страницы и проверяет его при отправке | Прямые запросы к обработчику |
| Лимит частоты | Не больше N отправок с одного IP или устройства за период | Массовая отправка |
| Проверка содержимого | Ссылки в поле «Имя», латиница в русском телефоне, стоп-слова | Рекламный спам |
| Проверка телефона и почты | Формат номера, существование домена почты | Мусорные заявки |
Комбинация 3–4 мер из таблицы обычно убирает почти весь автоматический спам. Принципы защиты от автоматических атак описаны в материалах OWASP.
Когда нужна капча
Если после невидимых мер спам продолжается, подключайте капчу второго уровня. Современные решения, например Yandex SmartCaptcha, оценивают поведение посетителя и показывают задание только тем, кто похож на бота. Большинство людей проходят без задания.
Минусы капчи:
- часть людей не может её пройти: плохое зрение, старый телефон, медленный интернет;
- капча загружает сторонний скрипт, который замедляет страницу;
- при использовании зарубежных капч данные посетителей передаются за рубеж — для российских сайтов лучше российские сервисы.
Защита от рассылки через вашу форму
Если форма отправляет копию заявки на почту, указанную посетителем, боты могут использовать ваш сайт для рассылки спама. Ваш домен попадёт в чёрные списки, и письма клиентам перестанут доходить. Что сделать:
- Не отправлять копию письма на адрес из формы или отправлять только короткое подтверждение без текста из формы.
- Ограничить количество писем в час с сайта.
- Настроить SPF, DKIM и DMARC для домена.
- Следить за журналом почты: всплеск отправки — сигнал атаки.
Что делать прямо сейчас, если спам идёт потоком
- Включите лимит частоты на обработчике формы.
- Добавьте поле-ловушку и проверку времени — это 1–2 часа работы.
- Временно включите умную капчу на атакованной форме.
- Посмотрите журналы: с каких адресов идут запросы, на какой адрес обработчика.
- Если запросы идут напрямую к обработчику, минуя страницу, — добавьте токен формы.
- Удалите спам из CRM, чтобы менеджеры не тратили время, и настройте правило, которое помечает подозрительные заявки.
Ошибки защиты
- Проверка только в браузере. JavaScript, который блокирует отправку, бот просто не выполняет.
- Блокировка по стране. Отсекает и спам, и ваших клиентов в поездках или с VPN.
- Слишком жёсткие фильтры. Заявка «Иван, хочу ремонт, ссылка на квартиру в объявлении» попадает в спам из-за ссылки.
- Нет журнала отклонённых. Вы не знаете, сколько настоящих заявок отсекла защита.
Сохраняйте отклонённые заявки отдельно хотя бы на неделю и иногда просматривайте. Так видно, что фильтр не режет людей.
Спам в регистрации и комментариях
Если на сайте есть регистрация, комментарии или отзывы, боты используют и их. Регистрации создают тысячи фейковых аккаунтов, которые потом рассылают спам через внутренние сообщения или портят статистику. Против этого работают те же меры плюс подтверждение почты до активации аккаунта и запрет одноразовых почтовых сервисов. Комментарии и отзывы лучше публиковать после модерации. Разбор реальной волны фейковых регистраций — в статье о фейковых регистрациях.
Сколько стоит
Невидимая защита одной формы — 2–4 часа работы. Для сайта с несколькими формами и CRM — 1–2 дня вместе с журналом и проверкой. Подключение умной капчи — 1–2 часа, сам сервис для небольших сайтов часто бесплатен в пределах лимита или стоит недорого.
Материалы для проверки
Если нужна реализация
Состав работ зависит от текущего проекта и подтверждённой причины. Можно обсудить диагностику или разработку подходящего решения.
Вопросы и ответы
Почему спам продолжается после установки капчи?
Часто потому, что капча проверяется только в браузере, а бот отправляет запросы напрямую на обработчик. Проверка должна быть на сервере. Ещё одна причина — ручной спам, его капча не останавливает.
Можно ли заблокировать спам по IP?
Помогает против конкретной атаки, но боты меняют адреса. Лимит частоты работает лучше, чем ручные списки блокировки.
Опасен ли спам через форму?
Сам по себе он раздражает и отнимает время менеджеров. Опаснее, если форма отправляет письма на адреса из формы — так ваш домен могут использовать для рассылки спама.
Нужно ли согласие на ПДн, если форму заполняют боты?
Галочка согласия нужна для людей. Боты её отметят, поэтому она не защищает от спама, но обязательна по 152-ФЗ.
Сколько времени занимает защита формы?
Невидимые меры для одной формы — 2–4 часа. Для сайта с несколькими формами и интеграцией с CRM — 1–2 дня.
Почему спам приходит ночью пачками?
Боты работают по расписанию и обходят сайты массово. Пачка в одно время с одинаковым текстом — признак автоматической рассылки, против неё хорошо работает лимит частоты на сервере.