Антиспам в PHP-формах: что норм работает, а что — просто лишнее
Наткнулся на кучу вариантов защиты форм от спама — от простых капч до всяких хитрых проверок. Сам пробовал несколько подходов и решил поделиться, что реально помогает, а что только гемора прибавляет.
Первое, что почти всегда включаю — простая Google reCAPTCHA. Да, она раздражает пользователей, но уже значительно отсекает роботов. Минус — требует внешнего сервиса и иногда ломает UX, если капча дико сложная.
Второй вариант — honeypot-поля. По сути, дополнительный скрытый инпут, который нормальные юзеры не видят и не заполняют, а боты — наоборот. Плюс: просто добавить, минус — некоторые боты стали умнее и научились их пропускать.
Есть ещё таймеры (проверка, насколько быстро отправлена форма), часто берут для фильтрации ботов, которые слепо жмут кнопку моментально. Но если у пользователя медленный интернет или он задумался, может быть ложное срабатывание.
Фильтрация по IP и частота отправки — работает, когда много спама с одного источника. Но если спамят откуда угодно — не очень.
Что мне понравилось — комбинировать методы: honeypot + таймер + базовая капча. Так большинство мусорных заявок отсекается, а пользователей не сливают в жесткую прокрустову кровать.
А у вас какие комбинации работают? Может, кто-то забыл старую добрую проверку полей через JS или что-то экзотическое?