Формы на сайте ловят спам, потому что они публично доступны ботам и часто принимают отправки без достаточной проверки: валидации полей, антиспама, серверной проверки token, ограничения частоты и фильтрации ссылок. Для защиты используют несколько слоёв: honeypot, reCAPTCHA, Cloudflare Turnstile, Akismet, rate limiting, фильтры содержимого, логи и проверку доставки нормальных заявок. reCAPTCHA v3 возвращает score без действия пользователя, Turnstile требует серверной проверки token через Siteverify API, а Akismet проверяет комментарии и отправки контактных форм по базе спама.
Спам через формы сайта — это не просто раздражающие письма в почте. Это нагрузка на сайт, мусор в заявках, риск пропустить нормальное обращение, проблемы с почтовой репутацией и иногда первый признак, что боты активно нашли ваш WordPress-сайт.
Обычно всё начинается спокойно: одна странная заявка, потом пять, потом десятки писем с бессмысленным текстом, ссылками, одинаковыми именами, иностранными доменами, рекламой казино, крипты, SEO-услуг и прочего цифрового счастья. И в какой-то момент форма на сайте превращается из инструмента заявок в бесплатный мусоропровод.
Google описывает reCAPTCHA как сервис, который защищает сайт от спама и злоупотреблений, используя анализ риска для различения людей и ботов. А reCAPTCHA v3 возвращает score для каждого запроса без лишнего действия от пользователя, чтобы сайт мог сам решить, как обработать подозрительную отправку.
Симптомы
Главный симптом — через форму начинают приходить заявки, которые явно не писал живой человек. В них странные имена, бессмысленные фразы, ссылки, одинаковые шаблоны, нерелевантные услуги, иностранные тексты или повторяющиеся сообщения с разных email.
Второй симптом — спам идёт волнами. Сегодня тишина, завтра 30 сообщений за час. Это часто означает, что форму нашли автоматические боты, сканеры или спам-сети. Они не сидят и не думают над вашим оффером. Они просто отправляют всё, куда можно отправить.
| Симптом | Что это может означать |
|---|---|
| Много одинаковых заявок | бот отправляет шаблон |
| В письмах есть ссылки | попытка SEO-спама или фишинга |
| Заявки идут волнами | форму нашли автоматические скрипты |
| Странные имена и email | массовая генерация данных |
| Сообщения на другом языке | бот не ориентируется на аудиторию сайта |
| Спам идёт ночью | автоматическая отправка без участия людей |
| Форма отправляется слишком быстро | скрипт обходит нормальное поведение пользователя |
| В заявках HTML или код | попытка инъекций или мусорного ввода |
| Нормальные заявки теряются среди спама | уже есть бизнес-ущерб |
Третий симптом — владелец начинает бояться формы. Это звучит смешно, но на практике так и бывает: форма вроде нужна для заявок, но она приносит в основном мусор. Потом её усложняют, ставят жёсткую капчу, блокировки, дополнительные поля, и нормальным людям становится тоже неудобно. Боты, конечно, хлопают железными ладошками.
Почему это происходит
Первая причина — форма доступна всем и никак не проверяет отправителя. Для человека это удобно. Для бота тоже. Если форма принимает любые данные без фильтрации, защиты, проверки скорости отправки и антиспама, её рано или поздно найдут.
Вторая причина — популярные WordPress-плагины форм хорошо известны ботам. Contact Form 7, WPForms, Elementor Forms и другие решения используют понятные маршруты, поля и обработчики. Сам факт популярности не делает плагин плохим, но делает типовые формы более заметными для автоматических атак.
Третья причина — нет серверной проверки. Нельзя полагаться только на фронтенд. Если защита существует только в браузере, бот может отправлять запросы напрямую на обработчик формы. Cloudflare Turnstile, например, работает в два шага: виджет получает token в браузере, а сервер затем отправляет token в Cloudflare для проверки валидности.
Четвёртая причина — неправильно настроенная защита. reCAPTCHA, Turnstile, Akismet, honeypot, фильтры, firewall и лимиты должны работать аккуратно. Если включить всё подряд, можно не только отрезать ботов, но и сломать нормальные заявки. Особенно неприятно, когда форма перестаёт принимать реальных клиентов, но зато спама стало меньше. Победа уровня «пациент не жалуется».
Пятая причина — сайт уже получает бот-трафик. Если на сайт активно идут боты, страдают не только формы: могут появляться странные запросы в логах, нагрузка на хостинг, мусорные регистрации, спам-комментарии, попытки входа и сканирование уязвимостей.
| Причина | Что происходит |
|---|---|
| Нет антиспама | форма принимает всё подряд |
| Нет серверной проверки | бот может обойти браузерную защиту |
| Популярный плагин формы | боты знают типовые обработчики |
| Слабая валидация полей | проходят ссылки, код, мусор |
| Нет rate limiting | можно отправлять много заявок подряд |
| Неправильная капча | блокирует людей или не ловит ботов |
| Нет логов отправки | непонятно, откуда идёт спам |
| Сайт под бот-нагрузкой | страдают формы, сервер и почта |
Akismet проверяет комментарии и отправки контактных форм по глобальной базе спама, а официальный плагин WordPress описан как антиспам-защита для комментариев и contact form submissions. Для Contact Form 7 Akismet можно подключать через специальные параметры полей, например для автора, email и URL.
Что проверить в первую очередь
Сначала нужно понять масштаб. Сколько спама приходит: 2–3 письма в неделю, 20 в день или сотни за час? Спам идёт через одну форму или через все? Это contact form, форма услуги, комментарии, регистрация, WooCommerce, подписка или кастомный обработчик?
| Что проверить | Зачем |
|---|---|
| Какая форма ловит спам | понять точку входа |
| Частота отправок | оценить масштаб |
| Время отправок | увидеть волны и автоматику |
| Содержание заявок | понять тип спама |
| IP и User-Agent | найти повторяющиеся источники |
| Наличие ссылок | выявить SEO-спам |
| Работают ли нормальные заявки | не сломать конверсию |
| Есть ли SMTP и журнал отправки | понять, что реально уходит |
| Какие плагины формы стоят | проверить настройки защиты |
| Есть ли кэш / CDN / firewall | понять уровень фильтрации |
Дальше проверьте настройки самой формы. Есть ли обязательные поля, нормальная валидация email, ограничение ссылок в сообщении, защита от слишком быстрой отправки, honeypot, капча или антиспам-интеграция. Если форма принимает пустой текст, ссылку в каждом поле и отправку за 0,3 секунды после открытия страницы, ботам даже стараться не нужно.
Важно проверить, не мешает ли защита нормальным пользователям. Если после включения капчи или антиспама реальные заявки пропали, проблема может быть уже не в спаме, а в чрезмерной фильтрации. Для такой ситуации полезен связанный материал почему формы на сайте не отправляют заявки.
| Проверка | Хороший признак |
|---|---|
| Обязательные поля | нельзя отправить пустую форму |
| Валидация email | мусорные адреса не проходят |
| Honeypot | скрытое поле ловит простых ботов |
| Captcha / Turnstile | есть проверка человека или риска |
| Серверная проверка token | защита не только на фронтенде |
| Лимит частоты | нельзя отправить 100 заявок подряд |
| Фильтр ссылок | сообщения с мусорными URL ограничены |
| Логи | видно IP, время и ошибку |
Contact Form 7 в своей документации отдельно рекомендует Turnstile как CAPTCHA-альтернативу Cloudflare для защиты контактных форм от спам-ботов; в документации Cloudflare Turnstile также прямо описан как инструмент защиты форм через клиентский виджет и серверную проверку token.
Как снизить ущерб
Сначала нужно не «победить весь спам навсегда», а снизить ущерб: не потерять нормальные заявки, не забить почту, не перегрузить сайт и не сломать форму.
Первый шаг — сохранить нормальный канал связи. Если форма тонет в спаме, добавьте временно альтернативу: email, Telegram, VK, телефон, ссылку на мессенджер. Но не убирайте форму без понимания, если она приносит заявки.
Второй шаг — включить мягкую защиту. Обычно начинают с honeypot, базовой фильтрации, ограничения ссылок и проверки обязательных полей. Это меньше мешает пользователям, чем жёсткая капча. Если спама много, добавляют Turnstile, reCAPTCHA, Akismet или антиспам-плагин.
Третий шаг — не ставить всё подряд. Два антиспам-плагина, три капчи, firewall, блокировка стран, запрет кириллицы или латиницы и ручная модерация каждой заявки — это уже не защита, а полоса препятствий. Нормальный клиент не обязан доказывать сайту, что он не робот, не шпион и не враг народа.
| Мера | Когда использовать |
|---|---|
| Honeypot | при простом автоматическом спаме |
| Ограничение ссылок | если в заявках много URL |
| Валидация полей | если проходят пустые или мусорные данные |
| Turnstile / reCAPTCHA | если простая защита не помогает |
| Akismet | если нужен фильтр по базе спама |
| Rate limiting | если идут массовые отправки |
| Firewall / WAF | если бот-трафик шире, чем формы |
| Логи и журнал заявок | если нужно понять источник проблемы |
| SMTP и отдельный ящик | чтобы не терять нормальные заявки |
Google reCAPTCHA v3 работает без пользовательского вызова и возвращает score, а Turnstile позиционируется Cloudflare как CAPTCHA-замена, которая подтверждает реальность посетителей и блокирует нежелательных ботов без замедления опыта для реальных пользователей. На практике выбор зависит от формы, плагина, сайта, требований к приватности и того, насколько критичны ложные блокировки.
Если спам идёт через несколько форм, комментарии, регистрации или WooCommerce, лучше не ограничиваться одной формой. Нужно смотреть весь сайт: плагины, открытые endpoints, XML-RPC, REST API, комментарии, регистрацию, firewall, логи и хостинг.
Что делать дальше
Если спама немного, можно начать с настройки формы: honeypot, обязательные поля, фильтр ссылок, Turnstile или reCAPTCHA, журнал заявок и проверка доставки писем. После каждой правки нужно отправить тестовую заявку как обычный пользователь и убедиться, что она дошла.
Если спама много, он идёт волнами, сайт нагружен, формы перестают нормально работать или заявки уже теряются, лучше переходить к системной защите. Здесь уже важно не просто «поставить капчу», а понять, как боты отправляют формы, что видно в логах, какие IP повторяются, есть ли прямые POST-запросы, как настроен сервер и не мешает ли защита нормальным посетителям.
В такой ситуации логично заняться защитой сайта от спама: проверить формы, комментарии, антиспам, капчу, honeypot, логи, ограничения, почтовую отправку и слабые места WordPress. Это не обязательно означает тяжёлую «капчу на всё». Нормальная задача — снизить спам и при этом сохранить заявки.
Если вместе со спамом есть другие проблемы — формы работают нестабильно, письма не доходят, сайт тормозит, появляются ошибки после обновлений — понадобится техническая поддержка сайта. Тогда смотрят не только антиспам, но и общую техническую связку: WordPress, плагины, почту, SMTP, хостинг, кэш и безопасность.
| Ситуация | Что делать |
|---|---|
| 1–2 спам-заявки в неделю | мягкая фильтрация и honeypot |
| 10–20 спам-заявок в день | Turnstile/reCAPTCHA, Akismet, фильтры |
| Сотни отправок | rate limiting, firewall, логи, серверная защита |
| Нормальные заявки пропали | проверить, не блокирует ли антиспам людей |
| Спам идёт через все формы | системная проверка WordPress |
| Есть нагрузка на сайт | смотреть хостинг, логи, ботов |
| Форма сломалась после защиты | откатить и диагностировать настройки |
| Непонятно, что включено | техническая проверка формы и плагинов |
Для самостоятельного продолжения можно использовать материал как защитить формы от спама: он ближе к практической настройке защитных слоёв после первичной диагностики.
Материал подготовлен Максимом Вагизовым для vagizov.com . При цитировании обязательна активная ссылка на источник.
Подробнее об авторских правах