Перейти к содержимому
Рабочее место веб-разработчика: клавиатура, мышь и часы

Защита форм от спама без мучений для пользователей

Защита форм от спама без мучений для пользователей

Однажды к нам обратился производитель металлоконструкций: менеджеры получали больше 300 заявок в день, и из них настоящих было восемь-десять. Остальное — реклама казино, ссылки на сомнительные сайты, бессмысленные наборы символов. Настоящие заявки терялись в потоке, ответы клиентам задерживались на сутки. Предыдущий подрядчик решил проблему «радикально» — поставил сложную капчу, после чего спам уменьшился, но и реальных заявок стало вдвое меньше. Хорошая защита форм должна быть невидимой для людей и непреодолимой для ботов. Разберём, как этого добиться.

Откуда берётся спам в формах

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

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

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

Почему капча — не лучший ответ

Классическая капча — искажённые буквы, выбор картинок, решение примеров — первое, что приходит в голову. Но у неё есть серьёзные недостатки. Каждый лишний шаг в форме снижает конверсию: по нашим замерам на разных проектах, видимая капча уменьшает число отправленных заявок на 5–20% в зависимости от её сложности. На мобильных устройствах особенно неудобно: мелкие картинки, неточные касания, необходимость несколько раз проходить проверку.

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

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

Многоуровневая невидимая защита формы заявки от спам-ботов
Многоуровневая невидимая защита формы заявки от спам-ботов

Невидимые методы защиты

Эти методы не требуют от посетителя никаких действий, и для большинства сайтов их комбинации достаточно, чтобы отсечь 90–99% спама.

Скрытое поле-ловушка

В форму добавляется поле, невидимое для человека, но заметное для бота в коде страницы. Человек его не заполнит, бот — заполнит. Отправки с заполненной ловушкой отклоняются.

Проверка времени

Человеку нужно хотя бы 3–5 секунд, чтобы заполнить даже короткую форму. Бот отправляет её за доли секунды после загрузки. Слишком быструю отправку можно отклонить.

Одноразовый токен

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

Проверка через JavaScript

Часть данных формы формируется скриптом в браузере. Простые боты скрипты не выполняют, и их отправки оказываются неполными.

Ограничение частоты

С одного адреса нельзя отправить больше 3–5 заявок за 10 минут. Реальный клиент столько не отправляет, а массовый спам упирается в лимит.

Проверка содержимого

Заявки со ссылками в поле имени, с текстом только латиницей на русскоязычном сайте, со стоп-словами отправляются в отдельную папку на проверку.

У каждого метода есть нюансы. Скрытое поле нужно прятать стилями, а не атрибутом type="hidden", иначе боты его пропустят; при этом важно, чтобы браузерное автозаполнение его не трогало, иначе пострадают реальные пользователи. Порог времени не стоит делать слишком строгим: браузер может автоматически заполнить имя и телефон, и человек отправит форму за 2 секунды. Ограничение частоты должно учитывать, что из одного офиса с общим IP-адресом заявки могут отправлять несколько сотрудников.

Умные невидимые проверки

Если базовые методы не справляются, следующий шаг — сервисы оценки поведения. Они анализируют, как посетитель взаимодействует со страницей: движения мыши, прокрутку, скорость ввода, характеристики браузера. По итогам каждая отправка получает оценку «насколько это похоже на человека». Большинство посетителей проходят проверку незаметно, и только при подозрительном поведении показывается дополнительное задание.

Такие сервисы — хороший компромисс, но и у них есть цена. Они подключают внешний скрипт, который замедляет загрузку страницы и передаёт данные о посетителе стороннему сервису. Это нужно отразить в политике конфиденциальности и учитывать требования 152-ФЗ «О персональных данных», особенно если сервис обрабатывает данные за пределами России. Подгружать скрипт проверки лучше только на страницах с формами и, по возможности, в момент, когда пользователь начал заполнять форму, а не при загрузке страницы.

Что делать с подозрительными заявками

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

ПризнакДействиеПочему
Заполнено поле-ловушкаОтклонить сразуЧеловек не может увидеть это поле, ошибка практически исключена
Нет токена или он недействителенОтклонить сразуОтправка не со страницы сайта
Отправка быстрее 2 секундВ карантинВозможно автозаполнение браузера
Ссылки в полях имени или телефонаВ карантинТипичный спам, но бывают странные ошибки ввода
Превышен лимит отправокПоказать сообщение и предложить позвонитьМожет быть офис с общим IP или повторная отправка из-за медленного интернета
Низкая оценка сервиса поведенияПоказать дополнительную проверкуДать человеку шанс подтвердить, что он не бот

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

Особые случаи: регистрация, отзывы, поиск

Формы заявок — не единственная цель ботов. У разных форм разные риски, и защищать их стоит по-разному.

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

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

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

Формы с отправкой SMS. Особый риск: боты могут отправить тысячи запросов на коды подтверждения на платные номера, и вы получите счёт от SMS-сервиса на десятки тысяч рублей. Здесь строгие лимиты частоты на номер и на IP, а также проверка формата номера обязательны.

Не забудьте про уведомления

Иногда проблема не в самом спаме, а в том, как он доставляется. Если форма отправляет письмо со сайта напрямую через почтовую функцию сервера без настроенных записей SPF и DKIM, часть реальных заявок попадает в папку «Спам» у самих менеджеров. Мы встречали компании, где из-за этого неделями терялось каждое пятое обращение. Надёжнее отправлять уведомления через корпоративный почтовый сервис с правильными настройками домена и параллельно сохранять каждую заявку в базе сайта или в CRM. Тогда даже если письмо не дошло, заявка не потеряется, а сравнение числа записей в базе и писем в почте быстро покажет проблему.

Порядок внедрения защиты

  1. Оцените масштаб

    Сколько спама приходит, через какие формы, какого типа. Это определит, какие методы нужны в первую очередь.

  2. Включите базовые методы

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

  3. Настройте карантин

    Подозрительные заявки не теряются, а складываются отдельно. Назначьте ответственного за просмотр.

  4. Наблюдайте две недели

    Сравните число заявок до и после, проверьте карантин на ложные срабатывания, убедитесь, что реальные заявки не пострадали.

  5. Добавляйте проверки по необходимости

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

В истории с производителем металлоконструкций мы убрали видимую капчу, поставили скрытое поле, токен, проверку времени и простой фильтр по ссылкам. Спама осталось 2–3 заявки в неделю, а число реальных обращений вернулось к прежнему уровню и даже выросло на 15% — видимо, часть клиентов раньше бросала форму на капче.

Главное

Защита форм от спама не должна мешать реальным клиентам. Скрытые поля-ловушки, одноразовые токены, проверка времени заполнения и ограничение частоты отсекают подавляющую часть ботов незаметно для людей. Подозрительные заявки лучше отправлять в карантин, а не удалять, а видимую проверку показывать только тем, кто вызвал подозрения. Регистрация, отзывы, подписка и формы с SMS требуют своих мер. Если спам в заявках мешает работе отдела продаж, настройку защиты можно сделать в рамках технической поддержки — обычно это вопрос нескольких часов, а не недель.

Нужен сайт или интернет-магазин?

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

Обсудить проект

Читайте также

Развитие сайта после запуска: план на первые месяцыПоддержка и безопасностьРазвитие сайта после запуска: план на первые месяцыCookie на сайте: уведомление и согласие посетителяПоддержка и безопасностьCookie на сайте: уведомление и согласие посетителяРезервное копирование: как не потерять сайтПоддержка и безопасностьРезервное копирование: как не потерять сайтВосстановление сайта после сбоя: план действийПоддержка и безопасностьВосстановление сайта после сбоя: план действий