2006年7月20日星期四

抓虾更新FeedBurner缓慢的原因

  我在使用抓虾的时候,发现一个很奇怪的现象,就是有时候抓虾更新FeedBurner的内容会非常慢。

  因为我自己的Feed是使用FeedBurner的服务,因此我对在线阅读器的更新时间还是比较注意的,通常情况下,FeedBurner的Feed更新了之后,Bloglines对其抓取是很快的,基本上是在一个小时以内,而抓虾有时候也会在一个小时内抓取,但是有时候却要花半天的时间才能抓取到新的Feed。

  其实这个现象我在其他国内阅读器上也见过,比如以前用过的gougou,有一段时间我发现gougou对于FeedBurner的Feed内容竟然长达半个月都不更新,看来这可能是一个普遍现象。

  原因是什么呢?

  根据我的分析,抓虾和gougou都是在国内,而Bloglines在国外,他们一起抓FeedBurner的内容,在网络正常的情况下,应该都是没有问题的,问题是Bloglines和FeedBurner之间的连接是始终通顺的,而抓虾和gougou与FeedBurner之间还隔着一道防火长城。

  因此我推测可能的原因是,当某个抓虾的爬虫去抓一个含有敏感关键字的FeedBurner的链接的时候,将会导致“连接被重置”,并且之后的几十分钟,从抓虾爬虫的IP到FeedBurner之间会一直不通,当下一次爬虫再去抓取的时候,又会“连接被重置”,于是这样反反复复,导致了抓虾始终难以继续更新FeedBurner,而Bloglines则不会出现这样的问题。

  如果验证的确是这个问题的话,那么抓虾可以使用以下方法来解决这个问题。

  方法一:抓虾爬虫使用国外的https代理服务器来抓取FeedBurner的内容,这样抓取的内容将经过加密,连接就不会再被重置了。

  方法二:将抓虾爬虫放在国外的服务器上去抓取FeedBurner的内容,然后定时和国内进行同步更新。同步的时候不要使用常用的http协议,而使用其他协议,如果要使用http协议,则同步的内容需要进行编码(比如用ZIP压缩或者使用XOR加密),这样也可以解决问题。

  为什么抓FeedBurner会有问题呢,比如www.technorati.com就是一个敏感关键字,为了访问technorati,可能有人会使用FeedBurner来烧录Technorati的Feed以访问Technorati(我就是这么做的),那么会不会产生Technorati这样的“非法关键字”导致“连接被重置”呢?当然所谓的非法关键字实在太多,也实在防不胜防。

  最后,我呼吁中国电信能将www.technorati.com从非法关键字的清单中清除,虽然我知道这样的呼吁通常是毫无结果的。