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

2018-01-11 17:04:58 +08:00
 qsnow6
例如 <amp-youtube data-videoid="CvUN8qg9lsk" layout="responsive" width="480" height="270"></amp-youtube>里面的 v=是怎么生成的,感觉这样防爬虫挺好的,但是像 youtube 这么大量的视频,ID 不会重复吗
2858 次点击
所在节点    问与答
12 条回复
davidyin
2018-01-11 18:38:34 +08:00
我猜是生成后再查一下重就可以了。
ghiei9101
2018-01-11 18:40:56 +08:00
62 ** 11 = 52036560683837093888

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

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

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

举个例子:一般来说随机的密码被认为不能枚举。
rogwan
2018-01-11 19:58:48 +08:00
@geelaw 这个是可逆算法,不是为了安全。
chinvo
2018-01-11 20:06:06 +08:00
参见 twitter 的 snowflake,原理应该差不多
zingl
2018-01-11 21:10:52 +08:00
shorturl 呗
rubycedar
2018-01-12 00:30:52 +08:00
hashids+1

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/422087

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX