以前我介绍的asciiTBPingfilter插件是对没有汉字的留言和引用都按Spam来处理。感觉这个插件太「残酷」,不能因为极个别人的行为而将从老美过来的引用全一棍打死,这不符合我们传统的中华民族美德(放个小高调)!
3个星期以前我就将这个插件从我的MT上去掉,尝试了一些新的引用SPAM对策,到现在还没有收到一个引用SPAM,感觉很有效果,这里将我的方法总结为了三板斧:砍,躲,骗,介绍如下。
第一板斧:砍
首先要砍断SPAM进出你的MT的通道。
在「单篇日记归档」比较靠上的地方有个<$MTEntryTrackbackData$>函数,这个东西是做什么的呢?Sixapart的User Manual: MTEntryTrackbackData是这样解释的
Outputs the machine-readable TrackBack RDF for "pinging" corresponding to the entry.
也就是说,这个函数的用处就是为了让引用的URL地址能够被机械自动的取得。一个对想引用这篇文章投稿的人来说,是个很有用的功能,但是它却成为了Spam机器人的MT重要入口处。本人汉语水平臭,看不懂我说的没有关系,把这个<$MTEntryTrackbackData$>函数删除掉,重建一下你的Blog就可以了。
第二板斧:躲
切断SPAAM们的出路以后,再将自己的MT入口给躲藏起来。
参考车东说的给MT里现在的mt-tb.cgi这个引用文件改个任意的名字,例如mt-asdfafertfge.cgi什么的。然后在mt-config.cgi的下面追加下面字样
TrackbackScript mt-asdfafertfge.cgi
顺便给留言用的文件mt-comments.cgi也改个任意的名字,例如mt-asdfafertfge.cgi什么的,同样在mt-config.cgi的下面追加下面字样
CommentScript mt-asdfafertfge.cgi
修改完之后再重建一下自己的MT。如果你的MT里有很多Blog的话,就参考并安装路杨介绍的插件 PowerRebuild,可以非常简单的重建你全部的MT。
第三板斧:骗
砍完,躲完,最后再骗骗SPAM们,给它们指个死胡同去跑。
在「单篇日记归档」的引用通告那里,参考下面的字样进行修改,
<MTIfPingsAccepted><p>
TrackBack URL for this entry:
<input type="text" id="trackback-url" size="70" value="http://www.ikias.com/mt-tb.cgi/227"
onClick="this.select();" />
</p></MTIfPingsAccepted>
<script>
document.getElementById('trackback-url').value = ["<$MTCGIPath$>",
"<$MTTrackbackScript$>", "/<$MTEntryTrackbackID$>"].join("");
</script>
(上面实际上是没有改行的)
上面的http://www.ikias.com/mt-tb.cgi/227是个不存在的地址,也就是给SPAM用的一个死胡同,你可以自己任意去设置。上面的文法其实也很简单,正如路杨所说的由JS输出,这样的好处也是其高明的地方就是阻止SPAM机器人通过抓取网页来分析TrackBackLink。试着将你的IE或者Firefox阅览器的JAVA功能改为无效再来看引用通告那个地方,你会发现引用通告所显示的地址就是上面设定的这个http://www.ikias.com/mt-tb.cgi/227地址。
以上三板斧就全部砍完了。耐心的按照上面的说明去修改你的MT,会很有收获的。