На контактную форму каждый день приходят десятки спам-сообщений? Рекламные ссылки, непонятные тексты, боты с предложениями работы — всё это рассылают автоматические программы. CAPTCHA — один из путей, но она неудобна для пользователя. Honeypot невидим, но для ботов это ловушка.
Как работает honeypot
В форму добавляется обычное поле, например с именем "website" или "phone_number". Это поле скрывается через CSS — display:none или выносится за пределы экрана. Реальный пользователь его не видит и ничего не пишет. Бот же заходит в форму и заполняет все поля — потому что бот слеп, он смотрит на HTML-код, а не на то, что отображается. На сервере проверяете: если скрытое поле заполнено — это бот, отклоняете.
Техническая реализация
В HTML добавьте input: name="website" type="text" tabindex="-1" autocomplete="off". В CSS скройте: position:absolute, left:-9999px или display:none. На стороне PHP при получении POST-запроса первым делом проверьте это поле. Если заполнено — остановите выполнение без ответа или верните "спасибо, ваше сообщение принято" и не делайте ничего. Бот посчитает, что отправка прошла успешно.
Какое имя выбрать
Имя honeypot-поля важно. Боты ищут стандартные имена: email, name, phone, website, url, address. Выберите одно из них — бот сразу заполнит. Не называйте "honeypot" или "trap" — современные боты узнают такие имена и обходят. Лучше всего "website" или "homepage" — эти поля встречаются в реальных формах, бот не заподозрит.
Дополнительные слои защиты
Honeypot работает мощнее в связке с другими методами. Проверка времени: если форма заполнена менее чем за 2 секунды — это бот. JavaScript-токен: при загрузке страницы JS добавляет скрытый токен, сервер проверяет — бот обычно JS не выполняет. IP rate-limit: с одного IP более 3 отправок в минуту — блок.
Сравнение с CAPTCHA
reCAPTCHA и hCaptcha эффективны, но беспокоят пользователя. Кнопка "Я не робот", выбор картинок со светофорами — всё это снижает конверсию на 10-30%. Honeypot невидим, никто не замечает, но останавливает 95% спама. На самых критичных формах можно сочетать оба: honeypot — первый слой, CAPTCHA — для подозрительных случаев.
Практика Sayt.uz
На каждом сайте, созданном в конструкторе Sayt.uz, на контактную форму автоматически ставится honeypot. Спам падает на 90-95%, пользователь ничего не замечает. Проверка времени и IP rate-limit работают как дополнительные слои. Конструктор от 49 000 сум, honeypot и другие слои защиты включены в стоимость.