抵御留言spam

关掉Bad Behavior后,Akismet平均每天能拦截下六七十个spam,让人极其不爽。
所以又开始关注抵御spam的plugin和hack。最近香港的wordpress user提到的解决方法之一,使用.htaccess编辑rewrite规则,可将spam拒之门外。但使用到.htaccess,也注定这个方法具有一定的危险性,一不留神,可能是500报错。
在逛v2ex时得到一个启发,得出一种抵御留言spam不错的方法,经过一天的试验,可以基本保证留言spam不再发生。但此方法只能抵御留言spam,不能抵御trackback和pingback。
原理就是spam留言机器人,是不会打开javascript的。所以如果你关闭了javascript将无法在冰古blog中留言了。
由下图可看到akismet收集到的spam都是trackback
fight comment spam

修改方法:
在模板comments.php页中查找textarea标签,如冰古blog的:

<p><textarea name="comment" id="comment" cols="70" rows="10" tabindex="4"></textarea></p>

用下面的代码覆盖:

  <script type="text/javascript"><!--
document.write("<p><textarea name=\"comment\" id=\"comment\" cols=\"70\" rows=\"10\" tabindex=\"4\"></textarea></p>");
  //--></script>

DONE!

BTW,冰古blog也用上了ajax留言
Update:看来这个还不是很完美,第二天出现了留言spam。但两天的spam总数为21,已经大大改善。