首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
V2EX  ›  分享创造

两年前写的短网址服务更新到 2.0 版本!支持自定义、统计,以及各种管理功能

  •  
  •   whatsmyip · 67 天前 · 3148 次点击
    这是一个创建于 67 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在我有 Mac 之前,如果看到有意思的东西,想要分享给基友,就不得不手打一遍网址( Linux 党表示很绝望)。。。一大段网址下来,早就没有继续分享的欲望了。

    后来发现有短网址服务,然而国内很多都是白名单机制,一大堆域名都不支持,于是抱着学(wa)习(keng)的想法决定自己写一个。

    最初的版本很简单,只有生成短链接和跳转功能,没有统计,甚至也没有管理功能,但是用起来很爽,就这么用了两年。

    最近心血来潮,把之前的项目全都更新了一遍。。。

    参考各种现有的短网址服务,第二版加了不少功能,从最基本的管理到统计:

    1. 支持自定义短网址
    2. 同时生成对应的二维码,拿起手机扫一扫
    3. 支持短网址有效期设置
    4. 支持对短网址的二次编辑
    5. 支持暂时停止短网址的跳转
    6. 支持形式丰富的访问统计分析(其实挺丑陋的😅)
    7. 支持添加短网址备注,便于查看
    8. 支持导出短网址列表
    9. 去除了容易混淆的字符
    10. 采用 307 状态码,保留原始请求方法
    11. 启用 HTTPS 加密通信,降低个人隐私泄漏的风险
    12. 没有恶心人的域名白名单限制,除了儿童色情、恶意病毒等人神共愤的内容,不做其他限制

    关于使用的技术

    • 前端用的是陈旧但是简单的 Bootstrap v3,其他的前端框架一直懒得学
    • 后端 PHP 写的( PHP 是最好的语言✌️)
    • 基于 Redis 加了缓存功能,只用了最简单的缓存 5 分钟机制,其他的可以通过 Redis 来设置
    • 关于统计数据,本来是打算放到 ClickHouse 里的,再用 RabbitMQ 解藕,但是考虑到实际情况以及部署难度,就直接写到 Mysql 数据库了,就算哪天真的量大了,替换一下也比较简单。

    一开始用的自己的主域名,但是怕短网址被滥用的话会影响到其他子域名,所以这次直接注册了一个新的域名,彻底放开使用。

    网站都放在国外,套了一层 cf,可能速度会比较慢。(鄙视阿里云审查我的服务器流量)

    短网址生成器 网址: https://my5353.com/

    登陆之后可以对自己的短网址进行管理。不想注册新用户的话可以用 v2ex/KxuRSTrR0hopXQhB 这个账号。

    (顺便推广一波我的在线随机密码生成器 😂,网址 https://easypwd.newnius.com/ 。这个是部署在又拍云上的,纯静态站点,访问应该很快。)

    代码开源在 GitHub , 网址: https://github.com/newnius/short-link。

    欢迎大家使用和 star 👏

    第 1 条附言  ·  67 天前
    是允许非网址的,因为我有时候当粘贴板用😅
    55 回复  |  直到 2018-12-22 22:55:53 +08:00
        1
    whatsmyip   67 天前
    顶一顶
        2
    a62527776a   67 天前
    原网址 https://dscsdoj.top/
    短链接 https://my5353.com/O2JBK

    emmm....好像发现了什么不得了的事情
    →。→
        3
    a62527776a   67 天前
    技术还是点赞!
        4
    wofave   67 天前 via iPhone
    太需要国内正常工作的短网址服务了 感谢!
        5
    whatsmyip   67 天前
    @a62527776a

    emmmm 谢谢支持呀😁
        6
    whatsmyip   67 天前
    @wofave

    其实还是挺多的吧,毕竟短网址就跟 todo 一样都快成练手玩具了。。。
        7
    annoy1309   67 天前
    借楼推荐一下 YOURLS,稍微有一点技术基础就能搭建一个自己的短网址系统
        8
    annoy1309   67 天前
    几个小建议:1 建议对高频转换地址进行做一个高频表,你现在用不到,但是到了你短网址数量 100w+的时候,你会发现,数据库里一大堆都是相同的网址,同一个长地址,产生多条短地址记录,这明显是浪费空间的。
    2.去除混淆字符这块,我觉得没必要自己造轮子,现有的 BASE58 完全能满足
        9
    whatsmyip   67 天前
    @annoy1309

    我也觉得 yourls 挺好的,比较成熟。但是东西一多,就显得比较复杂 /凌乱了。
        10
    whatsmyip   67 天前
    @annoy1309

    谢谢指教,长见识了,混淆字符这个主要是自己用的时候觉得挺不爽的,没想到已经有这么成熟的工具了。
        11
    timothyye   67 天前
    之前也用 Go 搞了个简单的,没有楼主功能多: https://biturl.top/
        12
    whatsmyip   67 天前
    @timothyye

    都是慢慢加上来的,专注最实用的一点也挺好的。
        13
    sheeta   67 天前 via Android
        14
    duoduo1x   67 天前   ♥ 1
    你这域名一点也不短啊
        15
    xiaotuzi   67 天前
    这域名一点都不短…
    我自己撸了一个自用 http://t.2wex.com
        16
    unique   67 天前
    感谢楼主的开源和分享,我将这个项目分享在 https://t.me/github_cn 了!
        17
    liunull   67 天前 via Android
    我也想说域名不短😂
        18
    mywaiting   67 天前
    本来想挖坑写个 aff 链接的 tracker,忽然发现有 url shortener 这现成的可以用 /:doge:/
        19
    zgcwkj   67 天前
    导出 JSON,默认记事本无法打开(乱码),好像是识别不了编码格式
        20
    whatsmyip   67 天前
    @sheeta

    😂 明明设置了 dead loop 的限制,看来间隔还是太长啊,我再调大点
        21
    whatsmyip   67 天前
    @duoduo1x
    @xiaotuzi
    @liunull

    3 位跟 7 位差别也没那么大吧,谁还手打啊😄
        22
    whatsmyip   67 天前
    @mywaiting

    就是因为要跟踪,所以加了管理和统计功能。。。
        23
    whatsmyip   67 天前
    @zgcwkj

    我导出是正常的,你应该是用 Windows 下载的吧,默认被识别成 GB2312 了。

    下个 notepad++( https://notepad-plus-plus.org/download/ ) 或者 atom ( https://atom.io/ ),然后改一下编码(UTF-8)就可以了

    Windows 下面记事本乱码很常见
        24
    whatsmyip   67 天前
    @unique 谢谢支持呀😄
        25
    yamedie   66 天前 via Android
    我也做过一个短网址,没楼主的功能多,但比楼主的好玩😉 http://qnmb.ooo
        26
    luckyroach   66 天前 via Android
    做短网址有没有风险被查水表
        27
    ppgame   66 天前 via Android
    @yamedie github 来一发装个玩玩
        28
    whatsmyip   66 天前
    @yamedie

    哈哈,有意思
        29
    whatsmyip   66 天前
    @luckyroach


    只做转发,又不提供内容的。

    1024 类的没人管

    其他的么,想看你也看不见
        30
    sobigfish   66 天前
    没做查重。。。所以 预防域名识别 o 改成了 0

    原网址:
    my5353.c0m/
    短网址:
    my5353.c0m/4eica

    原网址:
    my5353.c0m/
    短网址:
    my5353.c0m/rPrF6
        31
    sobigfish   66 天前
    没做查重。。。所以 。。很多重复的你怎么办?
    ps:预防域名识别 o 改成了 0
        32
    luckyroach   66 天前 via Android
    你的 github 挂了。。。打开 404
        33
    whatsmyip   66 天前
    @sobigfish

    故意不做的,因为不同的人可能会创建指到同一个地址的短链接,而且还能维护,查看统计信息。

    后期空间问题的话,可以像上面哥们提出的一样,通过高频表压缩。
        34
    whatsmyip   66 天前
    @luckyroach

    v 站解析问题,后面多了一个句号。你可以直接点文字链接的。
        35
    timothyye   66 天前 via Android
    @yamedie 这网址屌屌屌
        36
    chuhemiao   66 天前
    网站规则未匹配,手残输错了。。。com 变 coom 了😂
        37
    whatsmyip   66 天前
    @chuhemiao

    😄
        38
    zdb1115   66 天前
    谢谢分享,这个很乱,
        39
    greenhat233   65 天前 via Android
    一直用 t.im
        40
    greatbody   65 天前
    @annoy1309 有些业务场景还是可能需要多个不同的短网址的。比如不同的人分享同一个网址,大家的统计数据应该是不同的。
        41
    eamo   65 天前
    可以装在子目录吗?比如我的域名 https://95s.me 已经在用了,可以用 https://95s.me/t/ 作为短网站前缀吗?
    可以不用设置成数字递增式?例如 https://95s.me/t/1 , https://95s.me/t/2 这种?这样就可以直接快速的键盘输入了
        42
    whatsmyip   65 天前
    子目录是可以的,修改 配置文件 static/config.js 和 config.inc.php ,然后再 修改一下 .htaccess 里面的网址应该就可以的
        43
    imshf   64 天前
    @yamedie 可以呀,老哥,相当优秀了
        44
    imshf   64 天前
    以前一直用新浪短链接,用着还行,今天发现了好多好玩的短链接哈哈
        45
    yamedie   64 天前
    @imshf 哈哈, 不要试图在 V2 的回帖发短链接, 因为包含 URL 点 cn, 尝试发两次, ip 就会被 ban 一天, 不要问我是怎么知道的 ::doge::
        46
    i4oolish   64 天前
    自不自持跳转链接负载均衡,以及防屏蔽?
        47
    whatsmyip   64 天前
    @yamedie ban 一天这么猛的吗
        48
    whatsmyip   64 天前
    @i4oolish

    短链接做负载均衡,这个要求高级了😄,不一般都是在服务器前端接 nginx、或者是 dns 分区解析么。

    防屏蔽这个没法做呀,需要监控有没有被屏蔽以及自动切换域名
        49
    i4oolish   64 天前
    @whatsmyip
    我的意思是一个短连接对应后端几个真实链接,用户点击短连接的时候,根据具体情况,跳转到不同的真实链接。
    比如在微信上分享链接就存在这样的应用场景。
    在短连接跳转到后端真实链接的时候,快速做一个判断后端哪个链接没有被屏蔽,以及后端的链接有没有达到自定义的设置(比如 1 分钟内访问了 1000 次),根据后端的这些规则,来给微信用户返回最合适的后端链接。
        50
    set01   62 天前
    还是限制一下比较好。如果有人通过你的服务跳 1024 的话,腾讯就会把你的域名加入风险域名,禁止微信直接访问
        51
    whatsmyip   62 天前
    @set01

    谢谢提醒,也是考虑到这个因素更换了域名。

    GFW 都投入使用那么多年了,效果也就那样,域名跟 IP 一样,是禁不完的,这精力花的可不值。除非启用白名单模式,但一个只能跳白名单的短链接服务又有什么意义呢。之前网站是部署在阿里云上的,它会自动去过滤这类的跳转,但是比较反感,我个人对 1024 类网站持开放态度,不太过分就行。

    至于风险域名,从用户角度,真正的风险域名阻断让浏览器来做好了,腾讯那些所谓的风险域名,说白了就是没交保护费罢了。

    而且,相信在阿里系的努力下,大家早就忽略腾讯所谓的风险域名了吧😄。
        52
    atbeta   62 天前
    原来这个真的有需求啊,用了目前主流的几个发现,网址都太长了,自己搭了一个超简单的自己用,现在还没做样式,计划近期做一下样式,站内朋友可以试用,只支持缩短网址,没有其他功能。

    https://ttt.st
        53
    atbeta   62 天前
    用的现成代码 CRZ.im ,页面底部就是作者的 github 链接
        54
    JUNJIE98   59 天前
    那我来发个粘贴板 copy.atodo.cn
        55
    whatsmyip   59 天前
    @JUNJIE98

    这个是共享编辑框?好像隐身打开也可以编辑
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   890 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 19:26 · PVG 03:26 · LAX 11:26 · JFK 14:26
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1