視頻 防下載方案


方案一:    (原文地址: http://blog.csdn.net/rexgene/article/details/53571845

 

前言

 

在近幾年,國內視頻版權慢慢得到了重視,各大視頻平台也紛紛打起了內容資源爭奪戰。然而購買版權是需要成本的,這種額外的成本,如果只是單靠傳統的廣告收費模式來支撐的話,無疑是彌補不了這額外帶來的成本消耗,所以在這同一時間,就出現了一種新的收費模式,也就是現在看到的,VIP特權收費模式。要實現這種模式,其最根本的問題,就是如何保護視頻,杜絕非法下載。不同的平台都有自己的一套實現方案,而在這里就主要說一下,近日我所研究的優酷視頻的實現方案。

 


 

面臨的問題

 

要防止非法下載,所需要解決的核心問題有以下四個:

 

  1. 防止真實視頻地址的暴露
  2. 防止視頻泄漏
  3. 防止真實視頻地址被猜測
  4. 防止播放器被分析

 

防止真實地址的暴露

 

在幾年前,如果看到有喜歡的視頻,就算平台沒有提供下載按鈕,想把視頻下來也是十分容易的一件事情。最簡單的做法,就是使用瀏覽器上的F12配套工具,查看下載資源的路徑;又或者直接使用http代理的軟件,來觀察打開頁面時的所有http請求。

 

而想要不被以上手段捕捉到,答案也非常明顯,只要在下載視頻文件的時候,避免使用http協議就好了。優酷的做法是把真實的下載鏈接,隱藏在http://k.youku.com/player/getFlvPath接口的背后,通過返回的json結果,來獲得真實的下載連接,然后再使用tcp進行文件下載。

 

防止視頻泄漏

 

每個視頻在觀看的時候,都必須會經過下載這個過程,而有下載就會有它所存放的鏈接路徑,尤其會員專屬的視頻,為了提高吸引力,一般都會提供限時的免費試看,一旦有試看,就會有對應的下載鏈接。就算是使用tcp進行下載,也很難避免下載地址不被其他抓包工具發現,而一旦地址暴露后,如何去降低鏈接暴露后視頻泄漏程度呢?一般來說,有三種方法:

 

  1. 視頻加密
  2. 區分試看片源與正片源
  3. 視頻切片

 

這三種方法里面,優酷使用的是第三種,視頻切片。而第一,二種為什么不使用,原因是這兩種方法都會帶來一些負面的影響。首先來說說視頻加密,要實現視頻加密,所要面臨的問題有兩個,一個是視頻加密時所帶來的維護工作量,第二個是在解密過程中,有一定程度上影響了視頻解碼速率。而第二個方法,如果收費的視頻,都區分正片跟試看片,無疑在硬盤空間使用量上,將會有一定程度的消耗。而第三種方法,則是在這三種方法里面,負面影響最少,同時可行性也是比較高的一種方案。

 

所謂的視頻切片,就是通過固定的時間,對視頻進行切割,每一段都分開加載,當上一段觀看快結束的時候,才開始加載下一段。這樣做的好處是,試看的時候,服務器只需要提供第一分片的視頻地址,而后續的分片則在試看過程中不會再請求,從而避免了視頻泄露的問題,既達到了第二種方法的效果,同時也不會有太大的硬盤空間消耗。

 

防止視頻地址被猜測

 

為了弱化業務的邏輯復雜度,一般的文件服務器,都是無狀態的,很少會去校驗請求的用戶是否具有權限,所以在文件下載地址上,需要一定程度上地避免被猜測的可能。

 

以上面的切片例子為例,假如第一分片的地址,被用戶知道了,如果單單通過修改一個分片ID,就可以下載不同的分片的話,那么這個切片的處理就完全沒有意義的。所以優酷在每個分片上都會單獨生成一個security code, 而在獲取下載鏈接地址的時候,則需要通過security code參與特定算法生成訪問路徑,從而降低視頻地址被猜測的可能性。

 

防止播放器被分析

 

要保證算法的保密性,就必須要做到算法不被分析。現在的網頁播放器大多是使用Flash來做,而運行在Flash VM上代碼,基本上都可以說是透明的,所以優酷在核心的加密解密算法上,使用了Alchemy技術,把關鍵代碼都轉到了LLVM上,從而在一定程度上,保證了算法的保密性

 


 

總結

 

以上內容,就是近日我在分析優酷播放器時的一些心得和總結,在最后說到的Alchemy技術,不只是視頻,其實很多行業都可以用的上,比如說Flash頁游客戶端,或者使用了Adobe AIR的手游,都可以使用這技術盡最大可能性地保障客戶端的保密性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM