自己动手搭建开源的短链接服务(LLS)

由于之前疫情天气炎热,被封在家,所以搭建了一个短链接服务

引言

在我们的日常生活中,链接无处不在。无论是在分享有趣的文章,还是在商业报告中引用重要的数据,链接都是我们获取和分享信息的重要工具。 但是在某些平台链接分享出去之后, 部分文字可能会变成表情更有可能直接禁止你访问这个链接, 而且链接有时可能会非常长,不仅难以记忆,而且在某些平台上可能会占用过多的字符空间。这就是短链接服务发挥作用的地方。

但是目前直接能用的短链接少之又少,而且很多短链接的链接会被某些平台标记未不安全,甚至某些短链接服务可能会挟持你访问的网站或者在跳转前插入广告

所以我趁着疫情居家闲得没事就写了一个短链接服务器: LLS
目前还没有官方的Web前端(才不是作者很懒的说),但是已经有第三方实现:KrisToysLinkShortener(更没动力写了.. (摊

LLS开源短链接服务的特性

LLS是一个精简的短链接服务,它使用Go语言编写,使用gin-gonic框架,以及mangodb作为其数据库。它的主要功能包括链接缩短、内置统计功能、密码保护、软重定向。这意味着你可以使用LLS来创建短链接,跟踪链接的使用情况,保护你的链接,以及定制链接的重定向行为。

短链接的重点在于Hash的唯一性和性能, 所以在短连接生成算法上选择了非加密hash算法:MurmurHash3它具有速度快, 随机分布特征表现好,非常适合该需求使用, 在Hash时使用原始链接+循环计数器+纳秒时间戳进行拼接在一定程度上避免了重复的可能性, 最后将Hash结果转换为62进制字符串,作为主键插入数据库,这进一步提升了查询速度和唯一性

如何搭建LLS短链接服务

要搭建LLS短链接服务,有两种方式使用Docker集成MongoDB数据库部署或者下载预编译版本自行配置数据库进行部署 你可以在你自己的电脑上搭建这些环境,或者使用云服务。

使用Docker部署:

//拉取代码
git clone https://github.com/LJea/LLS.git

//进入项目目录
cd LLS

//拷贝你的前端到./public/

//复制配置模板到当前路径
cp ./resources/statik/mongo-init.js ./resources/statik/app.ini ./

//创建数据库密码
perl -p -i -e "s/VFSNnSFLvfOwFnBh/{这里设置数据库密码}/g" ./mongo-init.js ./app.ini

//修改配置文件app.ini

//编译并启动Docker容器
sudo docker-compose up --build -d

如何调用LLS短链接服务

比较重要的接口有两个:

  • /api/captcha (验证码生成)
  • /api/generate_link (短链接创建)

还有两个管理接口

  • /api/stats_link (统计信息查询)
  • /api/delete_link (短链接删除)

在接口调用前首先需要调用Captcha接口获取验证码

详细的接口说明可以前往Github,或者参考Kris的实现

参考资料

点赞

发表评论

请稍后(无限等待请刷新重试)....

由于当前政策法规,主站禁止评论,请前往Global

电子邮件地址不会被公开。必填项已用 * 标注