V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
qsnow6
V2EX  ›  问与答

youtube 网址中的随机字符串是怎么生成的?

  •  
  •   qsnow6 · 2018-01-11 17:04:58 +08:00 · 2833 次点击
    这是一个创建于 2508 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如
    里面的 v=是怎么生成的,感觉这样防爬虫挺好的,但是像 youtube 这么大量的视频,ID 不会重复吗
    第 1 条附言  ·  2018-01-12 09:09:08 +08:00
    12 条回复    2018-01-12 00:30:52 +08:00
    davidyin
        1
    davidyin  
       2018-01-11 18:38:34 +08:00
    我猜是生成后再查一下重就可以了。
    ghiei9101
        2
    ghiei9101  
       2018-01-11 18:40:56 +08:00
    62 ** 11 = 52036560683837093888

    重复的可能性极低
    ghiei9101
        3
    ghiei9101  
       2018-01-11 18:45:52 +08:00
    62 ** 11 / 100 / 12 / 30 / 24 / 60 = 1003791679857.968632
    一分钟上传 1003791679857 个视频 够使用 100 年的
    0ZXYDDu796nVCFxq
        4
    0ZXYDDu796nVCFxq  
       2018-01-11 19:10:18 +08:00
    这个 v 不止 62 进制,据我观察至少还有两个符号 -_
    所以至少应该是 26 * 2 + 10 + 2 = 64
    rogwan
        5
    rogwan  
       2018-01-11 19:13:47 +08:00 via Android   ❤️ 1
    这个算法 http://hashids.org
    geelaw
        6
    geelaw  
       2018-01-11 19:30:26 +08:00 via iPhone   ❤️ 1
    @ghiei9101 如果这个东西是随机的,那么使用年限的计算是不对的,实际上用到 sqrt(pow(62,11)) 的时候就不太方便了(生日攻击)。

    一个自然的想法是使用一个 secure PRP f,随机选一个 key k,然后 f(k, counter)。不过这样做显然是 overwhelming 的。

    @rogwan 这个算法不能防枚举。
    chinvo
        7
    chinvo  
       2018-01-11 19:34:13 +08:00
    @geelaw 随机也不能放枚举谢谢
    geelaw
        8
    geelaw  
       2018-01-11 19:36:49 +08:00 via iPhone
    @chinvo 我是指以不 negl 概率枚举成功(枚举到存在的项,毕竟楼主关心的是防爬虫),你需要理解语境。

    举个例子:一般来说随机的密码被认为不能枚举。
    rogwan
        9
    rogwan  
       2018-01-11 19:58:48 +08:00
    @geelaw 这个是可逆算法,不是为了安全。
    chinvo
        10
    chinvo  
       2018-01-11 20:06:06 +08:00 via iPhone
    参见 twitter 的 snowflake,原理应该差不多
    zingl
        11
    zingl  
       2018-01-11 21:10:52 +08:00
    shorturl 呗
    rubycedar
        12
    rubycedar  
       2018-01-12 00:30:52 +08:00 via iPhone
    hashids+1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   978 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:50 · PVG 03:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.