这个反垃圾评论插件好复杂,研究了2个多小时,终于有点眉目,过来写一下感受。
Spam Karma 2
,反垃圾评论插件,通过一些方法计算一条评论的karma值来判定他是否是一条垃圾评论。
安装过程:下载Spam Karma 2.2版,解压上传到plugins目录,再到语言包下载页面下载中文包,上传到plugins目录(我放SK2的目录里不行,必须放在plugins根目录下,汗)。当然,使用中文包必须在wp-config.php文件里设置过define ('WPLANG', 'zh_CN');,装过Wordpress中文包或者K2中文包的都已经设置好了。最后点击选项->Spam Karma 2,插件会自动设置数据库的。
这个插件的中文包的最后更新日期是2005年12月29日,而Spam Karma最新的2.2版本是2006年2月12日发布的,所以搭配上有点问题,有些字符串没有翻译。另外,这个中文包翻译的并不好,很多地方都有明显的翻译错误,让人看了一头雾水。插件本身也有问题,有些字符串没有加入可翻译列表,可能是作者忘记了。
安装完后第一次进入设置页面会进行检测当前主题,以测试主题是否是按照Wordpress的要求编写的。只有使用严格按照要求编写的主题,SK2的功能才能正常使用。在页面底部有一个检查当前主题的按钮,还有一个“高级主题兼容性检测”功能,只要输入一个可评论的独立文章页面的URL,点击提交,SK2会连接他的服务器对这个地址进行全面检测。这个检测如果通过了的话,主题兼容性就没什么问题了。我的K2模板自然通过了检测。
Spam Karma 2使用karma值对评论进行判断,值高于0的放行,值低于0的则有可能是垃圾评论。而karma值的获得是通过一些子插件,每个子插件对某个方面进行检测,并相应的修改karma值,最后汇总的karma值交给主插件进行判断。这些子插件都可以在选项页面进行设置,下面一条一条的解释一个各个选项的含义:(请先点击选项页最后的显示高级选项按钮,这样高级选项都会显示出来,并的左边用红线标识)
- 常规设置(General Settings)
- Severity严格等级,可以设置处理评论的严格等级
- 这一项翻译错了,这一项是在设置log。在SK2 logs页面可以看到SK2的事件记录,而每种记录有一个等级。这里可以设置,低于4级的记录不存入数据库,只存在cache里,过期后就会消失。
- 自动保存5个backup,这些是指SK2的机器人判断功能,当拿捏不准的时候要进行判断。具体的在下方的captcha选项中设置,这里只设置保存5个backup。
- 在发送到信箱的报告中允许"hovering"悬停?不懂,不过他说如果是用IE之类的最好禁用,我用Firefox就不怕啦。
- 自动在页尾显示一段代码,告知spamer本Blog已经被SK2保护。下面的两个选项,一个是设置具体的html代码,一个是默认代码,用来在修改后想恢复默认值时使用。
- 过滤器插件设置
- 用户登记(User Level)
设置如果是1级以上的注册用户发表的评论则给予一个很高的karma值以便立刻通过。 - 链接数(Link Counter)
包含超过2条链接的评论会被惩罚,也就是扣一些karma值。 - 秒表(Stopwatch)
如果评论者打开页面后3秒之内就发表评论就进行严重处罚,如果是13秒之内就进行轻微处罚。 - 黑名单(Blacklist)
按照黑名单和白名单加减karma值,下面的选项可以设置karma值超过10的评论的URL和IP自动加白名单,karma值低于-10的评论的URL和IP自动加黑名单。 - Javascript模块(Javascript Payload)
浏览器支持Javascript的加分,不支持的则扣分。下面的选项选上后,支持的加分,但不支持的不再扣分。 - 加密模块(Encrypted Payload)
在评论表单里添加一个加密模块,用于确保发表评论时整个评论表单已经被加载完毕。哈哈,这个对于评论机器人是个打击啊。 - html内容检测(Entities Detector)
一些spamer使用不符合标准的html代码来逃避关键词检测,这个功能可以检测html内容是否符合标准。 - TrackBack来源检测(TrackBack Referrer Check)
检测发送TrackBack的页面是否包含本站的页面 - 雪球效应(Snowball Effect)
设置为Blog主人一般3天查看一次评论,当有人在3天内发布了超过2个评论的话,触发本插件 - 文章的年龄和活跃度(Post Age and Activity)
根据文章发布时间的长短和活跃程度加减分。设置为超过15天前的文章会被扣分,而评论数超过2个的文章被认为是活跃的。这一项我认为不好,如果有人回复了一篇老文章怎么办,所以我关掉了这一项。 - RBL 检测(RBL Check)
使用在黑名单页面设置的实时黑名单服务器(Realtime Blacklist servers)检测评论。下面的选项是允许把karma值低于-5的评论的URL和IP提交给RBL服务器。
- 用户登记(User Level)
- 处理方式插件设置
- 机器人检测(Captcha Check)
好复杂,大概的意思:当某条评论的karma值在可以允许的差错范围之内时,给评论者一个机会让他回答一道问题来证明他不是机器人。下面设置,当karma值高于-5,而又达不到通过审核的值(一般为0)时,给予证明机会;3小时后过期。 - Anubis
这个插件用来对评论进行最终处理。karma值被作为一个权值来对评论进行分类:垃圾、暂缓显示、立即显示。下面的选项设置:评论、Trackback、Pingback的karma值高于0的立即显示(送往天堂);评论的karma值高于-6的和Trackback、Pingback的karma值高于-4的会被暂缓显示(送往炼狱);至于其他的则会“被地狱之火默默的焚烧,并出现在Spam Harvest(Spam 收成)里面等待被处理。 - 处理通知(Simple Digest)
发送一个捕获到的垃圾评论的摘要。每24小时发送一次,karma值低于-20的不发送。这是一个通知功能,用于把一些拿捏不准的通知给管理员过目一下。这儿可以设置上一次发送的时间,时间的格式是UNIX时间戳。好像PHP里有mktime()函数和date()函数用于UNIX时间戳和本地时间的相互转换,如果有需要的可以去查查具体参数,写一个小PHP程序得到某个时间戳填进去,用来实现固定某个时间发送报告的功能。唉,这么个小功能弄得这么麻烦。
- 机器人检测(Captcha Check)
讲完了,等明天来看我的第一份报告,看看能抓住几个spam,嘿嘿。(好像其他页面的说明还没写,明天过来补上)
PS:醉心于编程的可以看看《Dissect Spam Karma》
Update:这个破中文包对Stats的显示还有影响,他把写入配置的部分也汉化了,导致计数不更新。还是不要使用这个中文包的好,如果发现Stats已经不更新了,到数据库中把wp_options表中的sk2_stats项清空吧。
Update2:众所周知,Wordpress自带了一个防垃圾留言的插件Akismet
。在我开始使用SK2之前差不多一个月,我就把Akismet插件停掉了。当时感觉到好像别人发的评论会莫名其妙的失踪,我自己测试了一下,也会出现发了评论后,这条评论在后台找不到,数据库里也没有,就好像没发一样。
刚才仔细看了一下Akismet的代码,其实它的原理挺简单的,就是把评论的相关内容(包括姓名、URL、UA、评论内容)全部发往Akismet的服务器,然后根据服务器返回值进行判断。如果返回了true,插件将把该评论的状态设置为spam。但是,如果返回的是false,插件不会将评论的状态强行设置为通过,这样做也就使Akismet插件不会和其他反spam插件以及Wordpress自带的评论审查功能冲突。另外,如果标记一个正常评论为spam或者标记一个垃圾评论为非spam的话,Akismet将自动将这个消息通知服务器,以便服务器对此错误判断做出改进。
这么看来,Akismet只是设置了spam标志而已,并不会阻止评论进入数据库,不知道那些评论为什么会消失的。想来想去,也许是因为Akismet连接服务器时,由于等待返回的时间太长(毕竟服务器在国外嘛),整个脚本执行超时的缘故吧。
今天在Akismet网站看到一个Spam Karma 2 Akismet Plugin。这是一个SK2的子插件,根据Akismet的返回值对karma值进行修正。这个插件的功能挺全的,它也是通过Akismet服务器返回的"true"或"false"来增减karma值,并在SK2最后计算完karma值之后,如果得到的结果与Akismet服务器返回的结果不符的话,插件会自动通知Akismet服务器。另外,使用这个插件和使用Wordpress的Akismet插件一样,你需要一个Wordpress API。(下面的图片盗链自作者的blog)

Update3:昨天晚上在我的《K2 on Google Code》文章里和tran讨论点事情,今天早上一过来发现tran发的两条评论没了,只留下我的两条评论孤零零的呆在那儿。当时大汗,我的两条评论没丢,所以应该不是数据库回档,难道是有人进了管理后台删的?赶紧进管理后台,进Spam Karma 2里一看,两条评论还有tran后面又发的一条评论静静的Recent Spam Harvest里,前面写着Commenter granularity和Retro-spanking triggered by comment ID: 144。哈哈,SK2的雪球效应检测启动,自动根据IP,URL和email检测重复的评论,给当前评论扣分的同时,也把前面已经通过的评论也扣了9分,导致已经通过的评论又落入Spam Harvest中。SK2这个插件太强了!
寫的真詳細 =__="
辛苦你了 @@~
装上了就用, 从没仔细研究过...
看了头晕。
hehe,辛苦啦~
用不着
垃圾留言都不屑去我那里留言
我的ping好像出问题了
都ping不到别人的
还是要有一个类似政府的机构来管理。
只能说声好了,代表大家谢谢了!
太厉害了。感谢你的教程!
刚才发现spam错杀了某个评论,google到这里,感谢你的教程!
A diploma proves only that you know how to find an answer.
写的很详细,很受用
今天被Spam弄得没办法了,而Akismet又被水产,只有用SK2了。
http://www.google.cn/?key=试试这个能不能过滤....