我在youtube上发现了一些错误,当我反向工程的时候,它是视频标识生成器。如果我更改视频id的最后一个字符,它将重定向到同一个视频。这怎麽可能?
示例:
https://www.youtube.com/watch?v=9bZkp7q19f0
https://www.youtube.com/watch?v=9bZkp7q19f1
https://www.youtube.com/watch?v=9bZkp7q19f2
https://www.youtube.com/watch?v=9bZkp7q19f3但这个网址不管用:
https://www.youtube.com/watch?v=9bZkp7q19f4发布于 2017-07-30 20:27:20
videoId是8字节(64位) base64编码。来自this post:
对于videoId,它是一个8字节(64位)整数.将Base64 64编码应用于8个字节的数据需要11个字符。但是,由于每个Base64字符都传递了确切的6位,这种分配实际上可以容纳11×6= 66位--超过我们的有效载荷需要的2位。多余位被设置为零,其效果是排除某些字符出现在编码字符串的最后一个位置。特别是,videoId总是以下列之一结尾:{ A,E,I,M,Q,U,Y,c,g,k,o,s,w,0,4,8}
在您的例子中,您的videoId是9bZkp7q19f0:
enc. | 9 b Z k p 7 q 1 9 f | 0
value | 61 27 25 36 41 59 42 53 61 31 | 52
bin. | 111101 011011 011001 100100 101001 111011 101010 110101 111101 011111 | 1101 00如果修改最后一个字符,如果修改了4个最有意义的位(MSB),则64位id将更改:
9bZkp7q19f1:
enc. | 9 b Z k p 7 q 1 9 f | 1
value | 61 27 25 36 41 59 42 53 61 31 | 53
bin. | 111101 011011 011001 100100 101001 111011 101010 110101 111101 011111 | 1101 019bZkp7q19f2:
enc. | 9 b Z k p 7 q 1 9 f | 2
value | 61 27 25 36 41 59 42 53 61 31 | 54
bin. | 111101 011011 011001 100100 101001 111011 101010 110101 111101 011111 | 1101 109bZkp7q19f3:
enc. | 9 b Z k p 7 q 1 9 f | 3
value | 61 27 25 36 41 59 42 53 61 31 | 55
bin. | 111101 011011 011001 100100 101001 111011 101010 110101 111101 011111 | 1101 11这将提供一个不同的视频id (请注意,最后一个字节的4个MSB被修改为1101到1110):
enc. | 9 b Z k p 7 q 1 9 f | 4
value | 61 27 25 36 41 59 42 53 61 31 | 56
bin. | 111101 011011 011001 100100 101001 111011 101010 110101 111101 011111 | 1110 009bZkp7q19f4将提供不同的64位id。注意,如果存在这样的id,9bZkp7q19f4、9bZkp7q19f5、9bZkp7q19f6和9bZkp7q19f7将提供相同的id。
您可以检查base64编码/值here
https://stackoverflow.com/questions/45403510
复制相似问题