Как защитить форму обратной связи в WordPress от спама без капчи?
Автор: Eureka Studio · Обновлено
Коротко
Вместо капчи (CAPTCHA) сочетайте невидимые проверки: скрытое поле-ловушку (honeypot), которое заполняют только боты, минимальное время заполнения, токен, который переживает кэширование страниц, и лимиты на IP и на email. Сомнительные сообщения отправляйте в карантин, а не удаляйте. Локальный плагин может делать это для Elementor, Contact Form 7 и WPForms, никуда не отправляя данные. В Hushfort защита плагинов форм входит в Pro; бесплатный плагин охватывает только комментарии и отзывы.
Шаги
1Шаг 1
Посмотрите, как боты атакуют вашу форму
Боты заполняют все поля, которые находят, включая скрытое, которого человек никогда не видит, или отправляют данные вовсе не загружая страницу. Журнал Hushfort называет каждый случай: заполнено поле-ловушка, нет токена, заполнено слишком быстро, слишком много ссылок.
2Шаг 2
Включите «Защиту от спама» в режиме наблюдения
В Hushfort откройте «Защиту от спама», включите её и выберите в поле «Режим» вариант «Только записывать — режим наблюдения, ничего не блокирует». Если установлен Hushfort Pro, оставьте «Плагины форм» включёнными и сохраните. Модуль будет записывать то, что заблокировал бы, но пока ничего не блокирует.

3Шаг 3
Настройте незаметные лимиты (Pro)
Оставьте «Минимальное время заполнения» коротким (3 секунды). В Pro также ограничьте, сколько сообщений в час может отправить один IP («Лимит на IP») или один email-адрес («Лимит на email»). Сообщения, в которых ссылок больше, чем «Максимум ссылок», попадают в карантин.
4Шаг 4
Просмотрите журнал и переключитесь на блокировку
Через несколько дней посмотрите, что поймал режим наблюдения. Если настоящих сообщений там нет, выберите в поле «Режим» вариант «Блокировать (рекомендуется)» и сохраните.

5Шаг 5
Живые люди просто отправляют
Посетитель полминуты набирает текст, не видит скрытого поля и отправляет сообщение. Никаких головоломок и сеток с картинками.

Почему это важно
Защитить форму обратной связи в WordPress от спама можно без капчи: невидимое поле-ловушка (honeypot), минимальное время заполнения, токен, который переживает кэширование страниц, и лимиты на IP и email отсекают ботов, не мешая людям. Сомнительные сообщения лучше отправлять в карантин, а не удалять.
Спам в формах — в основном просто досадная помеха, пока не становится чем-то большим. Он хоронит настоящие обращения, приучает вас пробегать почту глазами и может испортить репутацию вашего почтового сервера, если форма отправляет автоответы. На нагруженных сайтах он ещё и отнимает ресурсы сервера, ведь каждая отправка проходит полную обработку в плагине форм.
Обычное решение — CAPTCHA — перекладывает издержки на посетителей. Они решают головоломки, кто-то сдаётся, а те, кто пользуется инструментами защиты приватности, застревают. Большинство сервисов CAPTCHA к тому же загружают сторонний код и отправляют данные посетителей за пределы вашего сервера.
Есть способ потише. Боты ведут себя не так, как люди, и это можно незаметно проверить:
- Они заполняют скрытые поля. Honeypot — это поле, скрытое от людей, но видимое в HTML. Человек оставляет его пустым, бот — заполняет.
- Они быстрые. Человеку на заполнение формы нужно несколько секунд, боту — миллисекунды.
- Они повторяются. Один IP или один email-адрес, с которого приходит десять сообщений в час, — не клиент.
- Они вставляют ссылки. Сообщение с кучей ссылок редко бывает настоящим обращением.
Частые ошибки
- Блокировать вместо карантина. Если проверка не уверена, сохраняйте сообщение для проверки. Удалить вопрос реального клиента хуже, чем прочитать один спам.
- Сразу переходить к блокировке. Начните с режима «только записывать» на несколько дней. Проверьте, что было бы заблокировано, прежде чем разрешать блокировку.
- Токены, которые ломаются из-за кэширования. Если антиспам-токен — часть кэшированной страницы, все посетители делят один просроченный токен. Используйте защиту, которая получает токен при загрузке страницы.
- Только одна проверка. Одно поле-ловушка останавливает лишь простых ботов. Добавьте проверку времени заполнения и лимиты.
Без плагина
В большинстве плагинов форм уже есть базовая версия такой защиты:
- Формы Elementor Pro: добавьте поле «Honeypot» из списка полей.
- Contact Form 7: honeypot добавляется через дополнение; CF7 также поддерживает Akismet, если вы согласны отправлять данные этому сервису.
- WPForms: есть встроенный антиспам-токен и необязательный honeypot в настройках каждой формы.
В любую форму, которую вы контролируете, можно вручную добавить простое поле-ловушку:
<div style="position:absolute;left:-9999px" aria-hidden="true">
<label>Leave this empty <input type="text" name="website" tabindex="-1" autocomplete="off"></label>
</div>
<?php
if ( ! empty( $_POST['website'] ) ) {
wp_die( 'Spam detected.', 403 );
}
Ограничения: каждый плагин форм делает это по-своему, общего лимита частоты для всех форм обычно нет, нет карантина для исправления ошибок и ничего нет для комментариев и отзывов. В итоге вы настраиваете одну и ту же идею пять раз.
Если что-то пошло не так
- Перестали приходить настоящие сообщения. Переключите «Защиту от спама» в режим наблюдения, отправьте тестовое сообщение и посмотрите в журнале, какая проверка его поймала.
- Формы не работают только у части посетителей. После включения защиты один раз очистите кэш страниц.
- Спам всё равно проходит. Уменьшите лимит ссылок, добавьте слова или домены в чёрный список или включите строгий режим для форм, которые должны принимать только известные почтовые сервисы.
С Hushfort
«Защита от спама» в Hushfort Security — бесплатном плагине безопасности для WordPress — защищает комментарии и отзывы WooCommerce в бесплатном плагине. Для плагинов форм нужен Hushfort Pro: он добавляет на тот же экран шесть популярных (Elementor Pro, Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Forminator).
- Невидимое поле-ловушка, минимальное время заполнения и подписанные токены, которые переживают кэширование страниц. Токен выдаёт крошечный скрипт размером около 2 КБ без cookie.
- Pro: по умолчанию лимиты на IP (5 в час) и на email (3 в час); сообщения, в которых больше 2 ссылок, попадают в карантин.
- Pro: список примерно из 9 900 доменов одноразовой почты, ваши собственные чёрные списки и фильтры слов.
- Pro: карантин с обучением по кнопке «Не спам».
- Есть режим наблюдения: вы видите, что модуль заблокировал бы, ещё до того, как он начнёт блокировать.
Никакой CAPTCHA, никаких внешних API, и данные форм никогда не покидают ваш сервер.
Частые вопросы
Действительно ли поля-ловушки останавливают спам в формах?
Почему стоит отказаться от reCAPTCHA?
Работает ли это с кэшированием страниц?
Какие плагины форм поддерживаются?
Что происходит с сообщением, которое похоже на спам, но может быть настоящим?
Похожие инструкции
Как отключить комментарии в WordPress или избавиться от спама в комментариях?
Отключите комментарии в WordPress везде или оставьте их и остановите спам: отдельные правила для записей и отзывов о товарах, без пингбэков и без капчи.
Смотреть шагиКак остановить спам-регистрации пользователей в WordPress?
Как остановить спам-регистрации в WordPress и WooCommerce: почасовые лимиты, общий потолок на сайт и невидимые поля-ловушки — без блокировки заказов.
Смотреть шагиКак распознать и заблокировать поддельный Googlebot в WordPress?
Поддельный Googlebot и плохие боты нагружают WordPress. Проверяйте краулеров по IP, блокируйте подделки и задайте бюджет запросов на IP, не мешая заказам.
Смотреть шаги

