Форма обратной связи — обязательный элемент любого современного сайта. Она помогает посетителям задать вопрос, оставить заявку или подписаться на рассылку. Однако вместе с пользователями через такие формы приходят и нежелательные гости — спам-боты. Автоматизированные скрипты рассылают рекламу, вредоносные ссылки и просто «мусорные» сообщения, загружая почтовый ящик и сервер.
Разберём основные методы защиты сайта от спама.
1. CAPTCHA и reCAPTCHA
Самый известный способ борьбы со спамом — использование CAPTCHA.
- Классическая CAPTCHA — картинка с символами, которые нужно ввести вручную.
- Google reCAPTCHA v2 — галочка «Я не робот».
- Google reCAPTCHA v3 — скрытая проверка на основе анализа поведения пользователя (не мешает реальным посетителям).
Рекомендация: сегодня чаще всего используют reCAPTCHA v2 или v3, так как они удобнее для пользователей.
2. Скрытые поля (honeypot)
Приём «медовая ловушка» заключается в том, что в форму добавляется невидимое поле (например, скрытое через CSS).
- Человек это поле не видит и не заполняет.
- Бот заполняет всё подряд, включая невидимое поле.
- Если оно заполнено — система определяет, что это спам, и отклоняет сообщение.
Это простой и почти незаметный для пользователя метод защиты.
3. Ограничение по времени заполнения
Реальному пользователю нужно минимум несколько секунд, чтобы ввести имя, e-mail и сообщение. Бот же может отправить форму за доли секунды.
- Добавьте проверку: если форма отправлена слишком быстро, её стоит отклонять.
4. Фильтрация по ключевым словам и ссылкам
Многие спам-сообщения содержат:
- большое количество ссылок,
- стоп-слова (например, «casino», «viagra», «crypto»).
Можно создать список запрещённых слов и блокировать такие сообщения ещё до их отправки в почту.
5. Ограничение количества запросов
Чтобы бот не засыпал форму сотнями сообщений:
- Ограничьте количество отправок с одного IP за определённый промежуток времени.
- Используйте системы защиты от DDoS (Cloudflare, Sucuri и др.).
6. Проверка e-mail и телефона
Для заявок можно включить:
- проверку формата e-mail,
- валидацию телефона,
- подтверждение через SMS или e-mail (для более важных форм, например, регистрации).
7. Использование готовых антиспам-плагинов
Если сайт работает на CMS (например, WordPress), проще всего использовать готовые решения:
- Akismet Anti-Spam — автоматически фильтрует спам-сообщения.
- Contact Form 7 Honeypot — добавляет «ловушки» для ботов.
- reCAPTCHA Integration — подключает Google reCAPTCHA к форме.
Защита формы обратной связи — это не один приём, а комбинация мер.
Лучше всего работает связка: reCAPTCHA + honeypot + ограничение по времени. Такой подход минимизирует спам и почти не мешает реальным пользователям.
Если ваш сайт уже страдает от большого потока спама — начните с внедрения honeypot и reCAPTCHA, а затем добавьте фильтрацию и ограничения по IP.