fanfou vs twitter, base64 vs tinyurl?
在fanfou上与网友分享链接时,链接表面显示的是你所输入的网址,可是,这只是障眼法;实际上,当你点击链接时,fanfou是按如下格式把你带到目的地的:
http://fanfou.com/linkto/aHR0cDovL3poYXNtLmNvbQo=
仿佛是你给了A地的女朋友一张地址纸片,约她按纸片上的地址到B地找你。可是,她上了出租车,司机却从A地出发,绕经C市,才又到达B地。明明A到B有直线可以经过,为什么还要取道C地呢?女朋友并没有因此而来迟多少时间,可好奇而细心的你却想弄清究竟。
我怀疑linkto之后是加密了的网络地址。至于加密算法,既然大小写并存,还有等号在里面,那么80%是base64了。验证之后,果然如此。我把另外一个网址也做成fanfou的格式,如下:
http://fanfou.com/linkto/aHR0cDovL2NvZGUuemhhc20uZ29vZ2xlcGFnZXMuY29tCg==
至于什么是base64算法,可以参考这里,此文言之甚详:老罗的矛与盾的较量(4)——奇妙的Base64编码
至于为什么fanfou采用base64,推测如下:
- 为了使网址格式统一,
- 更美观,避免出现乱码
- 被访页面从统计工具上显示页面来源是fanfou,可以增强fanfou的知名度,满足fanfou的虚荣心
- 这种算法速度较快,可以迅速生成,立刻指向。
- 这种算法可以起到简单的加密作用,同时解密也简单(可逆)。
但是,这种方法造成的后果是,fanfou所生成的地址太长。
例如,请对比下面的原始网址和fanfou链接:
http://3.1415926535897932384626433832795028841971693993751058209
74944592.com/
http://fanfou.com/linkto/aHR0cDovLzMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzg
zMjc5NTAyODg0MTk3MTY5Mzk5Mzc1MTA1ODIwOTc0OTQ0NTkyLmNvbS8
好了,fanfou的事情告一段落,那位司机师傅也清白了:他没有私自带着别人的女朋友去不可告人的地方,而是统一按公司规定,先向公司告目的地,然后从公司取得统一的行程安排,所去的地方正好是原来的目的地。整个过程是安全而透明的,事先有计划,事中有记录,事后可追溯。
我们再来看一下fanfou的国外兄弟twitter是什么解决出租车路线问题的。
我把本文原创作者rex.zhasm的blog地址放入twitter,所产生的链接是:
http://zhasm.com
把刚才那个pi的超级变态网址放进去,仍然是原状:
http://3.141592653589793238462643383279502884197169399375105820974
944592.com
于是,我又进行更血腥暴力的实验:
地址放入twitter 中,产生的新的链接是:
之后把一个新浪博客的文章扔进去,链接还是tinyurl的。
原来是这样呀。我们对twitter作了不完全调查统计,至少有一部分网址转向符合以下规则:
- 如果网址是一级域名,即使长一些,也要完全显示。
- 如果网址是二级域名,或者是一级域名引申出来的链接,那么把链接改成tinyurl格式。
如果还用出租司机的例子做类比,就变成这样了:
司机先看看你去的地方是不是不拐弯能到的。如果您从长安街东头,一直坐到长安街西头,那么司机很爽快地把您送到目的地;但是,如果您要在中途拐哪怕一个小弯,对不起,咱做不了主,您得登记,按行业规定的路线送过去。
至于路线的安排,则是由tinyurl来制定。它所制定的路线是最短的,无论是http://zhasm.com这样短的路线,还是像刚才的pi一样的路线,都能压缩成http://tinyurl.com/yveppt这样短。
tinyurl这样的做法,其算法应该是不可逆的,根据所输入网址hash出一个N位的关键码。(不分大小写的英文字母,数字)。根据简单的数学原理,N=6时所记录的容量是:
36^6=2,176,782,336,即2个billion多。
根据一篇道听途说的文章: 第19次互联网报告之中国网页总数44.7亿个(2007年01月23日10:13)。 但是你想想看,一天看一百篇文章,能有几篇值得分享。大多数搜索出来的文章都是过眼烟云的垃圾。退一万步讲,tinyurl不够用了,我们再使用更短的一级域名来支持,(例如g.cn之类),稍长一些的关键码,因为36的10次方是3,656,158,440,062,976,一个让人数半天不知怎么念的数字。
总之,以上数据表明,如果使用tinyurl,是前途光明的。具体到twitter和fanfou中,自觉使用tinyurl也是立见其利:如果说一句话时非得包括一个长长的地址,你在tinyurl的亲切关怀下就能表达更多的内容,在140个汉字或140个英文字母中所提供的信息量越大。何乐而不为?
为什么fanfou不用tinyurl呢?猜测如下:
- 技术要自己研发,用着才踏实。
- 国外网站有被hexielization的危险。
- 如果要支付高额成本,价格问题谈不拢。
- 该技术或需大量硬盘,或需大量带宽,同时其利甚微,不值得做。
- 跟宗教一样,源自外国,到了中国,即自成具有中国特色的体系,不受外国教皇控制。
- 与国情相似:国外酌情搞外包,国内事无事无巨细,一概小而全。
- 现有模式就挺好。用户没有觉得不方便呀。


关于饭否的超链接问题我也曾经注意过,就是每次点的时候在地址栏里总是先出现一个以fanfou.com开头的地址,然后才转到目的地址。当时也只是疑惑了一下,并没有深究。经你这篇文章一分析,才知道其中的奥妙!
真佩服你对问题钻研的劲头!赞一个!
的确是应该赞一个,发现问题解决问题而不是把问题堆着,好,学习ing……
感谢朋友们前来赏光留言:)我的虚荣心得到了极大的满足,呵呵
模板和阅微堂的是不是有点区别?
在那里点日期里的文章时顶上的日期文章那块不会变,下面的文章会更改
这里则是重新刷了个新页面
是阅微堂提供的。不过,阅微堂自己的版本是更新过的,我只是上一个版本的follower,功力还不足自己修改定制,呵呵。
正在研究中~谢谢分享心得
不客气,请常来!