这是一个基于.NET开源的短链生成及监控系统,包含了短URL的生成、短URL跳转长URL、短URL访问统计以及Web后台监控页面,可以帮助我们更容易地生成短链、监控短链!
Package Name | Version | Downloads |
---|---|---|
SuperShortLink.Core | ||
SuperShortLink.Api |
SuperShortLink
这是一个基于.NET开源的短链生成及监控系统,它包含了在线生成短链、短链跳转长链、支持短链访问次数以及Web监控页面,可以帮助我们更容易地生成短链、监控短链!
其中“+”和“/”在 URL 中会被编码为“%2B”以及“%2F”,需要进行再编码,因此直接使用标准 Base64 编码进行短URL 编码并不合适,所以,我们需要针对 URL 场景对 Base64 编码进行改造,Base64 编码表中的 62,63 进行编码移除,更新为Base62编码
举例:打乱成:s9LFkgy5RovixI1aOf8UhdY3r4DMplQZJXPqebE0WSjBn7wVzmN2Gc6THCAKhaut
计数器自增Id | 标准Base62编码 | 标准Base62编码(6位字符) | 打乱后Base62编码 | 打乱后Base62编码(6位字符) |
---|---|---|---|---|
6 | G | AAAAAG | y | sssssy |
66 | BE | AAAABE | 9k | ssss9k |
100 | Bm | AAAABm | 9E | ssss9E |
可以看出,虽然打乱了,但还顺序性还是很明显
将前面补0再倒转,由于6位长度最大11位,为了避免倒转后超过该数值,因此补到10位
计数器自增Id | 打乱后Base62编码(6位字符) | 前面补0到10位 | 倒转数字 | 倒转后的打乱Base62编码(6位字符) |
---|---|---|---|---|
6 | sssssy | 0000000006 | 6000000000 | yPFrgP |
66 | ssss9k | 0000000066 | 6600000000 | 5xWCQH |
100 | ssss9E | 0000000100 | 10000000 | ssSKph |
将请求收到的短链Key根据打乱后的Base62编码转成十进制数,补0到10位,然后倒转就得到原来的短链Id
短链Key | 解析后的十进制数 | 前面补0到10位 | 倒转数字 |
---|---|---|---|
yPFrgP | 6000000000 | 6000000000 | 6 |
5xWCQH | 6600000000 | 6600000000 | 66 |
ssSKph | 10000000 | 0010000000 | 100 |