网页短链接实现原理探究

SEO知识 战车网 12浏览 0评论

事情是这样的,今天一人问我一个问题,但是我懒得在说,就在网上找了一篇博客通过QQ发送给他,但是在发送链接时我发现之前很长的链接变成了短链接,且这个短链接能够正常访问之前的长链接,好奇之下就有了这篇文章.

我的理解就是通过一定的算法和技术实现将原本很长的网址转换为较短的网址,从而便于用户记忆和在互联网上的传播.常用于有字数约束的微博,二维码等场景.

大致流程是这样的:我复制(输入)了一个长链接,通过腾讯服务器的转化后得到一个以开头的短链接,然后我可以将该网址在互联网上进行分享和传播,其他人在访问该短网址可以进入到之前原本长网址对应的页面.

通过一定方式将任意长的文本转化为一个固定长的字符串,只要目标文本长度适当,那么我们对于不同的输入通过哈希几乎(注意是几乎)不可能得到对应同一个字符串.通过对长链接进行Hash运算,将Hash值作为这个长链接的唯一标示.但是通过Hash实现可能会造成碰撞.不一样的长网址缩短成了同一个短网址,那也就做不到复原了.

对于碰撞问题,有一种缓冲方法就是在呈现碰撞了以后后边在增加随机字符,随机字符的增加能够缓解碰撞的疑问,但是这终究是一种缓冲的办法,没有彻底解决碰撞.

原理:当服务器接收到一个网址时首先检验这个网址在服务器中是否再存,如果不存在,存储这个新网址并分发一个id,这个id设置成自增,保证了每一个存储的网址的id都是唯一标示.比如上面的,当一个链接过来时,给这个链接发一个0,再有一个链接过来时,给后面这个链接一个1,以此类推.

数据实现:我们发现短链接后面的参数好像都是定长的,但是如果通过id进行时,参数不定长,且随着id的自增,可能会出现这种情况:10000000.我们可以将十进制的id转化为多进制,比如在以0-9a-z这36个字符表示的36进制中,一亿可以被表示为1njchs,基本实现不重复够用.如果数据量更大,我们可以采用62进制进行转化:

短址的长度一般设为 6 位,而每一位是由[a – z, A – Z, 0 – 9]总共 62 个字母组成的,所以 6 位的线亿种组合。

对于小型系统,简单的mysql系统的表自增索引即可实现(注意自增id数据类型,int只能到65535)

我使用mysql简单建了一张表,用于保存长网址的数据,只有两个字段,一个是主键用于保存id,一个url字段用于存放原始的长网址.在进行长网址转换时,先检查数据表中是否存在该长网址,如果存在直接获取该记录的id,否在创建一条新的记录并返回该记录的id,对于这id进行进制转化处理后拼接到准备好的域名后面得到一个对应的短网址返回给用户.

采用自增序列的好处就是简单好理解易操作.但是由于id随着增大长度不固定,但是这个问题可以通过让id从指定的数字开始递增即可以解决.还有一个问题就是我们使用的短码是有序的,可能会存在安全方面的问题.当然相关的防护手法也有很多,比如签名验证之类的安全策略;我们也可以自己实现安全手法,比如从一个随机中心值进行开端计数,然后选用一些校检位算法计算出固定位的校检码,将其连接起来,得到固定长不递增的短码.

第二种算法存在碰撞的问题,虽然产生重复(碰撞)的几率很小.但是也采用这种算法也有一个好处就是短码的位数是固定的,不会从一位到多位.

所以这两种算法各有千秋,如果事务所需要的短链接有效期较短,那么通过批处理定期清洗,那么用摘要算法也不错.而自增算法能够确保任何恳求量都不会呈现冲突也不失一种非常好的解决算法.

如果选取301,短链接生成以后就不会变化,所以用301符合http语义,这样对服务器的压力会有所减少.但是这样一来,我们就无法统计短地址被点击的次数了.

而选择302会增加服务器的压力,但是我们可以统计短链接被点击的次数,这些数据可能对于公司的发展规划非常重要.

1.什么是短链接顾名思义,短链接即是长度较短的网址。通过短链接技术,我们可以将长度较长的链接压缩成较短的链接。并通过跳转的方式,将用户请求由短链接重定向到长链接上去。短链接主要用在诸如微博,BBS等对…博文来自:Aaron的blog

大致分为两个部分。实现思路:将传入的长链接存入数据库中,并记录创建时间,返回自增ID。将返回的id进行10进制转64进制编码:如自增id为10时,64进制转换为A;即使当我们记录到1亿条时,1亿的64…博文来自:井底之蛙

网页短链接是指将原本较长的网址转化成较短的网址,从而便于用户的记忆与社交软件上的传播。很多互联网公司都提供了生成短链接的服务,比如新浪微博短网址服务等,本文就来聊聊实现短链接服务的基本原理。我们不妨先…博文来自:小美哥的博客

协议与TCP/IP协议的关系HTTP的长连接和短连接本质上是TCP长连接和短连接。…博文来自:大雄不爱吃肉

1.什么是短链接  顾名思义,短链接即是长度较短的网址。通过短链接技术,我们可以将长度较长的链接压缩成较短的链接。并通过跳转的方式,将用户请求由短链接重定向到长链接上去。短链接主要用在诸如微博,BBS…博文来自:nullllun的专栏

作者:郭无心链接:来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明…博文来自:shuang1562的专栏

在微博等社交平台,我们添加链接(或者转载一些链接)时,后台一般会将域名转换为形式。这里提供一个该链接的生成与还原的在线站点:生成短网址、还原短网址,t.cn,url.cn,dwz.cn短网址…博文来自:Zhangs Wikipedia

功能简单描述功能很简单,实现将长网址缩短的功能,如:​为什么要转短链?因为要控制每条短信的字数,对于公司来说,短信里面的字可都是钱呀。为什么不用t.cn,url.cn等短链服务呢,它们生成的链接不是更…博文来自:weixin_34284188的博客

近上了一个比较大的系统,基于消息推送的需要,花了点时间做了一个短链服务,实现思路其实很简单,这里简单介绍下实现细节,以及一些优化过程。目录:功能简单描述 长链转短链 短链转长链 细节优化 性能分析功能…博文来自:weixin_33940102的博客

短链接实现原理短链接主要是通过域名重定向技术将较长的域名信息通过一定的转换算法进行处理,用另外一个较短域名信息进行表示。当用户访问这个较短的域名信息时,就可以直接跳转到较长的URL地址上。域名重定向技…博文来自:weixin_34126215的博客

短网址(ShortURL),顾名思义就是在形式上比较短的网址。通常用的是asp或者php转向,在Web2.0的今天,不得不说,这是一个潮流。目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来…博文来自:在你最感兴趣的事物上,隐藏着你人生的秘密

【Web基础】HTTP长连接和短连接以及推送技术原理标签:http协议网络2015-11-2711:094086人阅读评论(0)收藏举报分类:Webnotes(7)作者同类文章X版权声明:本文为博主原…博文来自:回忆的往昔

导入平时我们在上网的时候,印象最深刻的有一次是短链接的服务。例如:平时在微信上看一个网页的时候,如果我们选择在浏览器打开的时候,会看到很长的URL,我们分享的时候,会看到一个很短URL,这就是本次所说…博文来自:weixin_43308519的博客

什么是长连接长连接还是短连接相比于短连接,长连接更节省资源。如果每发送一条消息就要创建链路、发起握手认证、关闭链路释放资源,会损耗大量的系统资源。长连接只在首次创建时或者链路断连重连才创建链路,链路创…博文来自:weixin_30849403的博客

问题描述微博的长url可以转为短url,这个是怎么实现的呢?要求通过短url也可以查到原来的长url,怎么实现?当规模变大的时候,怎么保证性能?参考关于短网址算法的问题短链接、短网址使用的是什么算法?…博文来自:stevewong的专栏

生成的短网址的代码,原来用的好好的,没有做任何修改,最近打开后,跳转的长连接中把 &转义成为:这样就不通了 也就是说:生成的短网址跳转后,用户名和密码之间本来是 & 连接的,现在改为:&am论坛

求解 现在微信上防封短链接 是怎么生成 原理有人帮说下吗? 自己的域名很容易就被微信给封了,有相关的源码吗?论坛

前言:最近看了一些关于短址(shortURL)方面的一些博客,有些博客说到一些好的东西,但是,也不是很全,所以,这篇博客算是对其它博客的一个总结吧。介绍:短址,顾名思义,就是把长的URL转成短的URL…博文来自:java开发指南博客 【转载】

说到短链接转换,大家最熟悉的应该就是微博短链接(t.cn)转换了。由于微博字数限制,很多链接过长,微博就会自动将其转换为短链接。一、自己开发由于微博没有提供转换短链接的图形化页面,所以我自己搞了一个,…博文来自:weixin_33859504的博客

点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 精尽Dubbo原理与源码 69篇精尽Netty原理与源码 61篇中文详细注释的开源……博文来自:芋道源码

简介短链接服务就是将一段长的URL转换为短的URL,比如利用新浪微博的短链接生成器,可将一段长的URL(博文来自:yun914的博客

各位网友朋友们,今天我要向大家推荐一个非常实用的网站:该网站是做什么用的呢? 它的作用非常简单,一话就可以概括:将一个长而难记的网址转换一个短小,简单,易记论坛

最近实在闲的蛋疼。。。看了下tcp/ip 通信 搞了几个Demo 献给新手(本人也很菜哈。。都是写的短连接,本来tcp的时候想用长连接的 但看了下 头晕中 要搞心跳包 实在能力有限) 不多说 贴图。帖论坛

1.什么是短链接顾名思义,短链接即是长度较短的网址。通过短链接技术,我们可以将长度较长的链接压缩成较短的链接。并通过跳转的方式,将用户请求由短链接重定向到长链接上去。短链接主要用在诸如微博,BBS等对…博文来自:weixin_34221773的博客

短链接实现原理短链接主要是通过域名重定向技术将较长的域名信息通过一定的转换算法进行处理,用另外一个较短域名信息进行表示。当用户访问这个较短的域名信息时,就可以直接跳转到较长的URL地址上。域名重定向技…博文来自:leslie程序博客

址缩短服务是越来越流行,特别是在Twitter的推动下,网址缩短服务被更多人了解,并使用。有名气的如:TinyURL(Twitter最先使用的),Bit.Ly(Twitter现在使用的),Is.Gd等…博文来自:weixin_34161064的博客

短网址应用已经在全国各大微博上开始流行了起来。例如QQ微博的url.cn,新郎的sinaurl.cn等。我们在QQ微博上发布网址的…博文来自:libertea的专栏

项目中有一处需求,需要把长网址缩为短网址,把结果通过短信、微信等渠道推送给客户。刚开始直接使用网上现成的开放服务,然后在某个周末突然手痒想自己动手实现一个别具特色的长网址(文本)缩短服务。由于以前做过…博文来自:书写人生

求一个长的唯一字符串转换成一个短的唯一字付串, 比如2423424231转换成AdER 这样的 上面是我乱输的一个例子,我的问题就是求一个PHP算法,能让长长的字符串转换成短短的,方便阅读。论坛

说到长连接,短连接,不得不提到三次握手。举个例子,如下场景: 三次握手(连…博文来自:米糕思密达的博客

长连接和短连接的概念:短连接:在HTTP1.0/中默认的是短连接,短连接就是双方有数据交互时,就建立一个连接,数据发送完毕后就断开此连接,即每次只完成一项任务的发送长连接:从HTTP1.1/起使用的就…博文来自:跑够一万公里就结婚

一、什么是长连接   HTTP1.1规定了默认保持长连接(HTTPpersistentconnection,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在…博文来自:weixin_34090562的博客

我们在介绍HTTP各版本区别的时候说过,HTTP1.1和1.0的区别就是1.1默认情况就是长链接的而在1.0版本里就需要通过头部Connection:Keep-alive来说明链接情况,如果不说…博文来自:Hanani_Jia的博客

面试官:你平时是否留意过一些垃圾短信中包含短链接?候选人:有的,就像下面这样!面试官: 为什么选择这种短链接这种方式? 有什么好处? 如果让你实现一个短链接的生成服务,你会怎么设计? 这篇文章…博文来自:藏经阁

转载自:新浪微博的API官方提供了很多种调用方式,支持编程的,归根结底就是两种…博文来自:wuhongyao3的专栏

短连接在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资…博文来自:mulinsen77的博客

前言需要说明的是,这里使用的是微博提供的接口,也就是说,这个短链接是微博给我们提供的在网络上到一个我们工具站言归正传微博开发平…博文来自:HealerJean梦想博客

短链接就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。如该网页的地址博文来自:的博客

lovexiaoqiu:您好,我想问下您的get请求的地址是什么呢?您只说了新建一个get请求,但并没有说get请求的地址,我点击 send,postman提示我要请求地址。

转载请注明:战车网 » 网页短链接实现原理探究

猜你喜欢

avatar
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址