IMTX添加基于“中文”的垃圾评论检测机制
最近本blog的垃圾评论(SPAM)泛滥,每天都要花一分钟左右处理一下,实在是恼火。
IMTX用的是跟WordPress一样的Akismet垃圾评论验证机制(见此:Akismet for Django),真不知道怎么回事最近怎么效果越来越差了,而且都是一些非常明显的垃圾评论。
一怒之下,我决定为IMTX增加新的垃圾评论检测机制,那就是通过中文来检测。
先来看看垃圾评论们都长什么样吧~哎呀,外国的垃圾评论,这简直太弱智了!跟中文领域的能智能地根据文章内容来发表评论的垃圾评论相比,你们简直落后了整整五年以上!
遗憾的是Akismet竟然还判断不出来,可见Akismet并没有多少智能在里面(或者是我的Free Plan不给力)。
好吧,下面来解决问题。
根据本站的情况,IMTX的评论99%以上都是基于中文的,而99%以上的垃圾评论呢,则是基于英文的。于是我想到了就通过检测评论正文有没有含中文字来判断是否是垃圾评论。
根据一些信息得出,汉字的Unicode范围大致是:U+4E00..U+9FA5。但是这个范围并不精确,真正的Unicode中文相关的,可是分好几个区间的,具体可以参考这篇文章:unicode中文范围
但是因为我只是比较纯粹地判断一下中文字符就可以了,于是也选了这个“u4E00-\u9FA5”这个范围。
具体的代码也很简单,只要用Python的re来search一下正文即可,如:re.search(ur'[\u4e00-\u9fa5]+', comment.content)
最终的应用,还得仔细思考一下:难道我就这么放弃那1%的用英文来评论的读者吗?
要知道,大家的评论可是我写文章的动力,1%的评论都不能马虎的就当作SPAM处理掉。
于是我在下面加了一句:Notes:Please input at least one Chinese character (or copy this 哈),也就是说,如果你要用英文评论,或者当前的环境没有中文输入法,那么就可以复制那个“哈”进去即可。
我想会用英文输入评论的人,都会去看这句话吧。这也是我自己想想的,具体效果那是要看着办了。
最近少时间在技术细节上去解决问题,于是就想了这么个简单且省事的解决方案。希望这样基本解决SPAM的问题。
让垃圾评论来的再猛烈一些吧!