新的反SPAM系统功能
根据SPAM的如下特性,想出来的方法:
1.SPAM里面必然包含链接(网址)。
2.SPAM是大量的、连续的(不然达不到吸引搜索引擎注意的目的)。
根据这样的特性,基本原理如下:
1.首先用正则表达式来匹配收到的评论/TB,如果包含链接(网址),则继续下面步骤。
2.从数据库里面选出最近N条(我想10条应该够用了吧)留言/TB。
3.从上面10条最新评论/TB中同样用正则匹配出网址,逐条与收到的评论/TB进行相似度计算(php内置函数similar_text()即可),相似度大于70%的一般就可以被判断为垃圾了(重复的网址)。
以上是基本方法,下面谈谈比较灵活的方法:
1.匹配的时候,只匹配域名。比如http://www.dgwxx.com/blog/index.php这样一个网址,只匹配www.dgwxx.com出来。防止利用路径进行欺骗。
2.触发垃圾的条件可以更为灵活,降低误判的概率,比如10条最近评论/TB中,要有3条包含疑似重复的网址才能被判定为SPAM等,相似度也可以适当调高(现在Waki-Blog的做法是只要有任意一条的相似度大于70%就算SPAM)。
3.可以让管理员选择被判定为SPAM的消息的处理方式,审核还是直接丢弃。
4.结合自动删除未审核评论/TB功能,就能做到“铁打的Blog,流水的SPAM”。SPAM就像流水一样,不在Blog里留下痕迹,一段时间后被自动删除。
这种方式的好处:
1.针对性强,只针对网址,而且是重复的网址。最大限度地防止误判、漏判。最大限度地减轻了管理员审核评论/TB的工作量。
2.只比较网址,而不比较整篇留言,一来提高效率,二来可以防止利用随机字符、随机文章来稀释相似度的行为。
此外,从今天开始征集SPAM,我在论坛开了一个SPAM专区,专门用于发广告,发的广告将被用于反广告系统的研究。欢迎广大机器人为我们提供素材。如果您收到了SPAM,不妨也提供给我们,为反SPAM事业做出贡献。本版发帖无需注册,游客也可以发帖!
地址是:http://www.dgwxx.com/nmmbbs/forumdisplay.php?fid=26
今天更新了Waki-Blog:
1.加入了如上的反SPAM机制。
2.修正了Trackback接收的Bug(if判断里面落下了“||”)。
引用通告(TrackBack):http://www.bo-blog.com/weblog/tb.php?t=416&extra=1998e

No.60 回复
我思考了一下,建立统一的spam数据库是个不错的想法。国外也有一些实例,不过都是背靠安全公司。
如果我们要发起民间的类似团体,难点主要有二:
1. spam特征库应该可以供所有支持的blog引擎甚至论坛搭建程序通用,因此势必需要跨程序平台。这个好解决,xml就是一个。
2. spam数据库的维护、汇集和(自动)更新,这个就比较麻烦了,不仅需要召集人、管理者,还要有专门的机构/网站去维护,甚至处理申诉等。如果不把更新的权力交给用户,那么也许可以通过在blog引擎程序作者圈中小范围更新来解决。
如果你有兴趣的话,我们可以继续讨论这个问题。我也很想结识更多的blog程序作者,如果你有空的话就按邮箱地址加一下我的Gtalk吧:)