Качество трафика, сайт, фрод

Как защитить формы на WordPress от спам-ботов без капчи

Защитить формы на WordPress от спам-ботов можно без капчи и без платных антиспам-плагинов. Готовый плагин уже собран: ставите его как обычный, и работают сразу два слоя защиты. Слой 1 — это ловушка и таймер в браузере, они отсекают основную массу ботов ещё до отправки заявки. Слой 2 — это серверная проверка, она добивает ботов, которые шлют заявки напрямую, минуя страницу. Плагин проверен на свежем WordPress с Contact Form 7 и WPForms: живые заявки проходят, спам отсекается. На сайте моего клиента этот метод свёл спам с 3000 заявок в месяц к нулю.

По отчёту Imperva Bad Bot Report за 2025 год на автоматический трафик пришёлся 51% всех визитов в интернете, и почти 37% это вредоносные боты. WordPress достаётся сильнее других платформ: по данным W3Techs на нём работает около 42% всех сайтов в мире, поэтому спам-боты пишутся в первую очередь под него. Одна отмычка открывает миллионы сайтов сразу: адреса служебных страниц и устройство популярных плагинов форм у всех одинаковые. Ниже разберём, как закрыть формы от ботов готовым плагином и не потерять живые заявки. Плагин можно скачать бесплатно, ссылка перед установкой.

Почему в формы WordPress сыплется спам

Формы на WordPress обычно делаются плагинами: Contact Form 7, WPForms, формы конструкторов страниц. У самых массовых из них встроенного антиспама из коробки нет, а их устройство боты знают наизусть: и как выглядит разметка, и куда уходит заявка. Обязательные поля и маска телефона не помогают, это проверки для людей: бот вписывает правдоподобные значения, и они его пропускают.

Готовые антиспам-плагины проблему закрывают лишь частично. Akismet, который идёт в комплекте с самим WordPress, заточен под спам в комментариях: формам заявок нужна отдельная интеграция, а бесплатный ключ разрешён только личным сайтам без коммерции, сайту с ценами или рекламой нужна платная подписка. Облачные антиспам-сервисы фильтруют по своим базам и тоже по подписке, при этом каждая заявка с вашего сайта проходит через чужой сервер.

Ботов два типа, и ловятся они по-разному. Первые открывают страницу и заполняют форму, как обычный посетитель, таких большинство. Вторые на сайт вообще не заходят, а шлют запросы напрямую на адрес, который принимает заявки, и у WordPress эти адреса стандартные, боты их знают заранее. Один приём не закрывает оба типа, нужна связка из двух слоёв.

Для тех, кто льёт рекламу, спам опаснее вдвойне. Фейковые заявки съедают время на обзвон, но главный вред тише: они портят обучение автостратегий Яндекс Директа. Алгоритм засчитывает мусорные отправки за конверсии и начинает приводить не тех людей.

Забрать готовый комплект

Весь метод собран в готовый комплект под WordPress. В архиве три файла:

  • antispam-wp.zip, готовый плагин. Ставит сразу оба слоя защиты, программировать и настраивать ничего не нужно. Большинству сайтов достаточно его одного.
  • webhook-handler.php, серверный файл на случай, если формы на сайте сверстаны вручную в теме, а не сделаны плагином (об этом ниже).
  • README.txt, короткая инструкция по установке.

Сайт не на WordPress? Для других платформ есть отдельные комплекты и разборы: защита форм на Тильде и защита форм на обычном HTML-сайте.

Этот комплект и ещё два инструмента я бесплатно отдаю подписчикам канала: нажмите кнопку, подпишитесь и заберите весь набор. Это тот же метод, что свёл спам к нулю на сайте клиента.

Забрать в Telegram Забрать в MAX

Установка: один плагин, обе защиты

Плагин ставится как любой другой в WordPress, файл antispam-wp.zip при этом не распаковывают, WordPress сам его развернёт:

  1. В админке WordPress откройте Плагины → Добавить плагин → Загрузить плагин.
  2. Нажмите «Обзор», выберите файл antispam-wp.zip из скачанного комплекта и нажмите «Установить».
  3. После установки нажмите «Активировать». Всё, обе защиты работают, никаких настроек заполнять не нужно.

Проверка простая: откройте свой сайт, начните заполнять форму заявки и нажмите «Отправить» быстрее трёх секунд. Заявка не уйдёт, сработал таймер. Заполните спокойно, отправится нормально. Плагин я проверил на свежем WordPress с двумя самыми популярными плагинами форм, Contact Form 7 и WPForms: живые заявки проходят, а мгновенные отправки и заполненная ловушка отсекаются.

Форму поиска по сайту, которая есть почти в каждой теме, плагин не трогает: он защищает только формы, которые отправляют заявку (в вёрстке это метод POST), а поиск устроен иначе. Так что быстрый поисковый запрос не заблокируется. Если какую-то форму заявок защищать всё же не нужно, добавьте ей в HTML атрибут data-antispam-skip, плагин её пропустит.

Слой 1: ловушка и таймер в браузере

Первый слой работает прямо в браузере посетителя, до отправки заявки. Плагин добавляет в каждую форму два скрытых поля: ловушку и таймер. Заполнена ловушка или форма отправлена быстрее трёх секунд, значит отправку делал бот, и она отменяется, запрос до сервера даже не уходит. На этом слое отсеивается основная масса спама.

Ловушка (honeypot) — это скрытое поле формы. Живой человек его не видит и не трогает, а бот, который автоматически набивает все поля подряд, что-нибудь в него впишет. Спрятано поле не простым display:none, который часть ботов умеет распознавать, а сдвинуто за край экрана. Таймер считает время с первого касания полей, а не с загрузки страницы: посетитель, который долго читал сайт перед заявкой, по ошибке не заблокируется.

С плагинами форм всё уживается. Contact Form 7, WPForms и большинство других отправляют заявку стандартным для браузера событием отправки формы, а наш плагин проверяет её раньше, чем плагин формы успевает обработать. Ничего перенастраивать в самих формах не нужно.

Для рекламы у слоя 1 есть отдельная выгода. Отправка бота отменяется прямо в браузере, поэтому цель «форма отправлена» в Метрике не срабатывает, и бот не засчитывается конверсией. Яндекс Директ не учится на спаме и не уводит бюджет на трафик, который приводит ботов. Работает это при условии, что конверсией считается успешная отправка формы, а не клик по кнопке.

Слой 2: серверная проверка заявок

Второй слой проверяет заявки уже на сервере, где браузерные проверки не обойти: ту же ловушку, тот же таймер и признак прямого запроса (заявка пришла не со страницы вашего сайта, а ударом напрямую в адрес приёма заявок). Для форм Contact Form 7 и WPForms этот слой встроен в тот же плагин и включается сам, отдельно ничего ставить не нужно. Хостинг для этого у вас уже есть: WordPress сам написан на PHP, значит его сервер умеет выполнять и проверки плагина.

Отдельный случай — это формы, которые сверстаны вручную прямо в теме сайта, а не сделаны плагином. Понять, ваш ли это случай, просто: если форму настраивали через плагин в админке, слой 2 у вас уже работает сам. Если форму делал верстальщик в коде темы, серверную проверку ставят отдельным файлом webhook-handler.php из комплекта: он кладётся в корневую папку сайта и указывается адресом отправки формы. Пошаговая настройка этого файла, от блока НАСТРОЙКИ до токена Telegram-бота, разобрана в статье про защиту форм на HTML-сайте, для WordPress она не отличается. Слой 1 при этом всё равно ставит плагин, отдельно его дублировать не нужно.

Блок настроек в файле webhook-handler.php: домен сайта, поля ловушки и таймера, каналы доставки в Telegram и на почту
Файл webhook-handler.php из комплекта нужен только для форм, свёрстанных вручную в теме

Большинству сайтов на WordPress отдельно возиться со слоем 2 не придётся: формы там почти всегда сделаны плагином, а для них серверная проверка уже внутри. Рекомендуемый порядок такой: поставьте плагин, посмотрите пару недель. Спам продолжает просачиваться, значит боты бьют по адресу приёма заявок напрямую, и серверный слой как раз для них.

Насколько снижается спам

Мой опорный случай: сайт клиента на своём хостинге, до защиты приходило около 3000 спам-заявок в месяц, примерно 97 в день. Ловушка с проверкой источника срезала поток на 98%, а после добавления таймера спам пропал совсем. Боты стучатся до сих пор, около 38 попыток в день, но до клиента не доходит ни одна, а живые заявки идут без препятствий.

Чтобы было понятно, какой инструмент за что отвечает, вся защита одной таблицей.

ИнструментГде работаетЧто отсекаетЧто нужно для установки
Слой 1: ловушка и таймерВ браузере посетителяМассовых ботов, заполняющих форму через страницуПлагин из комплекта
Слой 2: серверная проверкаНа хостинге сайтаПрямые запросы мимо страницы, заявки без единого заполненного поляТот же плагин (для форм из плагинов) или файл из комплекта (для самописных форм)
Антиспам-плагины (Akismet и облачные)Внутри WordPress и на сервере сервисаСпам по базам сервиса, в первую очередь в комментарияхУстановка плагина, для коммерческих сайтов подписка
Капча (по желанию)На странице и на сервереРедких ботов, написанных под конкретный сайтПлагин интеграции и ключи сервиса капчи

У метода есть ограничение. Связка рассчитана на массовый нецелевой спам, а это почти весь спам в интернете. Бот, написанный вручную под конкретно ваш сайт, обойдёт любую защиту без капчи, но такое бывает редко. На этот случай и остаётся капча.

Нужна ли капча и почему её ставят последней

Капча нужна, только если после двух слоёв спам всё равно идёт, а это редкий случай. Капча всегда снижает конверсию: по опросу Fastly 2025 года 23% покупателей бросают оформление, когда видят капчу, а по данным Baymard примерно 8% ошибаются при вводе. Поэтому капча — это крайняя мера, а не первый шаг.

Google reCAPTCHA в России ставить не стоит по двум причинам. Юридическая: с 1 июля 2025 поправки в 152-ФЗ ограничивают передачу персональных данных россиян за рубеж, а reCAPTCHA работает на серверах Google за пределами страны, и за нарушение предусмотрены штрафы в несколько миллионов рублей. Техническая: при перебоях с доступом к домену google.com форма с reCAPTCHA просто перестаёт отправляться, и вы теряете все заявки.

Если капча действительно понадобилась, используйте Яндекс SmartCaptcha: её серверы в России, и есть невидимый режим, когда проверку проходят только подозрительные запросы. На WordPress её поставить просто: в каталоге плагинов есть готовые интеграции, в том числе для Contact Form 7, виджет и серверная проверка подключаются плагином без правки кода.

Если в формы вашего сайта на WordPress сыплется спам, заберите комплект и поставьте плагин, а если сайтом занимается разработчик, просто перешлите ему архив с инструкцией. А если мусорные заявки уже портят рекламу, запишитесь на бесплатную консультацию ниже, посмотрю ваш случай и помогу внедрить защиту.

Частые вопросы

Как защитить форму на WordPress от спам-ботов без капчи?

Поставить готовый плагин из комплекта. Он включает сразу два слоя защиты без капчи: ловушку honeypot и таймер заполнения в браузере (слой 1) и серверную проверку заявок Contact Form 7 и WPForms (слой 2). Плагин ставится как обычный: загрузили zip в админке и активировали. Настроек нет.

Работает ли защита с Contact Form 7 и WPForms?

Да. Плагин из комплекта проверен на свежем WordPress с Contact Form 7 и WPForms: живые заявки проходят, мгновенные отправки и заполненная ловушка отсекаются в браузере, а запросы напрямую в приём заявок, минуя страницу, отбрасываются на сервере. Для этих двух плагинов серверная проверка включается сама, отдельно ничего настраивать не нужно.

Почему Akismet не решает проблему спама в формах заявок?

Akismet заточен в первую очередь под спам в комментариях. Для форм заявок ему нужна отдельная интеграция, а бесплатный ключ разрешён только личным сайтам без коммерции: сайту с рекламой, ценами или магазином нужна платная подписка. Ловушка и таймер закрывают формы бесплатно, и заявки не уходят на чужой сервер.

Что такое honeypot-ловушка и как она ловит ботов?

Honeypot это скрытое поле, которое плагин добавляет в каждую форму. Живой человек его не видит и оставляет пустым, а бот заполняет автоматически вместе с остальными полями. Пришло поле-ловушка непустым, значит заявку отправил бот, и отправка блокируется. Размечать формы вручную не нужно, плагин делает всё сам.

Нужно ли уметь программировать, чтобы поставить эту защиту?

Для форм Contact Form 7 и WPForms нет: плагин ставится из админки WordPress, как любой другой, и обе защиты включаются сами. Разработчик нужен только если формы на сайте сверстаны вручную в теме, а не сделаны плагином: тогда серверную проверку ставят отдельным файлом из комплекта, он подробно откомментирован.

Помогает ли метод против обучения Яндекс Директа на спам-заявках?

Да. Слой 1 отменяет отправку бота прямо в браузере, поэтому цель «форма отправлена» в Метрике не срабатывает и спам не засчитывается конверсией. Яндекс Директ не учится на мусорных заявках. Работает при условии, что конверсией считается успешная отправка формы, а не клик по кнопке.

Можно ли ставить Google reCAPTCHA на сайт в России?

Не стоит. С 1 июля 2025 поправки в 152-ФЗ ограничивают передачу персональных данных россиян за рубеж, а reCAPTCHA работает на серверах Google за пределами страны. К тому же при перебоях с доступом к google.com форма перестаёт отправляться. Российская альтернатива это Яндекс SmartCaptcha, для WordPress есть готовые плагины интеграции.

Сыпется спам в формы или мусорные заявки портят рекламу? Запишитесь на бесплатную консультацию: посмотрю ваш случай и подскажу решение.

Бесплатная консультация