Google 的 Blogger 不像 WordPress,后者提供了一个方便的 Update Service,只要将 Blog 服务商公布的 XML-RPC 接口地址填进去就可以方便的在发布的时候 ping 这些地址。Blogger 只是在 Settings » Basic 有一个“Add your blog to our listings?”的选项,解释说选择了“Yes”,Google Blog Search 以及 Weblogs.com 就会来收录,除此之外并没有一个可以设置 ping 接口地址列表的地方。
我强烈怀疑 Blogger 这个选项的作用,因为曾经有很长一段时间 Google Blog Search 都没有收录我的文章,后来为了确保收录效果,每次发布文章后我都手工 ping,于是通常 5 分钟内文章就会被收录,而 10 分钟左右,Google 的网页搜索也会收录这篇文章(观察到的最快纪录为 8 分钟)。但是每次都要手工去 ping 确实很麻烦,于是今天就琢磨着自己用 PHP 写一个简单的 XML-RPC 客户端来做这个工作,顺便还可以把其它主流的 ping 服务地址加进去,批量执行。
结果是不试不要紧,一试吓一跳。我参考 Weblogs.com 和 Google Blog Search 提供的标准 ping 操作 API 文档写了一个 XML-RPC 的客户端,测试了一下主流的 ping 服务地址列表,发现其中有很大一部分都不能正常工作。
以下就来一一看一下 ping 这些地址得到的具体结果。http://blogsearch.google.com/ping/RPC2
http://rpc.pingomatic.com/
http://api.my.yahoo.com/RPC2
http://api.moreover.com/RPC2
http://rpc.newsgator.com/
http://rpc.weblogs.com/RPC2
http://www.feedsky.com/api/RPC2
http://ping.feedburner.com/
http://rpc.technorati.com/rpc/ping
http://ping.blog.qikoo.com/rpc2.php
http://blog.iask.com/RPC2
http://www.xianguo.com/xmlrpc/ping.php
http://www.zhuaxia.com/rpc/server.php
以上这些地址中,能够完全按照标准 API 正常工作的有:
以下是其它有问题的 ping 接口的具体情况。http://blogsearch.google.com/ping/RPC2
http://api.my.yahoo.com/RPC2
http://api.moreover.com/RPC2
http://rpc.weblogs.com/RPC2
http://rpc.technorati.com/rpc/ping
- http://rpc.pingomatic.com/
- 这是一个十分有名,被博客界所有人争相 ping 之的地址,但是,真的有人见过它返回正确的结果吗?我试了很多次,无论是请求
weblogUpdates.extendedPing
方法,还是weblogUpdates.ping
方法,无论是提供两个参数还是三个、四个参数,它返回的 HTTP 头永远只会是“501 Not Implemented
”,正文部分没有任何内容。我另外还试了http://rpc.pingomatic.com/RPC2
和http://pingomatic.com/
两个地址,得到的结果一样。 - http://rpc.newsgator.com/
- 这个地址存在大家的列表中,我感到非常诧异,因为这个域名都已经不存在了,我换了很多个 DNS 服务器都不能解析出它的 IP 地址。后来发现了 NewsGator 的另一个 ping 接口:
经过测试,这个是可以正常工作的。http://services.newsgator.com/ngws/xmlrpcping.aspx
- http://ping.feedburner.com/
- 起先 FeedBurner 的接口很长时间都不返回,纳闷了很久;细查之下,发现 ping.feedburner.com 这个域名做成了 feeds.feedburner.com 的 CNAME 纪录,而众所周知后者已经被墙,所以实际上这个 ping 接口是没有办法直接通知到的,除非发起 ping 动作的客户端在国外运行。
- http://www.feedsky.com/api/RPC2
- Feedsky 趁着 FeedBurner 被封在国内很是火了一把,可是做事情的态度和质量还是和人家有差距。首先是没有实现
weblogUpdates.extendedPing
方法,而在请求weblogUpdates.ping
方法时,返回的结果也很不稳定。有时是正常的结果,有时会以错误码 304 将整个 Feed 的内容放在 message 字段中返回,有时又干脆什么都不返回。 - http://ping.blog.qikoo.com/rpc2.php
- 这个似乎是奇虎官方给出的地址,而几乎网上搜到的所有 ping 列表中都有它。奇怪的是,这个地址根本打不开,HTTP 状态码为 404。我曾经猜测是不是大家在传抄过程中不小心弄错了大小写,于是也试了 RPC2.php, RPC.php, rpc.php,结果都是 404。
- http://blog.iask.com/RPC2
- 新浪这个表面看起来很不错,相应速度很快,返回的 XML 格式也很标准。可是无论怎么提交,返回结果都是
flerror: 1; message: sorry,failing
。以至于让我怀疑,这个接口背后的后台程序真的有在运作吗? - http://www.xianguo.com/xmlrpc/ping.php
- 发出请求大约 5 秒钟后,返回如下内容:
怎么?PHP 的扩展库都还没配置好就当公共运营的服务器了?而且还直接把错误信息输出到页面上,服务器路径信息一览无余。鲜果啊鲜果,让我说你什么好哇!Fatal error: Call to undefined function xmlrpc_server_create() in /opt/lamp/code/common/rssreader-common-2008-11-12-14-31-18/topgene/feed/xmlrpc/server.php on line 15 - http://www.zhuaxia.com/rpc/server.php
- 抓虾比鲜果好点,至少还返回了,只不过不知道返回的是啥。返回结果如下:
如果说你看不懂 Weblogs.com 的英文文档倒也情有可原,但是照着 Google 的中文文档依葫芦画瓢总会吧?自己想当然的随便弄一下就完事了?<?xml version="1.0" encoding="utf-8"?> <methodResponse> <params> <param> <value> <boolean>0</boolean> </value> </param> </params> </methodResponse>