用MT-Keystrokes防止垃圾留言

  • Posted on
  • by

Movable type作为一款强大的blog软件,却有着让人诟病的缺点:脆弱的防垃圾留言能力。虽然自带的防spam功能基本可以防止垃圾留言在前台显示,但是每次要在后台大把删除spam实在是一项让人厌烦的工作。和垃圾留言的斗争从来没有停止过,除了对留言进行评分,让用户填写图形验证码,还可以通过对用户留言的行为进行分析,来防止spam。MT-Keystrokes就是这么一个防止spam的插件。

MT-Keystrokes防止spam的原理在于通过分析留言的行为,判断是否为spam。如果是正常留言,用户总是要有点击的行为,如果是bot批量留言,就没有这种行为。这样就可以防止垃圾留言并且不会影响用户体验。

MT-Keystrokes安装比较简单:

1. 上传文件

将代码解压缩,将主要的插件文件keystrokes.pl上传到安装目录下面的plugins文件夹。对于动态生成模板的需要将function.MTKeystrokes.php上传至/php/plugins路径。

2. 修改模板

每个有留言表格的模板都需要修改。默认安装的情况下,留言表格位于Individual Archive这个模板。找到留言表格的位置,就在表格声明的后面插入<$MTKeystrokes$>标签。比如:

...
<form method="post" action="/mt/mt-comments.cgi" name="comments_form">
<$MTKeystrokes$>
<input type="hidden" id="entry_id" name="author" />
<input id="author" name="author" />
...

接下来需要在留言表格的文本区调用javascript脚本. 脚本函数名为keystrokes,参数是当前的表格。如下:

...
<label for="text">Comments:</label>
<textarea id="text" name="text" cols="50" onkeypress="keystrokes(this.form)"></textarea>
<input type="button" onclick="window.close()" value="Cancel" />
...

由于有的用户会在其他的编辑器编辑好后复制,粘贴然后提交,于是这里增加了提交按钮点击检查:

...
<input type="button" onclick="window.close()" value=" Cancel " />
<input type="submit" name="preview" value=" Preview " />
<input type="submit" onclick="keystrokes(this.form)" name="post" value=" Post " />
..

这样,插件就安装好了。该插件允许通过修改代码进行设置是否对所有的blog进行同样的设置,以及是否将spam的记录写入Activity Log。

用这种方法防止垃圾留言,这里半年来还没有落网之鱼。

download