短链接小知识科普:随处可见的短ID和短网址
在日常生活中,我们经常会遇到短ID和短网址。这些短链接在我们看似繁琐的信息传播过程中,起到了关键的作用。下面我们将通过两个生活场景来详细解释短链接的工作原理和优势。
生活场景一:收到快递短信查询物流信息
早上收到快递小哥的短信说快递被放在了A地的丰巢快递柜,然而这个快递柜我并不知道在哪里。于是想到用快递单号查询一下物流信息,但是这个快递单号是长达14位的十进制数字。当时就很纳闷,为什么要用14位长度的10进制数字来表示单号?站在快递公司的角度我做了如下推测:
1. 可以从单号快速知道物品发货时间?(貌似没有看到时间线索,除非做了编码,但是应该不会...)
2. 可以从单号获得起止地点?(可能是内部地点编码 反正消费者不关心)
3. 可以从单号获得相关人员信息?(可能是内部人员编码 反正消费者不关心)
到这里,我暂时没有找到为什么必须使用这么长串数字的理由,于是搜狗一下(不是百度一下),看到这个问题:确实有一样疑问的人,但是对于这个回答算是同意一半吧,核心意思是为了去重,不过做法有些因噎废食了。
生活场景二:双11临近手机上的推广短信
双11临近手机上的推广短信也越来越多,典型的短信,其中的显示的网址都很短,和前些年的连接不一样,因为前些年的链接大概和一根挂面那么长。好奇地点开了其中一条淘宝的短信,然后跳转了:可以看出来短ID和短网址在生活中是普遍出现的,作用也非常明显,比如微博这种有140字限制的,粘贴一个链接可能花掉了100个字;对于推广商发送短信按照字数计费,同样的长网址进行相同数量的推广,产生的通信费可能是短网址的数倍。综上可知,短网址和短ID相当于间接提高了带宽的利用率、节约成本。
短网址和短ID的原理
1. 六十二进制表示法
前面提到的快递单号和短信链接就引出了今天要说的短网址和短ID,顾名思义短网址就是非常短的网址,比如http://t.cn/EXyAO7T,其中核心的部分EXyAO7T只有7位长度。其实这里的7位长度是使用62进制来表示的,就是常用的0-9、a-z、A-Z,也就是10个数字 + 26个小写 + 26个大写 = 62位。那么7位长度62进制可以表示多大范围呢?62^7 = 3,521,614,606,208(合计3.5万亿),这样的话只要算法得当,短网址冲突的概率就很低了。至于短网址的长度可以根据自己需要来调整,即使6位长度62^6也能达到568亿的范围,所以回答了上面快递单号的问题。
如果有弱加密需求且不想让人明确知道转换前是什么,使用方可以按照自己的需求来调整62进制各位代表的含义。例如,A站点将字母c表示32,B站点将字母c表示60,这样就相当于拥有一个密码本。
2、更大进制表示法
看到这里你或许会说,使用108进制(如果有的话)岂不是网址更短?是的,但是108个进制可能会出现大量的不常用字符,如#、%、&等。通用性和记忆性会变差,而62进制则是一个权衡折中的选择,已经足够无需过多设计。
关于跳链
当打开淘宝的短网址时,页面出现了跳转并出现了新的页面,但浏览器显示的新网址并不是你打开的短网址。这意味着发生了301/302跳转。
http中的返回码301表示永久重定向,即短网址和长网址是一一对应的;返回码302表示临时重定向,可能过段时间短网址就会失效。由于数据统计和活动临时性等特性,302短网址应用更多,但过分使用也会降低主站点的SEO排名。
因此,在平时站点搞活动或分享页时,短网址应用较多,微博、淘宝、微信等平台基本上都是短网址。
短链接的安全性
虽然短链接便于传输和记忆,但由于位数较少且无明确站点信息,容易受到猜测攻击和钓鱼攻击。例如,一些黑基站发送短信,如果是短链接点开就可能跳转到非可信任网址。因此,不建议使用短链接发送或传输核心敏感数据。即使传输,也要做好权限鉴别和加强安全处理。软件工程没有银弹,还是要辩证看待。
结语
本文并未对如何保证短链接和短ID唯一性、生成算法、鉴权等方面进行详细介绍。仅作为抛砖引玉之用。在国内短链接平台中,首屈一指的当属缩我短链接了。该平台已稳定运营十年,连通性高,始终坚持免费。