小白写的短网址生成工具

2023-02-06 14:57:25 +08:00
 InFaNg
在家无聊,花了一个月左右的时间学习了 PHP 和一些前端相关的知识,做了这个短网址生成工具,欢迎大家折腾,求 star~~

后端使用 PHP 实现,前端使用 BootStrap+jQuery
使用 Nginx/Apache HTTP Server 对短链接重写
使用 PHP MySQL 预处理语句,有效防止 SQL 注入
包含安装程序,可图形化配置数据库链接信息
包含后台管理界面,支持短链接的修改 /删除

项目地址: https://github.com/caoji2001/short-url
演示链接: https://go.caoj.org

运行截图


2267 次点击
所在节点    程序员
14 条回复
opengps
2023-02-06 15:05:43 +08:00
少了最关键的:足够短的域名^^,op 可以去低价买个二手杂米.cc ,别问我是怎么知道的
RedisMasterNode
2023-02-06 15:10:26 +08:00
$random_number = rand(14776337, 916132832); // [62^4 + 1, 62^5]
while ($db->where('id', $random_number)->getValue('fwlink', 'count(*)') > 0) {
$random_number = rand(14776337, 916132832); // [62^4 + 1, 62^5]
}

这个方案不会在短连接数量很多的时候产生一些冲突吗,这里大概有 9 亿的可用值,也就是说数据量达到 3 亿左右基本上就有 1/3 的请求会需要查 > 1 次 DB

另外在访问的时候,相当于所有的访问都要去查询 DB ,即使链接是用户随便输入的

无恶意纯随便探讨一下,小工具做得挺有意思的页面简洁好看。
InFaNg
2023-02-06 15:12:26 +08:00
@opengps okk !以后我去看看!
InFaNg
2023-02-06 15:15:02 +08:00
@RedisMasterNode 听起来很有道理的样子,当时写这个随机数生成想的有点随意,感觉更合理的方法应该是在数据超过一定阀值后,在更大的范围内生成随机数,之后有空这部分重写下~~
RedisMasterNode
2023-02-06 15:31:53 +08:00
@InFaNg 有没有什么更稳定的唯一 ID 生成方案呢,或者你这里已经用了 base62 了,那有没有什么稳定的唯一十进制数生成方案呢,这里的 DB 查询完全可以避开的
fkdog
2023-02-06 15:43:48 +08:00
好奇现在还有短网址这样的需求么。。?
duanxianze
2023-02-06 16:03:36 +08:00
@fkdog 有 主要是发短信太长的参数没法带
baoei
2023-02-06 16:06:27 +08:00
@fkdog 灰产需要
AoEiuV020CN
2023-02-06 16:41:27 +08:00
@fkdog #6 有的,我自己就建了个自己用,
一些软件配置文件啥的通过短连接固定并缩短,必要的时候可以直接输入,
原地址太长的只能复制粘贴,换地址了也都得修改配置,有时不方便,
wonderfulcxm
2023-02-06 16:45:18 +08:00
@fkdog 有,我们公司网站就有,一是统计,二是可以改短网址对应那个长网址,长网址换了分享出去还能改。
bearboss
2023-02-07 13:49:17 +08:00
@RedisMasterNode hash 或者随机数都可能碰撞 自增的话区间太明显 容易给别人根据规则遍历短链接 怎么才能完全避免查库呢
RedisMasterNode
2023-02-07 14:21:29 +08:00
@bearboss 自增区间会有反解的风险但是并不能说太明显

1. base62 算法你可以自由实现,包括如果不按照 ABC..XYZabc...xyz123..89 这个顺序,如果我将数字安插在不同字母之间作为 base62 算法的 base 呢?只要保证生成和解析是相同即可,不一定是服务外能简单猜测到的排序
2. 除了单纯的自增,在分布式场景中你的短链生成的机器有非常多,例如 50 个机器,每个机器除了有它自己的号段以外,还需要将机器号埋入 base62 之前的明文,例如我为每台机器分配名字:33869 、22193 这些都是无规则的 ID ,可以进一步混淆 base62 前的明文

类似的 trick 还可以举例好几种,仍然有反解的风险,但是我理解这个东西得看是否产生价值,如果反解要花很多时间的话那我觉得服务端的目的已经基本达到了
thinkershare
2023-02-07 16:21:18 +08:00
国内大部分短信服务商直接不支持短网址动态短信,因为无法审核,就非常的无语。
tercel36524
331 天前
https://www.369url.cn
这个还是不错的一个选择,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/913619

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX