pingback和traceback

WordPress的Pingback 和 Trackback 是什么?有什么区别?

孤陋寡闻了,WordPress 中的留言有三种类型,分别是普通评论、Pingback 和 Traceback。啥意思呢?
Pingback 和 Trackback 都是别人对你文章的引用,两者有一些区别,大差不差。

什么是Pingback?

一般来讲 Pingback 类型的居多,因为这种引用是自动完成的,当别人的文章中引用你的一篇文章的地址时,你的Wordpress 就会给别人的网站发送Pingback,当别人的网站收到回复时,就会将 Pingback 的信息显示在别人的网站评论中。

当你在文章中引用另外一篇文章的地址时,Wordpress 就会给对应的网站发送Pingback,当这些网站收到回复时,就会将 Pingback 的信息显示在评论中。当然 ,是否显示 Pingback/Trackback 类型的评论完全由别人的网站自行决定。

Pingback这个功能中文解释是「引用」,当你的文章有引用别人的内容时(通常内容里有加上对方的超链接),一旦文章发表后,就会自动启动Pingback功能,这功能会发送一个Ping给对方,会以评论的方式呈现。发送Ping的对象取决于文章内所有的网址(超链接)。

Pingback的出现完全是为了解决Trackback的诸多问题。不过对于用户来说,最大的好处是,Pingback的使用是完全自动的,这也是我将Pingback译作“自动引用通知”的原因。当你在文章中加入了一系列基于WordPress系统的文章链接,并且发布文章后,你的WordPress系统会自动从文章中拣出链接并尝试向这些系统发出Pingback。这些链接所在的WordPress网站接受到Pingback后就会将Pingback信息显示在评论中。

Pingback是基于XML-RPC协议进行的开发的,Python中有现成的库支持。以下为搭建Pingback服务端和客户端的相关思路。

客户端实现:找出文章中所有链接,还要找出链接对应的xmlrpc(pingback) server;
调用该server的pingback.ping方法,把本文链接和对方链接作为参数传过去;
处理返回状态,记录下这次pingback的信息,这是为了避免更新文章时多次ping。
服务端实现:从过来的xml中解析出pagelinkedfrom(来源url)和pagelinkedto(被请求url);
根据pagelinkedto找出被请求页面post_ID;
抓取pagelinkedfrom网页内容,提取标题,并找出pagelinkedfrom的位置,并提取该位置附近的文字作为摘要;
将上一步得到的标题、摘要、和pagelinkedfrom添加到被请求页面的评论中;
上面任何一步出现异常都将终止流程并返回异常,否则记录该pingback状态,返回成功。

什么是Trackback?

Trackback最早是由MovableType博客系统的创建者SixApart在2001年开发的,通过在评论中显示引用者的文章链接和评论内容,实现了博客间的沟通互动,使得更多人加入关于一个主题的讨论。在出现Pingback之后,Trackback只是作为一个兼容旧式博客系统存在的功能。对于Trackback的一个比较清晰的解释是:

甲在博客上发表一篇日志。
乙在甲的博客上评论,也想让自己的访客看看评论内容,并让访客能在自己的博客上评论。
乙在自己的博客上发表日志,同时手工向甲的博客发送一个Trackback。
甲的博客收到了显示原始文章评论的Trackback,且评论包含了乙的文章链接和一段文章摘要。
Trackback的使用是完全手工的,并且通过HTTP POST协进行数据传递。由于Trackback目前仅是为兼容旧式博客系统而存在的,因此在WordPress中只在文章编辑页中保留了一个发送Trackback的小工具。

Trackback和Pingback的比较

Pingback和Trackback的作用是一样的,其中不同之处在于:
Pingback使用XML-RPC协议,而trackback使用HTTP POST协议
Pingback支持自动察觉,博客系统自动发现文章中的链接,并尝试使用Pingback方式通知这些链接;而Trackback必须手工输入所有链接
Pingback发送的文章摘要是链接附近的文章内容,而Trackback则完全需要手工输入摘要。