Какую защиту использовать от спам ботов?

Уважаемы Хабравчане!

Поделитесь, пожалуйста, опытом, что использовать лучше: стандартную и столь нелюбимую всеми символьную капчу, дополнительное скрытое поле, капчу по типу «собери картинку», защиту подобного типа, неудобную привязку к телефонному номеру или же что-либо еще?
  • Вопрос задан
  • 15607 просмотров
Пригласить эксперта
Ответы на вопрос 4
@egorinsk
Повторяю способы защиты, выбирайте любой, который нравится:

Начнем со случая, когад у вас маленький (меньше 100 тыс юников в день/1 млн зарегистрированных юзеров) сайт.

1) Сделать невидимое поле с именем email. 98% ботов-дебилов его заполнят, дальше вы понимаете, что с ними делать и куда вносить их IP. Чтобы не палиться, не пишите style=display:none, а скройте его чуть хитрее.

Этот способ у меня отсеивает практически всех ботов на одном сайте. Правда, там боты, не заточенные под сайт, а просто, которые ходят и заполняют все формы подряд своей рекламой. Типа Хрумера наверно.

2) Заполняемое яваскриптом поле типа hidden. Куча ботов не выполняют яваскрипт. Куки, кстати, наоборот, большинство ботов исправно присылают. Реферер и юзер-агент тоже обычно у них правильный.

3) Более радикальный подход — убрать кнопку submit, заменив ее на div, который по событию onclick собирает значения полей формы и отправляет их аяксом. Аттрибут action тега form сделать указывающим на скрипт-ловушку. Если бот не написан специально под ваш сайт, он тупо не сможет отправить такую форму.

Ок, допустим, вам не повезло, и ваш сайт с миллионами пользователей атакуют спамеры специально написанными скриптами. Что мы можем вам предложить?

4) Добавлять вычисляемые/расшифровываемые яваскриптом поля. Внезапная смена алгоритма шифрования в 2 часа ночи скорее всего сдаст тех ботов, которые смогли через нее пробиться, но не успели переписать алгоритм.

5) Проверять поддержку клиентом Flash (загружать флешку и через нее подписывать форму кодом).

6) Проверять соответствие User-Agent и уровня поддержки технологий HTML5/CSS3 (например, определенные версии браузеров не поддерживают border-radius, другие поддерживают, и тд.)

Более серьезные возможности дают методы статистического анализа. Например, можно вычленять из сообщений несловарные слова (это будут ссылки например) и анализировать источники их отправки. Например, если 1000 пользователей начинает за час отправлять по 100 сообщений не-друзьям с одним и тем же словом super-shop — это явный признак спам-рассылки. Для таких систем надо собирать статистику и писать белые/черные правила, вводить негласные лимиты подозрительных действий, в общем. серьезная работа.

Можно, как вконтакте, привязывать аккаунты к телефонам. это работает.

Еще немного рассуждений на эту тему тут: habrahabr.ru/qa/16920/#answer_70019

А использование капчи в формах говорит о лени/низкой квалификации/урезанном бюджете или непрофессионализме и причиняет неудобства пользователям.
Ответ написан
Stdit
@Stdit
Капчу стоит предлагать только в крайних случаях, когда есть подозрение на бота. Например, если не передаётся проверочная кука, отключен яваскрипт. Не думаю, что капча по указанной ссылке надёжнее классической, тут скорее присутсвует элемент «вирусного маркетинга». При составлении капчи важно смотреть на неё с точки зрения программного анализатора изображения. Например, лишние шумы на фоне легко удаляются алгоритмами, и только осложняют восприятие пользователю. Неплохим вариантом может быть reCaptcha.
Ответ написан
Bright
@Bright
На самом деле тема очень интересная.

На это стоит ещё посмотреть с такой стороны: есть ли у вас пользователи с Opera Mini и другими подобными браузерами? Так вот, изображения часто у них отключены, поэтому капчу они не увидят. Но это не беда — картинку можно и загрузить.

Главное, чтобы даже если капча есть, её можно было использовать. Поэтому к экзотическим вариантам типа «собери картинку»/«кликни по картинке с кубиком» я бы отнёсся настороженно.

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

Кстати, ещё один хинт: боты не читают (впрочем, некоторые люди тоже). Поэтому капчи типа «поставьте галочку если вы не бот» / «не заполняйте это поле если вы не бот» тоже могут работать.
Ответ написан
Комментировать
Не так давно статья была http://habrahabr.ru/blogs/webdev/135209/

Там есть интересные мысли.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы