Youtube 是現在全球最大的視頻網站,自然是保護機制做的最繁瑣的視頻網站,但相對的網上可以找到解析下載的
解法也最多,熱心維護解析機制的老外也最多。
現在最新通用的解析方式是查找網頁裏的 ytplayer json 裏的 影片網址,找到後,可以發現這些網址是會作不規則
的排序,這裡需要先作整理。
以這個日本影片為例:https://www.youtube.com/watch?v=d_ynWYURjNU
可以看到網頁源碼裏的影片網址
需要先作兩次的 html url decode 然後再作處理,最高解析度的 mp4 就是查找到帶有 mp4 字的網址第一個。
在視頻網址的 signature 邏輯,youtube 故意用了障眼法,給了一個不對的 signature,後續就是對這個 signature
進一步解析。
在網頁裏的這個 http://s.ytimg.com/yts/jsbin/player-vfllqtOs7/zh_TW/base.js 腳本裏,對於 signature 處理可以
找到:
對應到 FK 函數:
再對應到 EK 函數
也就是正確的 signature 字串是從網頁上可以看到的 s= 後面那個簽章字串再作 reverse splice 幾次處理得到新的字串。
新生成後的影片下載網址,也是按照 http header 的 referer 加上原先網址,要斷點續傳,設置 header range
初始值,就可以下載了,不像 嗶哩嗶哩 還多一個限流的處理。