现在流行的博客程序有wordpress,zblog,typecho等等,使用这些流行的程序搭建网站快速方便,但是垃圾留言也同样随之而来。每天查看和清理成百上千条垃圾评论总是一件让人头疼的事情,虽然有垃圾评论检测插件(如wordpress下的Akismet),但不是能百分百检测正确,总有漏网之鱼,也有被误判的,所以即使使用了垃圾评论检测插件,评论队列(包括垃圾评论队列)还是得仔细看一遍。

那么,有没有什么好办法减少甚至完全屏蔽掉垃圾评论呢?这先得从垃圾评论的留言机制上说起。

流行的博客程序都有良好的内部结构,功能模块分的都很清晰。例如有专门负责输出rss的文件,专门负责处理提交的评论的文件等等,这些文件相对于网站的位置都是固定的,并且评论表单中用来标识昵称、邮箱及网站输入框的名称都一样!一般提交一条评论所需要的数据除了昵称、邮箱、网站地址及评论外,还需要知道文章的ID,以及这些数据提交到什么地方。而通过以上介绍,只要知道了你网站地址及博客程序类型,就知道了评论表单中几个输入框的标识名称,RSS的地址(wordpress的是http://域名/feed)也知道了,通过解析网站的rss就知道了文章ID,这些数据要提交到的地方当然就是处理评论的文件的地址(wordpress的是http://域名/wp-comments-post.php)了。所以知道了这些发送一条评论就够了,根本无需打开你的文章页面,甚至无需打开浏览器!对于使用C++、.Net编写的刷评论软件,一分钟刷个上百条评论是没有问题的。由于wordpress在全球范围内非常流行,所以使用wordpress搭建的博客经常会有英文、日文、俄文等外文垃圾留言的光顾。

现在,既然知道了垃圾评论的留言机制,那就可以对症下药了!最简单的办法就是让刷评论的软件找不到评论的提交地址!步骤如下:

  1. 将网站根目录下的wp-comments-post.php文件复制一份,随便改一个名字(如abc.php),文件后缀不能改。

  2. 修改wp-comments-post.php文件,在文件第一行<?php 后换行插入如下代码:

die();

  1. 修改当前主题的comments.php文件,该文件位置在[网站根目录]/wp-content/themes/[主题名],在该文件中找到wp-comments-post.php,将其改成第一步改后的那个名字(这里就是abc.php了)。

使用改方法能屏蔽掉大部分的垃圾评论。需要注意的是wordpress升级会在网站根目录下再次生成wp-comments-post.php文件,升级后需要将步骤1和2重新操作一遍;切换主题后应按步骤3操作一遍。