3

我能想到的方法是:

  1. 测量动作之间的时间。
  2. 比较帖子的内容(如果它们彼此太相似),或者更好的是,只比较发布的链接。
  3. 检查用户活跃的一段时间内的分布(如果用户活跃,比如每小时发布一次,持续一周,那么我们这里要么有超人,要么有机器人)。
  4. 预计会有一些特殊活动:就像在 stackoverflow 中一样,我希望用户按下他们的用户名链接(顶部中间)来查看他们的新答案、评论、问题等。
  5. (由 chakrit 添加)帖子中的链接数。
  6. 不是启发式的。使用一些异步 JS 进行用户登录。(只是让机器人程序员的生活变得更加艰难)。
  7. (由 Alekc 添加)不是启发式的。用户代理值。
  8. 而且,我怎么会忘记 Google 的方法(Will Hartung 提到过)。让用户能够将某人标记为垃圾邮件,足够的垃圾邮件投票意味着这是一个垃圾邮件用户。(计算什么是足够的用户,是这里的工作)。

还有什么想法吗?

4

8 回答 8

4

我可能高估了机器人创造者的智慧,但 6 号对于任何半体面的机器人创造者来说完全没用。使用 C# 浏览器控件来创建您的机器人几乎会使 6 变得无用。从我所看到的那种类型的软件来看,这是一种非常常见的方法。

在用户代理上进行验证几乎没有用,我用来获取的所有博客垃圾邮件都来自看似有效的网络浏览器的机器人。

我曾经收到很多博客垃圾邮件。我真的会每天删除数百条评论。我使用了 reCaptcha,现在我可能每月获得 1 个。

如果你真的尝试做这样的事情。我会尝试执行以下操作:

用户开始时无法发布网址。

在与线程中的其他帖子相关的 X 个帖子被分析后,然后让他们访问帖子网址。

用户在网站上的活动、帖子质量以及您认为必要的任何其他因素都将成为该用户 IP 的声誉。

然后根据 IP 和同一子网上的其他 IP 的信誉,您可以根据需要做出其他决定。

这只是我想到的第一件事。希望能帮助到你。

于 2009-04-09T20:03:58.297 回答
3
  • 帖子中的链接数。

我相信我在某处读到过Akismet使用链接数量作为其主要启发式方法之一。

我博客上的大部分垃圾评论都包含 10 多个链接。

说到这……您可能只想查看Akismet API本身……它们非常有效。

于 2009-04-09T18:20:44.393 回答
1

在帖子正文中搜索与垃圾邮件相关的关键字怎么样?

不是启发式方法,而是一种有效的方法:您还可以使用StopForumSpamAPI了解最新发布的统计数据。

于 2009-04-09T18:21:14.563 回答
1

我相信页面访问之间的时间很常见。

我需要在我的个人网站上添加一个评论部分,并且正在考虑让人们给我他们的电子邮件地址;我会通过电子邮件向他们发送“发表评论”链接。

您可能想检查它们是否来自垃圾邮件黑名单 IP 地址(请参阅http://www.spamhaus.org/

于 2009-04-09T18:23:30.003 回答
1

还有另一个答案建议使用 Akismet 检测垃圾邮件,我完全赞同。

然而,他们并不是唯一的球员。

TypePad AntiSpam使用与 Akismet 相同的启发式算法,以及相同的 API(只是 URL 和 api 密钥不同,调用结构相同)。可以肯定地说,他们几乎采用了与 Akismet 相同的方法。

您可能还想查看Project Honeypot。据我所知,它可以根据用户的 IP 地址进行查找,如果它是已知的恶意 IP,它会告诉你(harvester 或类似的东西)。

最后,您可以查看LinkSleeve,它声称以不同的方式处理评论垃圾邮件。基本上,它会检查评论中链接到的链接,并根据链接的去向做出决定。

于 2009-04-09T18:34:47.887 回答
1

不要忘记终极启发式方法:用户可以单击的“报告垃圾邮件”按钮。如果不出意外,这让您作为管理员有机会更新您的规则库以查找可能漏掉的内容。当然,您也可以立即删除有问题的帖子和用户。

于 2009-04-09T20:10:15.020 回答
0

我对 4° 点有一些疑问,无论如何我也会添加 User-Agent。这很容易伪造,但根据我的经验,大约 90% 的机器人使用 Perl 作为 UA

于 2009-04-09T18:24:40.983 回答
0

我确信有某种网络服务,您可以获得顶级 SEO 关键字列表,检查这些关键字的内容。如果内容是丰富的关键字怀疑它是垃圾邮件。

于 2009-04-09T19:28:12.577 回答