短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。
它的原理也非常简单,就是采用 Domain Redirect(域名重定向) ,将一个域名自动跳转到另一个域名。
根据wikipedia描述,短链接的方案最早在2000年诞生。在2009年11月,著名短链接服务提供商Bitly的访问量是21亿,可见短链接的使用需求是非常大的。
维基地址
而在国内,短链接的普及与微博息息相关。
最早是由新浪仿照Twitter的140短篇博文功能,上线了新浪微博,之后微博服务开始风靡全中国。一个有意思的小插曲是,据说新浪与腾讯争夺weibo拼音域名,最终新浪获得了weibo.com的使用权。
也是由于微博的风靡,产生了短链接的大量刚需,因为一篇微博只能写140字,如果发送一个超长链接非常占用字符数量,并且有可能140字符都容纳不下一条链接。
参照如下一条链接,数一下有多少字符:
http://baike.baidu.com/link?url=ZbFVNe9FDaoht-ZHu9snNTFPk2QEEWEz8-oFSkd4Fdo0pzPDwolG1tubpZ-bglJEDnqf6O4hIJ5dEIAW3IAQke3cyF-H3YmZ0EX65Z2xdjw1suMk56IxG-uNzAq9lI57M636J7FgNB5So2_1OPTk7oVe_5E_NhkiWlTqMpPpmxZj7m07Mk4UcL4HboQSF6Or
短链接服务产生后,应用非常广泛。例如:
- 一些网店、博客等,上传图片url时限制了字符数,使用短链接可以缩短url,保持url完整性。
- 网络转发url,越短的url越容易操作和传播。
- 为了区分用户来源,可以使用短链接做访问跟踪。
- 使用短链接,还可以隐藏原始url。
凡事皆有利弊,短链接除了产生诸多好处,也带来了一些麻烦。例如在邮件中,使用短链接形式的广告地址,可以避过垃圾邮件过滤。甚至,短链接还会带来安全隐患。
短链接的滥用,也促使一些服务商、个人,把短链接的域名加入了黑名单。
当然,本文不深入讨论短链接的利弊。接下来,我们八一八国内外常见的短链接。
如果你发过微博,你知道新浪家有短链接。如果你twi过tter,你知道Twitter家有短链接。BAT、Google、Twitter,这可都是大厂啊。到底他们的短链接是哪家强呢?
首先从大家熟悉的新浪微博说起吧。新浪微博的短链接域名为t.cn
我们先看看,什么样的url会被识别,并转化为短链接呢?
先来一个最简单的 http://www.baidu.com
微博发出来,如下图。这里默认隐藏了链接地址,只显示为网页链接
。
我们右键拷贝出这个地址,域名显示为t.cn,整个链接为 http://t.cn/h5mwx
访问该链接,网页即被重定向到baidu
Bingo! 这个url成功被识别,并自动转化为了一条t.cn的短链接
我猜测url的识别是通过协议头,例如http:// https://来识别的。好的,根据这个思路,我们再实验一条,这一次去掉http://
微博发出来
果然,这条url并未被识别,因此按照普通字符的形式发了出来。
那么,其他的协议头是否能被识别呢?我们试一下https://
https被识别为链接
再试一下ftp://
我们注意到,ftp://ftp.baidu.com/zhidao是一个有效链接,但并未被识别。
总结一下微博的短链接:
1.微博的短链接域名是t.cn
2.微博的短链接,仅识别http://和https://开头的url
另外,新浪已经开放了短链接的api。网上比较好的一个新浪短链接工具是aTool在线
aTool在线里,包含了短链接生成和反查询,以及访问数统计
说完新浪微博,不得不对比一下腾讯微博。腾讯微博的短链接域名为url.cn,那么它与新浪有哪些异同呢?
首先仍然是最常见的链接, http://www.hao123.com
url被成功转换为短链接
再换一个ftp://ftp.baidu.com/zhidao
ftp://开头的url识别成功。腾讯的技术还是比较严谨的哈
同样,我们把http://协议头去掉
这个url未识别。看来普遍采用的方案,就是识别协议头了
那么我们再实验一种情况,如果url是目前不存在的呢?
url被转换为url.cn短链接。可见,短链接方案通常不识别链接有效性。
兴趣来了,咱们再实验一种情况。假如两个人分别分享同一条链接,转换的url.cn是否相同呢?
仍以hao123为例
两个账号相同发送相同url,转换后的短链接相同。可见,腾讯微博并未将短链接与账号关联,这也降低了技术方案的难度和资源消耗。
依然总结一下:
1.腾讯微博的短链接域名为url.cn
2.腾讯微博的短链接,能够识别常见的http、https、ftp等协议头
3.腾讯微博的短链接与账号无关
4.腾讯微博的短链接生成时,不检查url有效性
前面已经对比了新浪、腾讯两大微博,因此不得不提到Twitter。Twitter的短链接域名为t.co
由于国内Twitter被墙,这里不再详细介绍它的短链接。仅说两点有意思的地方
1.是Twitter能够正常识别www.baidu.com形式的链接
推文中显示出了正常链接。实际上它已经被转换为短链接
右键将url拷贝出来,看看真相
2.更有意思的是,www.baidu.com与http://www.baidu.com被视为相同内容,并且不允许重复发送
twitter能够识别www.baidu.com形式的常见链接,这个令我比较佩服,很用心
吧啦吧啦说了一大堆,各位看官烦了没?如果还有兴趣,继续看,google的短链接做到了那些事情。
google短链接的域名是goo.gl。注意,谷歌在国内的访问并不稳定。
google短链接与微博等不同的一点是,它是一个的独立工具,而不是依附于社交产品的附属产物。
这一点非常重要:微博等产品中的短链接,是基于传播信息的需要,把url转换缩短,仅此而已。而google基于工具的思路,因此决定了它更优秀的一些特点
1.首先,google短链接有独立的访问页面,独立的域名。
google短链接入口
2.google短链接页面干净简洁,并不掺杂社交、广告等内容
3.未登录google账号,也可以使用
4.登录google账号时,可以保存生成短链接的历史记录,并进行访问跟踪
5.不同账号之间,同一个url转换生成的短链接不同,这样可以区分访问跟踪。未登录google时,更换浏览器,同一个url也会生成不同的短链接,猜测是根据浏览器、电脑属性等识别了唯一的游客身份。
介绍了goo.gl诸多特性后,我们依然来做一点技术分析
a. goo.gl对url的形式保持开放态度,来者不拒。 a.b
以及 我可以
这样的字符串依然可以生成短链接,也就是说完全不对url进行任何校验和限制
b. 别忘了我们刚刚提到,不同账号之间,甚至不同游客之间,同一个url会转换成不同的短链接。这对于数据处理来说是有一定挑战的,当然我相信对于谷歌来说这真是缺乏挑战
- 短链接的存储,从简单的 url-短链接 对应关系,变成了 账号-url-短链接 对应关系
- 数据库表如何设计,才能兼顾 存储、查询、账户信息合并、访问统计
- 另外一个与短链接无关的,就是:在多种电脑、多种浏览器、甚至现在多种移动终端的形势下,谷歌如何track游客用户
整体来说,goo.gl还是做得很用心,只是在国内的话需要慎用
既然说到谷歌,就对比一下百度的短链接服务吧,地址 http://dwz.cn/
1.注意谨防伪冒,百度短链接页面如下图
而百度搜索推荐的居然是一个冒牌的服务 http://baidu.nu/ !!!
当然这个服务做得也还可以,可以自主选择多种域名
2.百度短链接无账号区分,一个短链接生成后即形成 url-短链接 对应关系
3.百度会验证url有效性
4.百度短链接可以自定义后缀
5.已经存在的url,不能再自定义后缀。可见百度 url-短链接 是一对一的存储关系
总结一下百度短链接服务的特点
1.百度短链接的域名是dwz.cn
2.百度短链接会识别url有效性
3.百度短链接是 url-短链接 一对一的映射关系
4.百度短链接可以自定义后缀
5.百度短链接开放了api,可以基于百度开发自己的短链接服务
整体来说,除了无法统计这一点略显不足,整体质量与goo.gl也是不相伯仲的
以上介绍了几款短链接相关的产品。整体来说,百度、google的短链接服务还是比较值得信赖的
除了大厂的短链接服务外,还有一些第三方的做得不错,例如:
http://www.atool.org/shorturl.php aTool工具
http://baidu.nu/ 上面提到过的,百度冒牌服务
http://t.im/ t.im短网址
https://bitly.com/shorten/ 国外老品牌,bitly
还有一个关于短链接有意思的话题是,短链接是否会被搜索引擎抓取呢?
答案是NO。至于搜索引擎如何做到识别并筛选短链接,有兴趣的可以查阅一下资料
这里有一篇网址在讨论这个问题
http://www.quora.com/Does-Google-crawl-http-goo-gl-shortened-URLs