当前位置:首页 » 操作系统 » 短网址的生成算法

短网址的生成算法

发布时间: 2023-02-28 21:54:58

Ⅰ 短链接服务搭建

关键词:长链接;短链接;重定向;

长链接问题:

        复制容易出错,长链接URL较长,有时参数不止一个,复制容易遗漏或在粘贴时被编辑器截断;

        容易被屏蔽,绝大部分长链接暴露了资源来源及分配策略,在投放第三方时容易被屏蔽,比如被短信屏蔽,(淘宝宝贝长链接)被微信屏蔽......;

反例:

因此,我们考虑短链接服务对长链接进行压缩,跳转替代!

        1、用户访问短链接: https://0x9.me/QvjlI ;

        2、短链接服务器0x9.me收到请求,根据路径参数QvjlI获取到原始链接:

http://www.dazhongkanche.com/gou/20200914/64294.html

        3、服务器返回301/302状态码,将响应头中的Location设置为 原始链接;

        4、浏览器重定向到原始链接;

        5、返回响应;

短链接生成:

1、库表设计:id、code(短链码)、url(原链接),采用Key-Value方式对应存储

2、短链码

1)、存储方式:62进制,每位 可选 a-z、A-Z 和 0-9  等62个字符,比通常的数字方式存储量大。注:

        4位就可以表征 62^4 = 1477,6336 约 1500万条数据;

        5位可以表征 62^5 = 9,16132832 约 9亿条数据;

        6位可以表征 62^6 = 568,00235584 约 560亿条数据;

例子:

        通过短链码的长度,可以判断得出各平台服务板块的历史业务量,如上:

        【菜鸟驿站】同【拼多多】,采用了8位短链码,62^8 = 218,3401,05584896,业务量都累积到了多少万亿级别。

        另,值得关注,点击拼多多的链接直接打开APP(具体技术方案参考: 如何从推广短信链接唤起 App ),优于绝大部分应用的推广。

2)、生成方式:可以按ID自增序列(自增后10到62进制转换)、哈希算法方式生成,可参考: 如果教你设计一个 短 链接 系统,你会从那些方面来提高性能呢?

重定向性能考虑:

1、301、302跳转区别:

1)、301跳转,永久重定向,默认被浏览器缓存,只要访问过一次短链,后续都会直接跳转原链地址,不经过服务器;

2)、302跳转,临时重定向,不被浏览器缓存,每次都经过短链接服务器;

所以,要想实现短链更灵活的资源跳转配置,采用302跳转就比较合适,缺点是:对搜索引擎不友好+性能问题(每次都要过短链服务);考虑到SEO+访问性能(浏览器缓存解决),建议采用301跳转方式。

2、通过Redis做查询表,短链Code 映射长链接Url;

3、防机器人脚本访问,结合白名单等机制;

注:作为对外开放的短链服务对设计要求更高,完全作为一个独立系统进行设计。

注:本当章节下所有内容的撰写思路与方式:

1、针对指定资源手动生成短链接,进行投放;

2、针对指定资源,批量生成短链接,并形成记录,以便进行投放;

3、在一些环节(如:短信投放、微信分享时),自动生成短链接(用户无感)完成投放;

介绍如何应用场景:

1、朋友圈消息:

2、微信/QQ群插件自动发送链接

微信,空间节约效果良好:

常用的QQ群自动回复插件:

3、短信营销

优点:

1、在链接投放时,方便复制粘贴;

2、短网址使排版变的美观,简洁,用户关注的重点在文案上面;

3、防止屏蔽,如短信屏蔽、微信屏蔽....;

4、访问资源有效期控制,添加密码等:

        原则上可以在跳转之前做任何后端想做的事情,比如访问统计,比如后续访问链接的切换,所以对访问资源的可控性就比较强,

        举例:跳转资源不稳定,今天是A,明天是B,就可以通过修改原链接实现跳转资源的切换。

关联技术的延展介绍

1、301对重定向的影响: https://www.batmanit.com/p/457.html

2、有投放就必然涉及到投放资源、渠道、及效果的管理:

        资源管理,比如说文章;

        渠道管理,比如:微信渠道(公号、朋友圈、运营人员个人私聊)、QQ、微博、短信、头条.....

        投放效果统计,针对文章的效果统计(各文章的效果如何?),针对渠道的效果统计(各渠道的效果如何?),针对文章&渠道的效果统计(即不同文章在不同渠道的效果如何?)

3、 一切为了营收!如何从推广短信链接唤起 App ?

4、 如果教你设计一个 短 链接 系统,你会从那些方面来提高性能呢?

Ⅱ 怎么做一个短网址缩短网站,网址缩短后要以自己的顶级域名显示的,不是显示现在网上流行的url、t等。

现在网址缩短网站有很多了,就分析一下做得比较好的六度短网址6.in短网址生成服务平台:
(1)将长网址md5生成32位签名串,分为4段,每段4个字节
对这4段循环处理,取4个字节(32位),将它看成16进制串与0x3fffffff(30位1)(2)与操作,即超过30位的忽略处理
(3)这30位分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串
(4)总的md5串可以获得4个6位串,取里面的任意一个就可作为这个长url地址
(5)把数字和字符组合做一定的映射,就可以产生唯一的字符串,如第62个组合就是sssss9,第63个组合就是ssssba,再利用洗牌的算法,把原字符打乱后保存,那么对应位置的组合字符串就会是无序的组合。
(6)把长网址存入数据库,取返回的id,找出对应的字符串,例如返回id为1,那么对应上面的字符串组合就是aaa,同理id为2时,字符串组合为aaa,依次类推,直至到达62种组合后才会出现重复的可能,所以如果用上面的62个字符,任意取6个字符组合成字符串的话,你的数据存量达到500多亿后才会出现重复的可能。

Ⅲ 微博上是如何把一个长URL变成一个短小的URL的这是一种加密方式吗

那是新浪针对新浪微博推出的一种功能。不用用户自己转换,这个步骤由新浪来代劳。
他不是加密方式,简单的说就是换了一种表现形式

为什么要这样做的,原因我想有这
样几点:
1、微博限制字数为140字一条,那
么如果我们需要发一些连接上去,
但是这个连接非常的长,以至于将
近要占用我们内容的一半篇幅,这
肯定是不能被允许的,所以短网址
应运而生了。
2、短网址可以在我们项目里可以
很好的对开放级URL进行管理。有
一部分网址可以会涵盖XX,暴力,
广告等信息,这样我们可以通过用
户的举报,完全管理这个连接将不
出现在我们的应用中,应为同样的
URL通过加密算法之后,得到的地
址是一样的。
3、我们可以对一系列的网址进行
流量,点击等统计,挖掘出大多数
用户的关注点,这样有利于我们对
项目的后续工作更好的作出决策。
其实以上三点纯属个人观点,因为
在我接下来的部分项目中会应用
到,所以就了解了一下,下面先来
看看短网址映射算法的理论(网上
找到的资料)
1)将长网址md5生成32位签名串,分
为4段, 每段8个字节;
2)对这四段循环处理, 取8个字节, 将
他看成16进制串与0x3fffffff(30位1)
与操作, 即超过30位的忽略处理;
3)这30位分成6段, 每5位的数字作
为字母表的索引取得特定字符, 依
次进行获得6位字符串;
4)总的md5串可以获得4个6位串; 取
里面的任意一个就可作为这个长url
的短url地址;
很简单的理论,我们并不一定说得
到的URL是唯一的,但是我们能够
取出4组URL,这样几乎不会出现太
大的重复。

热点内容
卖手机密码锁忘记开了能卖多少 发布:2025-08-16 13:49:35 浏览:224
印度预算法 发布:2025-08-16 13:43:48 浏览:289
java基础选择题题库 发布:2025-08-16 13:42:10 浏览:681
oracle数据库的存储结构设计 发布:2025-08-16 13:37:24 浏览:692
go安卓交叉编译 发布:2025-08-16 13:33:06 浏览:89
铜梁编程 发布:2025-08-16 13:29:11 浏览:930
编程男生 发布:2025-08-16 13:12:33 浏览:567
php基本数据 发布:2025-08-16 13:08:47 浏览:784
广度遍历算法 发布:2025-08-16 13:07:59 浏览:217
安卓手机如何控制cpu 发布:2025-08-16 13:04:17 浏览:394