采用新的防Spam方法

前阶段在一些朋友的建议下,去掉了日志评论的验证码。说老实话,这也是我一直想做的,可无奈这又是抵御Spam最好的方法。而后,安装上Spam Karma 2,也是目前最好的防垃圾评论插件,几天下来效果还不错。

问题是,我发现他的功能过于强大,受宠若惊;此外,还会自己加三个表,记录Spam、logs还有很多特征信息。长此以往数据库会变得奇大无比,对于以后的升级、搬家都会有麻烦。我感觉这就是sk2的尴尬,过小的站点用不上如此强大的功能,而大的站点则会因为存的Spam过多,数据库过大而放弃。

这种类型的插件基本不可信任,只能自己寻找办法了。从自己动手阻止 WordPress 垃圾评论这篇日志得到启发,因为Spam的原理是找到页面里的textarea就会自动去填,我便伪造了个隐藏的,如果有内容,那肯定是Spam无疑。但这样做并不保险,如果Spam使用xml-rpc的方法发布的话,就无法防御了。对于wordpress的这部分,我并不了解,只是推测。

尝试一天后,发现两条Spam。对我来讲,国内的人肉Spam还不会关注我这样的站点,99%的垃圾评论都是国外机器友人自动发布的,于是便添加了评论审核。对于没有任何中文字符的评论,将不能通过,请留言的朋友们注意了。但这应该也只会影响到少数纯英语或纯表情的朋友,谁会留个言一个中国字没呢?

实现方法很简单,在wp-comments-post.php文件里加入下面两行即可。但改动wordpress源代码的行为对于以后的升级肯定是不利的,可以考虑做成插件。目前太简单,先看看效果吧。

if (!preg_match('/[\x80-\xff]./', $comment_content))
  wp_die('Sorry, comment without a single Chinese character cannot be accpeted!');

10月17日更新:
在wp-comments-post.php中添加代码并不能有效防止robot,因为他是直接用xml-rpc,并不在textarea中填入数据,所以也不会走这里的验证。我现在用的是自己写的一个小插件,在wp_blacklist_check的函数中加入认证,并且屏蔽了href和strong的使用。另外,对于黑名单匹配的记录,不再识别为垃圾评论写入数据库,而是直接拒绝,这样一了百了。目前效果相当好。

19 thoughts on “采用新的防Spam方法

  1. 如果定期删除 sk2, 我是指那种比较彻底的删除, 然后再重装有用吗?

    如果你做出了好用的插件那我肯定捧场, 哈哈.

    [回复]

    NickyYe 于 2008 年 10 月 11 日 10:53 回复:

    我觉得没问题吧,从数据库中彻底删除,哈哈。不过sk2判断的那些依据都是存在数据库中的啊。其实wordpress的垃圾评论也是这样的,并不直接删除,除非你加入审核队列删。因为他也要留给插件判断的。

    [回复]

    魔群月光 于 2008 年 10 月 11 日 12:03 回复:

    我想的是: 反正彻底删除后再安装就跟第一次安装没什么两样, 既然第一次安装后可以过滤垃圾留言, 那么删除重装后还是可以的嘛, 呵呵.

    [回复]

  2. 你最近博客人气突然好旺啊。
    前一阵我留言总失败呢,肯定和你加的那个东西有关系。

    [回复]

    NickyYe 于 2008 年 10 月 11 日 15:21 回复:

    好博客人气自然旺,哈哈。
    这东西是我昨晚才加上的啊,前阵子一直用验证码。

    [回复]

  3. Akimet 真的那么差?它每天帮我拦截下很多 Spam 的。偶尔有一两条漏网之鱼算是可以接受的程度,毕竟人肉Spam的判定不是那么容易。

    [回复]

    NickyYe 于 2008 年 10 月 11 日 15:48 回复:

    我先前用的时候wordpress.com被墙,就放弃了。不是说他每次判断的时候都要连那个网站的,我不知道是否可靠。但对于我主机不在国内来讲,应该没有影响。
    主要是想自己搞个看看,斗争一下,:)

    [回复]

    Shawn 于 2008 年 10 月 11 日 15:52 回复:

    你说的都是后台操作,实际上不会带来太大的服务器负担,对用户来说是全自动的,这就可以了。再说你现在用的是 Dreamhost,不用担心墙不墙的。
    主要是觉得至少有中文这种判定不是那么地人性化。

    [回复]

    NickyYe 于 2008 年 10 月 11 日 16:01 回复:

    确实,不过到底是相信它的判断还是相信自己的操作呢?
    就像我说的,这个只是针对我个人blog而言的,一个评论没一个中文的大概相当之少,而spam基本都这样。当然作为插件通用来讲,就太搞笑了。
    而且,我将来肯定还会转用sk、ak这样的插件,因为我觉得spam远不是我能抵御的,当然我希望可以,呵呵。
    所以就是想试试,看看吧。

    [回复]

  4. WordPress之前有玩过,但是买的是垃圾空间,所以用的很烦!于是就不想再买什么空间了!找个好的BSP,不过Blogger老是被GFW!而YO2又没有自主性!还是决定用Blogger!

    [回复]

发表评论

电子邮件地址不会被公开。 必填项已用*标注