Запретить вредоносным ботам публиковать спам

15

Я помню сайт, закрытый из-за неправильного использования, и мне интересно, есть ли у ботов его часть. Если бот размещает что-то на моем сайте, как я могу с этим бороться? Я думал о настройке некоторых файлов cookie и об изменении файлов cookie с помощью JavaScript + отметка времени и знак (поэтому вчерашние файлы cookie нельзя использовать сегодня и на следующей неделе).

Я уверен, что большинство людей / ботов просто использовали бы другой сайт вместо того, чтобы включать JavaScript в своих ботах.

Что еще я могу сделать? Я думаю, что ежедневный лимит POST и приманка для обычных ботов, которые просто случайным образом отправляют спам.

Джон Конде
источник

Ответы:

13

Вы можете сделать несколько вещей, включая:

  1. Положив поддельное поле, которое увидят только боты. Затем, если это поле отправлено с остальной частью формы, вы можете проигнорировать его (и заблокировать их при желании). Вы также можете ловить плохих ботов, которые переходят по скрытой ссылке .

  2. Используйте капчу как reCAPTCHA

  3. Используйте поле, которое требует от пользователя ответа на вопрос, например, что такое 5 + 3. Любой человек может ответить на него, но бот не будет знать, что делать, поскольку он автоматически заполняет поля на основе имен полей. Таким образом, это поле будет либо неправильным, либо пропущено, и в этом случае отправка будет отклонена.

  4. Используйте токен и поместите его в сеанс, а также добавьте его в форму. Если токен не отправлен с формой или не совпадает, то он автоматизирован и может быть проигнорирован.

  5. Ищите повторные представления с того же IP-адреса. Если ваша форма не должна получать слишком много запросов, но вдруг она, вероятно, попадает под бот, и вам следует подумать о временной блокировке IP-адреса.

  6. Используйте Askimet . Отлично подходит для выявления спама.

Джон Конде
источник
5
+1 - И, в идеале, вы будете реализовывать комбинацию перечисленных выше предложений удобным для пользователя способом (например, если у пользователя отключен Javascript и, следовательно, он не проходит аутентификацию на основе Javascript, предоставьте пользователю CAPTCHA)
2010 г.
6

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

Некоторые из пассивных методов являются хорошей альтернативой, так как они не требуют никаких действий со стороны человека. Проблема в том, что боты становятся все более изощренными, и если боты могут решать CAPTCHA, то они, безусловно, могут обрабатывать JS и CSS. Таким образом, вам нужно проявить немного изобретательности, например, использовать менее очевидный CSS, чтобы скрыть поля ловушки для ботов.

Но, основываясь на вашем вопросе, я думаю, вы, вероятно, понимаете, что цель состоит не в том, чтобы создать сайт, защищенный от ботов, а в том, чтобы создать достаточно сдерживающего фактора, чтобы пользователи ботов просто выбирали другие более простые цели. Таким образом, то, что требуется здесь, будет варьироваться от сайта к сайту, и, вероятно, потребует некоторого тестирования методом проб и ошибок. Сначала я бы попробовал наименее навязчивые приемы.

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

Лез Мажесте
источник
Можете ли вы объяснить идею модерации? Это связано с тем, что обычные пользователи получают права модератора или как мне это представить?
0xC0000022L
@STATUS_ACCESS_DENIED: извините за поздний ответ, но модерация одноранговой сети - это что-то вроде digg, slashdot, stackexchange и т. Д., Где пользователи могут модерировать контент на сайте, предоставляя некоторую форму положительных или отрицательных отзывов. Таким образом, вы можете автоматизировать систему таким образом, чтобы, когда достаточное количество пользователей дало отрицательный отзыв о части контента, она автоматически скрывалась или отмечалась для просмотра. На таких сайтах, как StackExchange, пользователи также могут помечать комментарии / ответы как спам, доводя их до сведения администраторов. Это уменьшает работу, которую должны делать платные администраторы.
Lèse Majesté
Благодарю. Это, конечно, будет работать только на сайтах с большим трафиком, где достаточно пользователей могут оставить отзыв;)
0xC0000022L
1

Как упоминал Джон Конде в своем # 1) и вы упомянули, honeypot может очень хорошо работать в большинстве случаев и на большинстве веб-сайтов. Если это когда-нибудь сделает бот, вы можете просто использовать один из других методов, упомянутых Джоном. Но, честно говоря, если ваш сайт имеет низкий или средний трафик, это должно сработать.

Пример, один из моих любимых:

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

Теперь, когда форма отправлена, чрезвычайно высокий процент ботов будет заполнять как «email», так и «email_address», но люди будут заполнять только тот, который они видят, «email», а не «email_address». Таким образом, в вашем коде `/ process-form 'вы просто должны проверить, не является ли адрес электронной почты (не) пустым для проверки.

Просто и эффективно.

Энтони Хатзопулос
источник