EKORKUNOV — Евгений Коркунов

Защита форм сайта от спама

Настрою защиту действующих форм от мусорных сообщений и автоматических отправок. Отделю спам от ошибок обработки и проверю, как после изменений проходят обычные обращения.

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

Признаки проблемы

У похожих симптомов могут быть разные причины. Прежде чем усиливать ограничения, я проверю, что именно происходит.

Мусорный поток

Бессмысленные сообщения, одинаковые ссылки или массовые отправки перегружают почту, Telegram или CRM. Выясню, через какую форму приходят данные и какие проверки уже работают.

Одна заявка — несколько уведомлений

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

Клиент не может отправить форму

Если защита уже включена, проверю сообщение об ошибке и условия блокировки. Задача — понять, какое правило мешает обычному обращению, а не добавлять новые запреты вслепую.

Что проверяю перед настройкой

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

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

Письма, которые приходят прямо на адрес ящика без участия сайта, не остановить настройкой формы. Для них нужно отдельно разбирать почтовую защиту. Если сама форма принимает данные неправильно или повторяет настоящие обращения, может потребоваться настройка формы и её обработчика.

Когда обращение принято, но уведомления нет, сначала стоит разобраться в доставке: что проверить, если заявки не приходят на почту. Усиление антиспама само по себе эту проблему не решает.

Что входит в работу

Ниже — порядок работы с согласованными формами. Конкретные изменения определю после разбора текущей реализации; весь возможный набор мер не входит автоматически в стартовую цену.

Разобрать и согласовать

Проверю формы и доступную обработку, отделю спам от повторов и ошибок. Согласую подходящие правила, объём, стоимость и контрольные сценарии. Перед изменениями подготовлю подходящую точку восстановления.

Настроить защиту

Внесу согласованные изменения доступными средствами проекта: настройками CMS, доработкой формы или обработчика. Учитываю существующие интеграции и путь обращения до уведомления.

Проверить и передать

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

Что можно сделать без капчи

Подбираю сочетание проверок под конкретную форму и поток. Одна примета не позволяет безошибочно отличить бота от человека.

  • Проверки на сервере: сайт сам проверяет обязательные поля и допустимый формат данных, даже если проверки в браузере обошли. Это основа обработки, но не доказательство, что осмысленное сообщение написал человек.
  • Ограничение частоты: уменьшаем возможность массовой отправки за короткое время. Настройки учитывают, что несколько клиентов могут выходить в интернет через один общий IP-адрес.
  • Обработка повторов: различаем повторную передачу той же заявки и новое обращение. После сбоя связи человеку может потребоваться повторить попытку; блокировать все похожие сообщения подряд нельзя.
  • Дополнительные признаки: скрытое поле или необычная скорость заполнения могут помочь оценке, но автозаполнение тоже бывает быстрым и может затронуть лишнее поле. Не использую такой признак как безошибочный приговор.

Реакцию на подозрительное обращение согласую отдельно: например, дополнительная проверка, временное ограничение или пометка для разбора, если система это поддерживает. Молчаливое удаление любой подозрительной заявки не считаю универсальным решением.

Когда нужна Turnstile или captcha

Капча или другая дополнительная проверка нужна не каждой форме. Выбор зависит от потока, возможностей платформы и того, какие препятствия возникают у посетителя. Не обещаю обойтись без капчи на любом сайте и не ставлю её повсюду по умолчанию.

Если подходит Cloudflare Turnstile, проверю не только виджет на странице, но и подтверждение его результата на сервере. У сервиса есть ограничения: результат проверки действует ограниченное время и используется один раз, поэтому нужно корректно обработать истечение проверки и повторную попытку.

Внешняя проверка может не загрузиться или не сработать в конкретном браузере и сети. До подключения обсуждаем этот риск и понятный путь для посетителя при ошибке; доступность сервиса для всех посетителей гарантировать нельзя.

Почему важно не переборщить

Слишком строгие правила могут помешать клиенту. Поэтому после настройки я проверю не только отсеивание согласованных нежелательных отправок, но и обычный путь обращения:

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

Реальные контрольные отправки и получателей согласуем заранее. Проверю приём данных, сохранение — если оно предусмотрено — и нужные уведомления. Успех ограниченного набора сценариев не доказывает отсутствие всех будущих ошибок.

В результате будет понятно, какие формы защищены, что изменилось и где искать признак сбоя. Объясню, какие сведения собрать при жалобе посетителя и как обратиться ко мне для разбора. Возможность временно ослабить конкретное правило зависит от реализации; снимать всю защиту без проверки не предлагаю.

Опыт работы с формами

Показываю подтверждённую реализацию. Она помогает оценить мой опыт работы с приёмом заявок, но не обещает такой же результат для любого сайта.

«Газелевна»: пошаговая заявка на WordPress

В опубликованном проекте я настроил проверку обязательных данных и формата телефона на сервере, антиспам и защиту от повторной отправки одной заявки. Обращение сохраняется на сайте, а уведомление обрабатывается отдельно.

Посмотреть проект «Газелевна»
Второй этап заказа «Газелевны»: выбор автомобиля и описание груза
Этап выбора автомобиля и описания груза. Это интерфейс формы, а не отчёт об эффективности антиспама.

Примеры похожих проектов

Эти два проекта показывают смежный опыт работы с сайтами и проверками. Их не представляю как кейсы снижения спама или сохранения конверсии.

ADAMO: работающий магазин

Редизайн и перенос WooCommerce-магазина с сохранением каталога и пути покупки. Этот опыт связан с аккуратными изменениями действующего сайта; показатели эффективности антиспама в кейсе не заявлены.

Посмотреть проект ADAMO

Сервис технической оценки сайта

Собственный инструмент проверки публичной части сайта, включая наличие форм. Он помогает собрать исходные сведения, но не отправляет формы и не заменяет проверку их защиты.

Посмотреть проект сервиса

Стоимость и границы работы

Стоимость начинается от 5 000 ₽/проект. Итог зависит от числа форм, платформы, существующей обработки данных и уведомлений. Сначала согласую конкретный объём и цену: стартовая стоимость не означает настройку любого числа форм и интеграций.

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

Защита от DDoS, лечение заражённого сайта и полная защита почтового ящика не входят автоматически. Если после приёма заявки нужны распределение между сотрудниками, статусы и новые подключения, это отдельная задача автоматизации заявок.

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

Обязательно ли ставить капчу?

Не обязательно. Сначала разберусь с потоком и возможностями формы. Иногда подходят проверки на сервере, ограничения частоты и аккуратная обработка повторов; иногда нужна дополнительная проверка посетителя. Обещать работу без капчи для любого сайта нельзя.

Что такое honeypot?

Это дополнительное скрытое поле, которое используют как один из признаков автоматической отправки. Но его может заполнить и автозаполнение браузера. Поэтому срабатывание нужно оценивать вместе с другими условиями, а не считать основанием для безусловного молчаливого удаления заявки.

Можно ли блокировать дубли заявок?

Можно доработать обработку повторов, но сначала нужно выяснить их источник. Посетитель мог повторить попытку после сбоя, а уведомление могло создаться дважды на стороне сайта. Одинаковый текст или общий IP не доказывают спам; новое настоящее обращение не должно автоматически считаться дублем.

Будут ли теряться реальные заявки?

Полностью исключить ложные блокировки заранее нельзя. Проверю согласованные обычные сценарии и объясню, где смотреть ошибки. Если клиент столкнётся с блокировкой, для разбора пригодятся адрес страницы, время, устройство и обезличенное сообщение об ошибке. По этим данным можно проверить и скорректировать конкретное правило.

Можно ли доработать существующую форму?

Часто можно доработать текущую форму без замены сайта. На WordPress, Битрикс, Next.js и других платформах проверю существующие инструменты, доступность обработчика и ограничения проекта. Если возможностей недостаточно, объясню варианты до согласования работ.

Входит ли дальнейшее наблюдение в разовую настройку?

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

Бриф помогает начать без лишних уточнений

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

Обсудить защиту формы

Пришлите адрес страницы и краткое описание: что приходит, как часто и когда началось. Если есть пример, обезличьте его. Пароли и ключи здесь не указывайте; доступ к проекту при необходимости согласуем отдельно.