Эвристика для обнаружения спаммеров / ботов (в форумах, блогах и т. Д.) - PullRequest
3 голосов
/ 09 апреля 2009

Я могу придумать следующие способы:

  1. Измерьте время между действиями.
  2. Сравните содержание сообщений (если они слишком похожи друг на друга) или, что еще лучше, только опубликованные ссылки.
  3. Проверка распределения за период времени, в течение которого пользователь активен (если пользователь активен, скажем, отправлять сообщения один раз в час в течение недели, то у нас либо супермен, либо бот).
  4. Ожидается некоторая особая активность: как и в stackoverflow, я ожидаю, что пользователи нажмут на ссылку с именем пользователя (вверху посередине), чтобы увидеть свои новые ответы, комментарии, вопросы и т. Д.
  5. (добавлено chakrit) Количество ссылок в сообщении.
  6. Не эвристический. Используйте некоторый асинхронный JS для входа пользователя. (Просто усложняет жизнь программисту бота).
  7. (добавлено Алекком) Не эвристический. Значения агента пользователя.
  8. И, как я мог забыть подход Google (упомянутый Уиллом Хартунгом). Дайте пользователям возможность помечать кого-то как спама, достаточное количество голосов за спам означает, что это пользователь спама. (Расчет того, что достаточно пользователям, это работа здесь).

Есть еще идеи?

Ответы [ 8 ]

4 голосов
/ 10 апреля 2009

Я, возможно, переоцениваю интеллект создателей ботов, но номер 6 совершенно бесполезен против любого полу достойного создателя бота. Использование элемента управления браузера C # для создания вашего бота сделает 6 бесполезными. Из того, что я видел с этим типом программного обеспечения, это довольно распространенный подход.

Проверка на useragent практически бесполезна, и весь спам в блоге, который я использую, был получен от ботов, которые кажутся действительными веб-браузерами.

Я использую, чтобы получить много спама в блоге. Я бы буквально удалял сотни комментариев в день. Я использовал reCaptcha и теперь могу получать 1 раз в месяц.

Если вы действительно пытаетесь сделать что-то подобное. Я бы попытался сделать следующее:

Пользователь начинает с невозможности опубликовать URL.

После того, как X постов было проанализировано относительно других постов в ветке, предоставьте им доступ к URL постов.

Активность пользователей на сайте, качество сообщений и любые другие факторы, которые вы считаете необходимыми, будут иметь репутацию IP-адреса этих пользователей.

Затем, основываясь на репутации IP-адреса и других IP-адресов в одной подсети, вы можете принимать другие решения в зависимости от того, что вы хотите.

Это было только первое, что пришло в голову. Надеюсь, это поможет.

3 голосов
/ 09 апреля 2009
  • Количество ссылок в сообщении.

Мне кажется, я где-то читал, что Akismet использует количество ссылок в качестве одной из основных эвристик.

И большинство спам-комментариев в моем блоге содержат более 10 ссылок.

Говоря о том, что ... вы, возможно, захотите проверить Akismet API непосредственно ... они чрезвычайно эффективны.

1 голос
/ 10 апреля 2009

Не забывайте об абсолютной эвристике: кнопка «Сообщить о спаме», которую могут нажимать пользователи. Если ничего другого, это дает вам как администратору шанс обновить базу правил для вещей, которые могут проскальзывать. Конечно, вы можете сразу же удалить оскорбительный пост и пользователя.

1 голос
/ 09 апреля 2009

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

Однако, они не единственный игрок в блоке.

Существует TypePad AntiSpam , который использует ту же эвристику, что и Akismet, а также тот же API (только другой URL и ключ API, структура вызовов одинакова). Можно с уверенностью сказать, что они в значительной степени используют тот же подход, что и Акисмет.

Возможно, вы также захотите проверить Project Honeypot . Из того, что я могу сказать, он может выполнять поиск на основе IP-адреса пользователя, и, если это известный вредоносный IP-адрес, он сообщит вам (харвестер или что-то в этом роде).

Наконец, вы можете проверить LinkSleeve , который подходит к спаму в комментариях с тем, что он утверждает, что это другой путь. По сути, он проверяет ссылки, на которые ссылаются в комментариях, и на основании того, куда ссылки идут, принимает решение.

1 голос
/ 09 апреля 2009

Я считаю, что время между посещениями страниц является обычным явлением.

Мне нужно добавить раздел комментариев на мой личный сайт, и я хочу попросить людей дать мне свой адрес электронной почты; Я отправлю им ссылку «Опубликовать комментарий».

Возможно, вы захотите проверить, пришли ли они с IP-адреса черного списка спама (см. http://www.spamhaus.org/)

1 голос
/ 09 апреля 2009

Как насчет поиска ключевых слов, связанных со спамом, в теле сообщения?

Не эвристический, но эффективный подход: вы также можете быть в курсе статистики, опубликованной StopForumSpam , используя их API .

0 голосов
/ 09 апреля 2009

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

0 голосов
/ 09 апреля 2009

У меня есть некоторые сомнения по поводу точки 4 °, в любом случае, я бы также добавил User-Agent. Это довольно легко подделать, но по моему опыту, около 90% ботов используют Perl как UA

...