有數位版權保護的,不下
Widevine、FairPlay、PlayReady 這幾樣是版權方給影片加的保護措施。 遇到這類影片,VGrab 會認出來,在介面上明說「這個影片有版權保護,下不了」,然後停下。
這不是能力問題,是我們不做的事。解開版權保護屬於規避保護措施,不是技術難題 —— 所以擴充功能裡不會有這方面的任何程式碼,將來也不會加。
YouTube,不做
這件事我們真的去看了一遍,不是憑印象說的:在真實的播放頁面上把播放時發出去的請求抓下來看, 結論是三道坎,性質不一樣:
- 格式不同。它用的傳法和普通網站不一樣,畫面和聲音分兩路傳, 頁面上一條 m3u8 都沒有。這一條只是工程量,不涉及對抗。
- 造訪控制。影片網址有有效期、綁著請求方的網址、帶兩道簽名。 這些主要是防盜鏈和防濫用,順帶讓下載變難。
- 專門針對下載的防護。網址裡有一個限速引數,算不對伺服器就慢慢喂; 算它的那段程式碼藏在會變的播放器指令碼里,要拿到可用的網址就得去逆向那段程式碼。
第三條是我們停下的地方。這個專案一開始就寫下了兩條硬約束: 遇到人機驗證就停下來報錯、不去偽裝成人類;不碰版權保護。 逆向人家專門為了防下載而設的東西,是同一類事。所以不做。
還有一層現實原因:應用程式商店的開發者政策本來就不允許擴充功能下載 YouTube 的內容。 同類擴充功能的商店頁面上也都寫著這一條。
撞上人機驗證,也停
有些網站會彈出「正在進行安全驗證」那種頁面。VGrab 不會去偽造瀏覽器指紋、 不會去接打碼服務、不會用任何繞過驗證的辦法。
正確的做法只有一條:由你自己在瀏覽器里正常開啟那一頁、正常過掉驗證, 擴充功能讀的就是你真實瀏覽出來的那一頁。擴充功能這個形態天然就是這麼工作的 —— 它不替你造訪網站,只是把你已經開啟的那一頁裡的東西整理出來。
那還剩下什麼
剩下的是絕大多數:普通網站上的切片流(m3u8、DASH)、 一整個檔案的 MP4 / WEBM / FLV、AES-128 加密的切片流、 畫面和聲音分兩條軌傳的、以及不交出網址的播放器和直播(用錄製)。
換句話說,VGrab 做的是把你已經能看的東西存下來, 不是把你看不到的東西弄出來。這條線以後也不會挪。