2006年6月29日星期四

正确理解Traceback的含义

  Traceback是Blog的一个重要特性,然而由于TraceBack的歧义性导致不少人都没有真正明白TraceBack的用途。

  Traceback Ping在blog系统中广泛使用,简单说来,Trackback是网站与网站之间互相通告的一种方法。例如,当你读了一篇日志,想对此写下自己的感想,您可以把新的日志内容写到自己的博客上。然后向原来的那篇日志发送一个引用通告。通过这种办法,在原始文章的下面就留下了你自己博客中的日志的链接,这样对于同一个话题的讨论,可以不局限在一个博客中了。

  Traceback在中国大部分被翻译做“引用通告”,因此带来一个很大的误解,不少人将TrackBack理解为引用地址,我经常收到一些莫名其妙的Traceback,点过去一看,原来只是转载我的文章而已,这显然是错误地理解和使用了TrackBack,将其误以为是“引用”的含义了,事实上TrackBack不是这么使用的。

  举个例子来说明一下。比如你在我的月光博客中看了一篇感兴趣的文章,对这篇文章你自己有一些看法,但是如果你写的文字较多的话,通常会超过评论字数的限制,这时候你可以在自己的Blog中写下看法,这样带来的好处是字数不受限制,而且还利于以后维护,但是你怎么告诉我你写了这个评论呢?如果没有Traceback的话,你只能将你的链接URL地址回复在评论上,但有了Trackback Ping,就不再需要这样做了,你只要通过Trackback将你的文章信息Ping过来,我的Blog系统会自动接收来自其他Blog网站Trackback Ping,并将其发布到文章中,这才是Trackback的正确用法,可惜国内大多数Blogger还没有形成正确使用Trackback的习惯。

  Trackback在中国这个特殊环境也会产生一些问题,就是Trackback Spam(垃圾引用),实际上和垃圾留言一样的性质,但是由于Trackback的特点,又难以按照垃圾留言的方法进行处理。

  Trackback的协议本身很简单,没有验证的功能。只要你发送一个合法的Ping过来,程序是必须接收的。只要找到执行这个功能的程序文件并且找到每一篇文章引用地址的规律就可以大量发送Trackback Spam(垃圾引用)了。目前Z-Blog的Trackback非常有规律,很容易被Spam,我能做的只有使用nofollow标签来处理,无法解决根本问题。

  当然解决问题也不难,就是我们在生成Trackback地址的时候,增加一个加密的校验码,比如对于文章ID的一个特殊的MD5摘要,将这个无规律的字符串放在Trackback地址中,这样如果别人发过来的Ping中该校验错误,就可以认为是Spam,否则则认为是正确的Ping。这大概也是MSN Space的Url看起来特别奇怪的原因之一了,以后我要是有时间的话,我会写一些具体的Z-Blog的实现代码来完成这个功能。