RSS循环抓取了…
星期天, 八月 19th, 2007我在试用在线RSS阅读器的时候就订阅了自己blog的RSS feed。刚开始的时候是好的,但是最近发现这个新的blog的RSS不更新了,而原来的space的RSS是好的(我是两边同步更新的)。开始以为是在线阅读器抓取的延迟,就没注意。今天仔细研究了一下,原来是我犯了一个大错。 我的RSS feed是用Feedsky 烧录的,然后我为了图方便,就使用了FeedBurner FeedSmith这个插件。这个插件本来是为了FeedBurner做的,它的用途是把你的网站的各种订阅流量都通过FeedBurner的烧录地址来输出。我以为以Feedsky和FeedBurner服务的相似性,这个插件是可以通用的,当时还粗略看了一下它的源码,它是通过将所有订阅地址都用307跳转到你指定的FeedBurner烧录地址来实现的。当时也没多想,就用了。 今天一想,才发现这样一来我的RSS就循环抓取了site_RSS_feed->Feedsky_feed->site_RSS_feed。这样我的这个blog的RSS feed信息就停留在那个时候再也没更新过了... 现在把那个插件停用了就好了。在仔细看了看那个插件的源代码,在最后看见了这样一段 [sourcecode language='php']if (!preg_match("/feedburner|feedvalidator/i", $_SERVER['HTTP_USER_AGENT'])) { add_action('template_redirect', 'ol_feed_redirect'); add_action('init','ol_check_url'); }[/sourcecode] 原来它通过判断user agent已经过滤了FeedBurner的抓取,在FeedBurner来抓取的时候就不进行重新定向了。如果还想把这个插件用到Feedsky上只需要把上面代码中的“feedburner|feedvalidator”换成Feedsky抓取时候的user agent就可以了。 顺便说说Feedsky吧。今天仔细看了一下它的管理工具箱,发现还是有不少有用、有趣的功能的。有简单的聚合功能,可以聚合你某些网络标签和网络相册;还可以绑定你自己的域名作为feed地址;而且如果你喜欢个性,可以通过一个开放的API编写Feed互动文件,为你的feed添加自己想要的功能,这个很禶^_^ 不过给Feedsky提个意见:可以对用户提交的Feed互动文件进行审核,这样可以检查这些些Feed互动文件可能会含有的恶意代码。对于审核通过的Feed互动文件保存至Feedsky自己的服务器上来给用户使用,这样一方面是防止它被修改,另一方面也提高了这个Feed互动文件访问的稳定性。
