蓝瘦、香菇,每天和短链接技术打交道

2016年12月01日来源:980短网址原创分类:短链接阅读(300评论(2

  短链接(Short Link)顾名思义就是长度比较短的网址。如:http://980.so/x。早期,短链接主要应用在网站的图片上传中,上传网站通过特定的算法缩短 URL(Uniform Resource Locator,统一资源定位符)链接地址,达到减少代码字符数的目的。

链接

  随着微博的快速发展,微博用户数量呈爆炸式增长,微博用户间的信息传播、信息分享较之传统的网络形式进一步加速,所分享的内容也呈多样化趋势,使得短链接服务活跃起来。因为微博内容一般都有字数限制,较长的URL 地址会挤压正文的空间。

  而短链接生成器正好解决了这种问题,借助短链接生成器可以用简短的网址替代原来冗长的网址,给用户留下更多的正文空间。

  1、短链接的实现原理

  短链接主要是通过域名重定向技术,将长网址通过一定的算法转换成一个短链接。当用户访问这个短链接时就可以直接跳转到较长的 U R L 地址上。域名重定向技术也可以称为U R L 转发技术,它是通过网站服务器或者 W eb 应用程序的设置,将访问当前域名的用户引导至指定的另一个 URL 地址。

  短链接生成器通常使用的是 301、302 或者 META 转向:

  1)301、302 转向

  使用 php 中的 header() 函数可以实现 301重定向(永久性转移)或 302 重定向(暂时性转移)。

  当客户端访问短链接的 php 页面时,服务器端使用header() 函数向客户端发送原始的 H TTP 报头,在 H TTP 数据头中的Location段中给出相应的长地址。

  header函数说明见表

header函数

  例:header('Location: http://980.so /',true ,301)。表示向客户端浏览器发送命令,强制 H TTP 响应代码为 301,并将该报头替换之前的报头,将重定位地址设为 http://980.so /。

  2)META 刷新转向

  利用 H TM L 标记 M E TA 中的 R E FR E SH,设定相应的跳转地址,在特定时间后重定向到新的网页 。例 :H TTP-EQ U IV="R E FR E SH " CO N TEN T="5; U R L=index.asp">。在等待 5 秒后,网页将通过刷新的办法重定位到index.asp 的网页。

  2、短链接网站的快速搭建

  目前互联网上许多个人短链接服务都使用 php 的转向方式,互联网也有许多完整的 php 源码网站,方便个人搭建自己的短链接网站。Phurl是网上较为流行的短链接网站源码,其通过 PH P 和 M ySQ L 实现网址缩短服务,程序仅19K B,包括建库脚本和后台程序。Phurl的搭建极为简单,如下所示 :

  1) 在支持 PH P 的服务器中,将 Phurl网站文件放到需要建立网站的目录下。

  2) 在 M ySQL 中新建一个数据库。

  3) 通过导入 phurl.sql文件,建立所需的数据表 phurl_settings和 phurl_urls。

  4) 根据自身需求,修改config.php文件内的配置信息。

  5) 进行测试,通过访问 index.php,可以对长网址进行缩短处理,短链接则通过 redirect.php 的处理转向长网址所在的网页。

  3、短链接服务的转换算法

  Phurl的转换算法就是将短码和长网址在本地数据库建立一一对应的关系。用户访问短链接时,后台通过查找到对应的长网址,通知客户端,客户端进行页面转向操作。

  phurl_urls的数据表中存放了id,url,code,alias,date_added;phurl_settings的数据表中仅存放 last_num ber。id 是自增长的主键,url是长网址,code是短码,alias是别名,date_added是记录添加时间,last_num ber是最后一条记录的整数。

  算法实现主要函数如表

算法实现主要函数

  为了尽可能缩短短链接的字符串长度,Phurl采用了更高进制的表示规则。短码 code 就是是通过函数 generate_code($num ber)产生的高进制数。函数源码如下:

  function generate_code($num ber)

  {

  $out = "";

  $codes = "abcdefghjkm npqrstuvwxyz23456789ABCDEFGH JK

  M NPQRSTUVW XYZ";

  while ($num ber > 53)

  {

  $key = $num ber % 54;

  $num ber = floor($num ber / 54) - 1;

  $out = $codes{$key}.$out;

  }

  return $codes{$num ber}.$out;

  }

  函数中自定义了数字和大小写的字母组成的 54 位字符串,从前至后每个字符代表为 54 进制中 0-53。如果用上面的 54进制表示,则 4 个字符长的短码则可以表达 850万多条记录,6 个字符长的短码则可以表达 247 亿多条记录。

  4、长网址转短码一般流程:

  1)在数据表 phurl_urls中查找是否已存在该长网址记录,有则返回对应的短码 ;

  2)无记录则取数据表 phurl_settings中 last_num ber进行高进制转换得到短码 ;

  3)数据表 phurl_settings中 last_num ber加一备以后使用;

  4)在 phurl_urls表尾插入短码及长网址对应的新记录。

  根据 Phurl的算法,短码无规律可言,短链接和长网址间不存在文本上的关联关系,由于高进制对应字符串的不同,以及短链接请求的先后顺序不同,会导致同样使用 Phurl的不同网站对同一长网址的处理所得到的结果不同。

上一篇:短信利用短网址撬动移动营销市场

下一篇:对付恶意短链接我有妙招

精彩评论
评论
热门文章
980安全专家教您认识短链接安全
防护恶意网址用短链接欺骗的对策
对付恶意短链接我有妙招
蓝瘦、香菇,每天和短链接技术打交道
短信利用短网址撬动移动营销市场
文章归档
2016年12月
2016年11月
2016年10月
2016年09月
2016年07月
2016年06月
热门标签
短网址
短链接
网址缩短
短网址服务
短网址应用
短网址营销
短网址生成
缩短网址
短链接生成
短网址还原
短网址检测法
自定义短网址