短链接系统

短链接系统

开发背景,网址缩短这种服务是在微博出现之后才流行开来的,原因很简单,微博140字限制,能表达的内容本来就两三句,如果再出现一个网址,就会占用非常大的篇幅。又比如商城业务中的url最长的达68个字节。相当于抽离部分功能为独立模块,避免功能之间定制化太强。将部分功能做成更具通用性,功能更广泛的模块。

网址缩短的原理也很简单,使用HTTP 301 Moved状态码重定向,浏览器就会自动的转向到目标网址。这个实现起来的难度不大,代价也不会很高。因为多了这一次转发,这使得那些被传播的网址多了一些可控的因素,比如说可以记录请求的报文,对来源网站、IP、浏览器等许多信息进行收集和统计;可以针对有害网站进行跳转前的过滤和警告。这样子,一个连接投放出去之后的效果就可以很方便的统计,比如著名的网址缩短服务网站http://bit.ly就提供了这种服务。

所以,缩短网址服务是一个很简易、方便的统计工具,大家都去做。由此衍生了非常多的功能。

301为永久重定向,302为临时重定向,根据不同的业务场景有不同的设计模式。

跳转用301还是302 这也是一个有意思的话题。首先当然考察一个候选人对301和302的理解。浏览器缓存机制的理解。然后是考察他的业务经验。301是永久重定向,302是临时重定向。短地址一经生成就不会变化,所以用301是符合http语义的。同时对服务器压力也会有一定减少。 但是如果使用了301,我们就无法统计到短地址被点击的次数了。而这个点击次数是一个非常有意思的大数据分析数据源。能够分析出的东西非常非常多。所以选择302虽然会增加服务器压力,但是我想是一个更好的选择。

重点摘要(解决痛点)

1.缩短链接,url可能携带一大堆参数,url分享过程会产生明文数据泄露,且可能会被部分系统拦截,例如微信等。。。。

2.短链接生成的二维码识别效率远高于长连接生成,具体可看下文。

3.网址活码,链接具备可控性,不会因为版本升级或者url设计有误带来严重的影响。例如招生系统。同时具备高可用性。例如医保推广。具体看下文

4.限制访问,密码访问,过期时间,有效时间等问题,抽离了公示系统的对外公示功能将其独立且可复用

5.用于推广,可提高对外链的把控程度,防止我们推广后,传播方修改了内容,我们没法对我们传播的链接进行控制(内容不对,可直接关闭短链,或者转移短链)。并且采用了公司域名,变相提高了公司知名度。例如医保推广等

6.访问统计,我们对url的把控性提高的同时,具备大数据分析的能力,对于公司未来的发展具有前瞻性。可对来访者的信息进行登记分析。

7.可禁止来源,指定用户只能从某处跳转或者从某环境打开,例如钉钉,应用于公示系统的用户打开环境绑定。

8.网站故障推送,及时监控报告推送。(可能损耗性能,需要再研究)

具体的解析以及应用看如下完整版

基本流程

短网址服务的基本流程:用户将长网址提交到短网址服务中,之后短网址服务经过URL处理之后,利用转换算法对长网址进行转换,最后分别将长网址和短网址存储到数据库之中。部分短网址服务为了防止出现对短地址进行连续转化或者提供一些展示长网址TITLE的功能,所以会对长网址进行访问。

img

设计功能

网址缩短:原网址:xxxx.xxxx.com/235442334432,缩短后网址:http://t.cn/RyG7Xcq

关闭访问:设置为yes短网址将暂时暂时停止访问,如果有设置留言将显示访问留言。例如:http://t.cn/RyG7SfA

匿名访问:隐藏访问来源,使被访问的链接无法最终到来源。例如:http://t.cn/RyG7Y6J

开启统计:将进行简短的访问次数统计

扫码访问:设置为YES后打开短网址将显示原网址的二维图片,方便通过手机访问网址。例如:http://t.cn/RyG7QXn,在使用短链接生成的二维码比长连接更具备识别效率。对比如下 左图短链接,有图长连接。在网络差或者性能差的环境下解析速度相差高达好几秒。

1601285084

1601285007

网址活码:设置二级跳转,让二维码一直随着制作者的需求不断变更内容或者指向网址。

image.png

image-20200928173716491

image-20200928173530121

image-20200928173515346

替换网址:推广过程中可能遇到原网址失效的情况,但短网址已经布到各推广位置不想再重新发布,这种情况可以使用替换网址功能,输入需要替换的网址后访问短网址将转向替换的新网址。例如生成后可以把网址设置指向到百度:http://t.cn/RyG7nlE,例如招生系统,提早发布了的url但是设计时候却不同,就可通过这个进行重定向。

访问密码:有些网址只想对局部的用户开放,可以设置访问密码,只有通过密码才能打开短网址。例如:http://t.cn/RyG7rWX,访问密码:iloveyou,可运用到公示管理系统中。将密码设计为访问条件。避免重要链接内容被随意散播。

访问上限:每个用户可以访问此短网址的次数上限,如果设置为1,那短网址同一个访问者只能访问一次。例如:http://t.cn/RyG7kng

生效时间:有些时候我们像原网址在特定的日期开生效,例如双11才能访问,我们可以把生效日期设置为2015-11-11,这样双十一前发不好的网址也只能在双11当天才可以访问。例如:http://t.cn/RyG7sBh(2015年11月11日才能访问)

结束时间:跟生效时间相反,到达技术时间后短网址件不能访问,并显示访问留言,生效时间和结束时间可以无限次设置,不会因为过了前一次设定的结束时间而短网址失效。例如:http://t.cn/RyGzhZj(2015年9月1日后不能访问)

有效时段:如果你的活动希望在早上10点开始,可以先生成短网址,然后发布推广,然后设置开始时间为10:00-24:00这样,用户只能在10点后访问到你的活动页面。例如:http://t.cn/RyGzZ3F(每天10点后才能访问) 暂时不设计

IP黑名单:很明显,这个IP的流浪者无法访问到你发布的短网址

禁止地区:禁止地区里的区域无法访问你发布的短网址,例如你写上杭州,那么整个杭州地区的用户都无法访问你的网站,如果你填上阿里巴巴,那么整个阿里巴巴集团的浏览者都无法浏览到你发布的短网址。例如:http://t.cn/RyGzyP8(杭州地区的同胞都不能访问,其他的都可以)

禁止来源:如果你不想用户通过淘宝网站访问到你的网站,你可以设置http://taobao.com,这样通过http://taobao.com相关的域名都无法访问到你的短网址。例如:http://t.cn/RyGztq0指定必须钉钉访问

CNZZ统计:填上CNZZ的统计ID,就可以通过CNZZ统计到详细的统计信息。

链接屏蔽:显然,缩短URL可以使您屏蔽原始网址。从某种意义上说,这对我们作为消费者来说是有害的,因为它允许垃圾邮件发送者和黑客隐藏对我们的恶意链接。但值得庆幸的是,借助来自Chrome和其他浏览器的安全保护功能可以让我们免受其害。在做一些推广的时候,可以缩短链接,凸显公司域名。

故障推送:可以对解析后的url进行故障监测,及时发现服务故障进行故障推送。

易于微信环境内的传播

这是2019年特有的景象,尤其在双十一期间,以拼多多为首的电商平台推出了砍价、拼团等较为“扰民”的活动,微信进行了大规模的封锁,拼多多等平台转向生成以短链接的方式进行传播,降低被封的概率,同时链接短了,也更容易用户传播分享(商城模块)

总体来说让推广便的更加简单。主要有以下这些好处:

  1. 可以躲过平台规则进行链接发布。众所周知很多生态是不允许发链接。
  2. 链接缩短可以发布更多内容。比如微博、推特这种限制字数的,放各长连接就完全没有字数了。所以使用短链接进行缩短。
  3. 方便数据统计。传统的链接发布数据统计很困难,短链接平台一般提供完善的数据统计方式。比如可以统计渠道来源、用户分布等等。
  4. 衍生功能贴近我们需要实现的功能。相当于抽离部分功能为独立模块,避免功能之间定制化太强。将部分功能做成更具通用性,功能更广泛的模块。

应用场景

场景一:短信推广

① 短信营销中,使用短网址工具不但能缩短网址,还能统计链接点击情况,高效分析短信营销效果

文案决定最终转化。为展示更多信息,短信营销文案都需要放置网站链接。若链接太长占用字数过多,无法通过短信审核,短网址工具恰好解决这问题

② 利用短链,召回流失用户,短链跳转唤醒用户

适用人群:电商微商送优惠券、用户召回、游戏/APP功能上线推广

场景二:邮件推广

① 用于用户召回,统计召回效果

② 用于问卷调查,统计感兴趣人数

③ 用于产品/功能宣传,统计访问人数

④ 市场推广活动,统计感兴趣人数

适合人群:运营童鞋召回推广、企业市场调研产品宣传、活动营销推广

场景三:社交网络分享

① Facebook、Twitter、微博等大型社交网站,为提升用户浏览体验,都屏蔽长链接,短链接能简化内容界面和提升用户体验

② 微博字数有限制、公众号关键词回复链接,都会让文字不再冗长

③ 朋友圈活动报名链接,文案决定转化,链接提供入口

适合人群:任何人、活动团队

场景四:渠道推广

① 用于付费推广,规避关键词、域名屏蔽手段、隐藏真实地址

② 筛选最优推广渠道,在多渠道分发推广,从统计数据中得出哪个效果最佳

③ 公众号营销,编辑好的文章或活动页面分享,短网址工具让内容精简有力,展示有效文字信息而不是冗长的网址

适合人群:自媒体运营、推广员

场景五:联盟广告推广

① 放置广告,跳转至目标页,统计广告点击量

适合人群:广告联盟

场景六:SEO中应用

① 从外链角度,短网址减少外链推广难度,同时能统计外链带来的效果

② 短链接做的301跳转,是永久重定向,只要短链接产生权重,就会传递给长链接

三种实现算法

(1)进制算法:

算法简述:一个以数字、大小写字母共62个字符的任意进制的算法。

数据库中ID递增,当ID为233,则对应短网址计算过程如下:

①设置序列为“0123456789abcdefghijklmnopqrstuvwxyz”

② 233/36=6

③ 233%36= 17

④依次取上述字符的6位,17位,则为6h

其生成之后的短网址为xx.xx/6h

(2)随机数算法:

算法简述:每次对候选字符进行任意次随机位数选择,拼接之后检查是否重复

若要求位数为2,则其对应短地址为计算过程如下:

①设置字符序列“0123456789abcdefghijklmnopqrstuvwxyz”

②根据字符个数设置最大值为35,最小值为0,取2次随机数假设为:6,17

③依次取上述字符的6位和17位,则为6h

其生成之后的短网址为xx.xx/6h

(3)HASH算法:

算法简述:对id进行hash操作( 可选:利用随机数进行加盐),并检查是否重复

设置ID自增,若ID=233,则其对应短地址为计算过程如下:

①取随机数为盐

②对233进行sha1加密为:aaccb8bb2b4c442a7c16a9b209c9ff448c6c5f35:2

③要求位数为7,直接取上述加密结果的前7位为:aaccb8

其生成之后的短网址为xx.xx/2e8c027

设计要注意的弊端

终端机宕机会影响业务。

需要考虑暴力破解

设计思路

带用户版本 活码功能 可对外提供服务。

需要对url进行encode 需要判断http以及https

不带用户版本 做成功能模块 仅对内提供服务。

只存一个用户对所有二维码进行管理

二维码按key value进行划分管理

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信