开源一个简单的短网址程序 Ourls - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
takashiki
V2EX    分享创造

开源一个简单的短网址程序 Ourls

  •  
  •   takashiki
    takashiki 2015-09-20 17:21:10 +08:00 13641 次点击
    这是一个创建于 3673 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一直想要自己搭一个短网址服务,奈何 github 上找过几圈,都没有找到十分符合心意的,于是就趁周末自己写了一个。

    Ourls 是一个基于发号加 hash id 实现的短址服务,灵感来源于知乎上关于短址生成算法的一个问题下的讨论,http://www.zhihu.com/question/29270034

    详见:http://blog.skyx.in/archives/183/

    在线演示地址:http://skyx.in/

    github 地址:https://github.com/takashiki/Ourls

    osc 地址:http://git.oschina.net/takashiki/Ourls

    第 1 条附言    2015-09-20 18:03:50 +08:00
    额,我只想求刷链接的大大不要刷了好么 T T
    第 2 条附言    2015-09-22 22:10:56 +08:00
    现已支持自动补充 http
    33 条回复    2017-12-29 17:03:53 +08:00
    Xrong
        1
    Xrong  
       2015-09-20 17:29:52 +08:00
    http://skyx.in/GRv7G 直接 500 错误了
    hinate
        2
    hinate  
       2015-09-20 17:34:25 +08:00
    Tink
        3
    Tink  
    PRO
       2015-09-20 17:36:36 +08:00
    正则也有问题,非 url 也能直接缩址
    takashiki
        4
    takashiki  
    OP
       2015-09-20 17:43:36 +08:00
    @Xrong
    @hinate url 里没带 http 吧
    takashiki
        5
    takashiki  
    OP
       2015-09-20 17:44:35 +08:00
    @Tink 没写正则,正则以后可能考虑前端加一下,后端不加,这样就能用来编码其他信息了
    popok
        6
    popok  
       2015-09-20 17:56:16 +08:00
    生成短地址按顺序编号,存入数据库,编号转换成 62 进制( 26 小写, 26 大写, 10 数字)。
    还原长地址把 62 进制转 10 进制,进数据库按编号查长地址, 301 跳
    popok
        7
    popok  
       2015-09-20 17:57:28 +08:00
    对了,上面是我的思路
    takashiki
        8
    takashiki  
    OP
       2015-09-20 18:00:20 +08:00
    @popok hash 是为了防止被遍历
    huangtao728
        9
    huangtao728  
       2015-09-20 19:12:27 +08:00 via Android
    500 Internal Server Error

    Missing argument 1 for {closure}(), called in /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/core/Dispatcher.php on line 160 and defined (2 )

    #0 /data1/www/htdocs/518/ourls/1/app/routes.php (75 ): flight\Engine->handleError (2, 'Missing argumen...', '/data1/www/htdo...', 75, Array )
    #1 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/core/Dispatcher.php (160 ): {closure}()
    #2 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/core/Dispatcher.php (143 ): flight\core\Dispatcher::callFunction (Object (Closure ), Array )
    #3 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/core/Dispatcher.php (48 ): flight\core\Dispatcher::execute (Object (Closure ), Array )
    #4 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/Engine.php (64 ): flight\core\Dispatcher->run ('notFound', Array )
    #5 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/Engine.php (324 ): flight\Engine->__call ('notFound', Array )
    #6 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/Engine.php (324 ): flight\Engine->notFound ()
    #7 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/core/Dispatcher.php (191 ): flight\Engine->_start ()
    #8 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/core/Dispatcher.php (142 ): flight\core\Dispatcher::invokeMethod (Array, Array )
    #9 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/core/Dispatcher.php (48 ): flight\core\Dispatcher::execute (Array, Array )
    #10 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/Engine.php (64 ): flight\core\Dispatcher->run ('start', Array )
    #11 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/core/Dispatcher.php (191 ): flight\Engine->__call ('start', Array )
    #12 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/core/Dispatcher.php (191 ): flight\Engine->start ()
    #13 /data1/www/htdocs/518/ourls/1/vendor/mikecao/flight/flight/Flight.php (65 ): flight\core\Dispatcher::invokeMethod (Array, Array )
    #14 /data1/www/htdocs/518/ourls/1/public/index.php (18 ): Flight::__callStatic ('start', Array )
    #15 /data1/www/htdocs/518/ourls/1/public/index.php (18 ): Flight::start ()
    #16 {main}

    应该禁止缩短 skyx.in
    404 页面也该改一改。
    takashiki
        10
    takashiki  
    OP
       2015-09-20 19:23:28 +08:00
    @huangtao728 嗯,是的,刚刚改了, 500 我也改下
    kfll
        11
    kfll  
       2015-09-20 19:38:17 +08:00 via iPhone
    huangtao728
        12
    huangtao728  
       2015-09-20 19:45:41 +08:00 via Android
    @takashiki
    恩, 500 不再爆出错误了。
    把我刚才创的短链接删掉吧,现在点击仍有循环跳转。
    skyx.in/Vy3g2skyx.in/skyx.in/skyx.in
    takashiki
        13
    takashiki  
    OP
       2015-09-20 19:47:20 +08:00
    run2
        14
    run2  
       2015-09-20 20:02:51 +08:00
    哟,发现 bug 了
    t/222201#reply13
    t/222201#reply14
    你说这 2 个 url 一样不呢?
    takashiki
        15
    takashiki  
    OP
       2015-09-20 20:06:00 +08:00
    @sobigfish 不一样,我是直接取整个 url 的 sha1 值的
    hinate
        16
    hinate  
       2015-09-20 21:56:02 +08:00 via Android
    我那个短连是好了,但我当时是填的百度的地址,现在打开是不对的,难道当时我和一楼填的地址不一样生成的确实一样的?
    takashiki
        17
    takashiki  
    OP
       2015-09-20 22:03:26 +08:00
    @hinate 你是啥时候生成的,我一开始发出来的时候不知道是有人刷还是爬虫刷,刷了接近一万条记录,我就把之前的全清掉了。
    takashiki
        18
    takashiki  
    OP
       2015-09-20 22:04:43 +08:00
    @hinate 应该是因为我清掉一批之后 id 又从头开始了
    GPU
        19
    GPU  
       2015-09-20 22:15:00 +08:00
    昨天的 wwurl 很漂亮
    takashiki
        20
    takashiki  
    OP
       2015-09-20 22:33:11 +08:00
    @GPU 我一般前端都用现成的框架
    GPU
        21
    GPU  
       2015-09-20 22:47:13 +08:00
    ob
        22
    ob  
       2015-09-20 22:50:49 +08:00
    welly
        23
    welly  
       2015-09-20 22:52:20 +08:00
    各位技术大牛:
    我在想有没有这种功能,短网址能不能撤销其指向的功能,使其链接指向失效啊。类似默认开启,手动撤销
    ilskenyf
        24
    ilskenyf  
       2015-09-20 22:59:42 +08:00 via iPhone
    abelyao
        25
    abelyao  
       2015-09-20 23:32:20 +08:00
    @welly 我记得国外有一个短网址,还支持设定有效时长,这样也蛮不错的~
    czb
        26
    czb  
       2015-09-21 02:42:00 +08:00 via Android
    czb
        27
    czb  
       2015-09-21 02:45:28 +08:00 via Android
    @ilskenyf 在 Control panel 下有一个 Limit access
    takashiki
        28
    takashiki  
    OP
       2015-09-21 07:14:48 +08:00 via Android
    @welly 加个状态就行了啊
    jedyu
        29
    jedyu  
       2015-09-21 16:16:38 +08:00
    http://skyx.in/Vydr1
    确实不被遍历这个挺好的
    evanlyu
        30
    evanlyu  
       2015-09-24 12:34:04 +08:00
    @jedyu 雷锋
    jedyu
        31
    jedyu  
       2015-09-24 13:48:29 +08:00
    @evanlyu 不要声张
    50vip
        32
    50vip  
       2015-11-13 18:35:22 +08:00
    很赞,我用这个开源搭建了一个 http://xo2.cn/ ,感谢开源~
    initdrv
        33
    initdrv  
       2017-12-29 17:03:53 +08:00
    感谢分享!已经搭建成功。再次感谢大佬开源!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5980 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 06:12 PVG 14:12 LAX 23:12 JFK 02:12
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86