qsnow6
V2EX  ›  问与答

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

  •  
  •   qsnow6 · Jan 11, 2018 · 3296 views
    This topic created in 3129 days ago, the information mentioned may be changed or developed.
    例如
    里面的 v=是怎么生成的,感觉这样防爬虫挺好的,但是像 youtube 这么大量的视频,ID 不会重复吗
    Supplement 1  ·  Jan 12, 2018
    12 replies    2018-01-12 00:30:52 +08:00
    davidyin
        1
    davidyin  
       Jan 11, 2018
    我猜是生成后再查一下重就可以了。
    ghiei9101
        2
    ghiei9101  
       Jan 11, 2018
    62 ** 11 = 52036560683837093888

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

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

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

    举个例子:一般来说随机的密码被认为不能枚举。
    rogwan
        9
    rogwan  
       Jan 11, 2018
    @geelaw 这个是可逆算法,不是为了安全。
    chinvo
        10
    chinvo  
       Jan 11, 2018 via iPhone
    参见 twitter 的 snowflake,原理应该差不多
    zingl
        11
    zingl  
       Jan 11, 2018
    shorturl 呗
    rubycedar
        12
    rubycedar  
       Jan 12, 2018 via iPhone
    hashids+1
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5762 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 03:23 · PVG 11:23 · LAX 20:23 · JFK 23:23
    ♥ Do have faith in what you're doing.