2016-03-01 190 views
2

我試着YouTube視頻的URL的播放,發現每兩個視頻有兩個鏈接,例如每個YouTube視頻兩個鏈接

假設一個視頻有以下鏈接

https://www.youtube.com/watch?v=YykjpeuMNEk

現在我更改鏈接的最後一個字母,使其

https://www.youtube.com/watch?v=YykjpeuMNEl

試試這兩個鏈接會打開一個視頻。

邏輯是用連續的字母改變最後一個字母,字母區分大小寫。因此,如果最後一個字母是'a'將其更改爲'b',如果'A'將其更改爲'B',並且'1'將其更改爲'2'。

有人可以解釋我在這種情況下發生了什麼?

+0

我認爲你偶然發現了一個謎。它可能會更深入。看看這個:通過谷歌搜索的網址:https://www.youtube.com/watch?v = sFqeWTfVi3I工作正常。現在將最後一封信改爲大寫'L' ......再次運作。現在改回它 - 「視頻不可用」。奇怪的。另外,根據你的評論,'K'和'J'工作。 –

回答

1

這是因爲YouTube ID使用Base64變體,每個Base64字符都是純ASCII,這意味着它只提供6位,最終解碼的字節值是8位的倍數。這不可避免地會導致不完全匹配,除非特別指出額外的結束字符,否則這些最低位中的一些根本沒有意義。

YouTube ID:6位* 11 = 66位。

給定的數據似乎表明,YouTube視頻ID實際上是一個轉換爲Base64的64位數字。由於我們有66位,只需要64位,這意味着最後2位被忽略。

實際應用時,這似乎並不完全是是真的。

YykjpeuMNEk => K = 1101011

如果我們忽略最後2個比特存在,那麼我們參見k實際上是(11末端)的最高值,而其他的將是較低的值,即h,i和j;分別是1101000,1101001和1101010.相反,它們是l,m和n。

這可能只是由於最終值被處理爲64位數字的方式。這個理論依然如此。儘管是66位的Base64字符串,但YouTube ID只能精確到64位。

意思是,每個YouTube網址都沒有兩個,但實際上四個與它匹配的ID。