Заметил, что последние несколько дней на одном проекте просто шквал пустых и бестолковых сообщений с формы обратной связи. Попытался запилить классический каптча — и заодно гуглил, что ещё помогает фильтровать спам. Самое простое, что сработало — внедрить скрытое поле (honeypot), куда легитимный пользователь ничего не вводит, а боты чаще всего заполняют. Ещё часто встречается таймер — если форма отправляется моментально, значит скорее бот. Но это не убирает всех, некоторые боты научились их обходить.
Пробовал использовать Google reCAPTCHA v2 — чертовски популярный вариант, но не очень удобен для пользователей, да и иногда каптча попросту не грузится. Есть идея попробовать Invisible reCAPTCHA или хотя бы более лёгкий вариант на JS с валидацией. Ещё один способ — валидация input через нерезонансные вопросы (например, "сколько будет 3+4?"), но это опять немного раздражает.
Кто что юзает реально сейчас? Может, есть нормальные библиотеки на PHP для борьбы со спамом без гемора? Или опыт с серверной фильтрацией по IP и User-Agent? Что помогает именно на практике, а не в теории?
Раньше каптча с картинками была почти как панацея, сейчас боты поднабрались смекалки и обходят почти всё. Поэтому и придумали всякие таймеры, скрытые поля и лёгкие вопросы — это уже больше как фильтр для массовых ботов, а не железный щит. Простые решения лучше: чем меньше напрягаешь юзера, тем круче. Но стопроцентной защиты от спама пока не видел.
Раньше каптчи были просто бронёй от всего зла, а теперь — полотно дыр. Тот же honeypot — штука простая и реально работает, но чуть придумай бота умнее, и он пройдёт. Сейчас вся фильтрация — это скорее компромиссы, чтобы не пугать нормальных юзеров. В итоге понял — лучше несколько лёгких фильтров вместе, чем одна тяжёлая каптча. Спам никуда не деться, но хотя бы дотянуться до приемлемого уровня можно так.