此文仅是原理说明,具体防SPAM的最终策略请看:
“防SPAM的策略(最终版):使用JavaScript对付SPAM”
一般SPAM机器人都是通过抓取网页来分析TrackBackLink。而抓网页的SPAM机器人一般都是不会去解释js的,所以我们可以通过JS对他们进行欺骗,让它们只能获取部分(不真实的)TrackBackLink。考虑到大多数垃圾引用都是来自国外,建议在JS后面进行中文注释说明。
依照这个原理我们可以用以下方法进行“不解释js提供不真实的引用地址”
1、安装TCode for MT:
下载该插件,官方版本为CCode and TCode for MT 3.3 version,其中CCode为垃圾评论防护,我觉得“防垃圾评论的策略(1):安装Keystroke Plugin”已经完全够用了,所以将CCode禁用了。
然后将CTCode-3.3.01\default_templates\obfuscator.js 文件的内容,添加到MT默认模版中default_templates/site_javascript.tmpl 文件的末尾(或者直接添加到用户模版Site JavaScript mt-site.js中去),然后刷新模版即可。具体原理介绍可查看路杨的介绍。
2、直接修改JS欺骗机器人,在“单篇日记归档”和“系统引用列表”的引用通告那里,对下面的字样进行修改,但比TCode for MT好的地方是,你的不真实地址不在是MT默认的TrackBack地址,这样可以减少SPAM对系统的破坏。
将:
<MTIfPingsAccepted><p>TrackBack URL for this entry:<br />
<$MTEntryTrackbackLink doentity="1"$></p></MTIfPingsAccepted>
其中的<$MTEntryTrackbackLink doentity="1"$>标签是通过防SPAM的策略(2):doEntity插件的修改结果,2和3一个是针对网页源码,一个则是针对JS。其实在CCode and TCode for MT大力推广期间,我想机器人也会随之优化,所以我在最终版中的方法不使用Tcode插件。
改为:
<MTIfPingsAccepted><p>TrackBack URL for this entry:<br />
<input type="text" id="trackback-url" size="70" value="http://lblog.org/mt-tb.cgi/217"
onClick="this.select();" /><br />(只有允许当前页面的JavaScript 才能查看到真实的引用链接)
</p></MTIfPingsAccepted>
<script>document.getElementById('trackback-url').value = ["<$MTCGIPath$>",
"<$MTTrackbackScript$>", "/<$MTEntryTrackbackID$>"].join("");</script>
(上面实际上是没有改行的)
上面的http://bblog.biz/mt-tb.cgi/217 其实是个不存在的地址,而真正的引用JS是通过下面的JS给予显示的。
你可以试着将IE或者Firefox浏览器的JAVA功能改为无效再来看引用通告那个地方,你会发现引用通告所显示的地址就是上面设定的这个http://bblog.biz/mt-tb.cgi/217地址。











