一、短网址的定义
短网址,Short URL,可能也叫短链接、短URL,是指短网址服务器为某个链接生成的中间链接。短链接并不是绝对的就比原链接短。
二、短网址的作用
减少字节数:有些URL是很长的但URL本身往往不是用户关注的,在微博和短信等场景中如果URL占了长长的篇幅这是很影响阅读体验的;使用短网址有效控制了URL的长度又能保证用过可通过URL到达设定页面。如下图所示:
隐藏真实网站:长网址保存了真实域名,比如一条短信说点链接可领某宝红包,如果使用长网址域名根本就不是淘宝的用户可能就不会点。使用短连接就能将真实域名隐藏起来,单从短网址上看用户不能知道是不是指向淘宝页面。如下图所示:
减少字节数是短网址出现的初始原因(更直接点是随微博140字限制兴起),隐藏真实网站是黑产在短网址出来后对短网址的利用。另外有些文章说好记也是短链接的一个好处,但其实短并不就代表好记就比如上图这个你真觉得短链接有比原链接好记吗。
三、短网址的实现
短网址不是无中生有的,短网址机制根本上是通过“短网址服务器+302重定向实现”。
3.1 短网址服务器
要生成短网址就需要有一台服务器,常见的短网址服务器有http://t.cn/和https://dwz.cn,可以看到很多短网址都是这两个服务器的。
当然短网址服务器这种东西,本质就只是将短网址还原为原网址,建个数据库一列短网址一列原网址再几条查询代码也就差不多了,完全可以自己搭一个。
其中关键点是在生成机制中保证不同原网址不会生成同样的短网址,可行的方法是对请求生成短链接的URL进行类似sha256之类的猜要算法,短网址服务器+hash值就可以构成短网址。
3.2 302重定向
不管点所谓长网址还是短网址,浏览器都一样用DNS协议去解析;所以点击短网址必须是去访问短域名服务器而不是原URL的服务器。
下面举个例子就很明白了,原网址是我博客的主页,短网址是其对应的短网址
原网址:http://www.cnblogs.com/lsdb/
下图是点击请求短网址的数据包及其返回结果(302重定向):
四、短网址生成
百度一下短网址,就有很多提供短网址生成服务的网站
谷歌收集:https://code.google.com/archive/p/shortenurl/wikis/URLShorteningServices.wiki
提供这服务的网站也不完全算公益,通过各短网址的解析数量可以获取各原网址的访问数量等信息。
另外我们点击百度搜索结果的链接,稍微观察地址栏就会发现,地址先是百度的网址后面才是转向目标页面的URL。这种操作的目的正是获取用户喜欢那些页面等信息。当然这并不是短网址也不是302重定向,只是顺便提一下。
https://dwz.cn/YzhlXOQZhttps://dwz.cn/YzhlXOQZhttps://dwz.cn/YzhlXOQZ