1. 程式人生 > >防盜鏈測試01 - Jwplayer+Tengine2.3.1 mp4模組打造流媒體測試伺服器

防盜鏈測試01 - Jwplayer+Tengine2.3.1 mp4模組打造流媒體測試伺服器

最近有個想法,想做類似下面的視訊URL防盜驗證;

1、URL Tag Validation

2、Special format of URL for preventing unauthorized usage and access、
sample
  Original: http://www.baidu.com/2016/0704/8025915_HD-60i_7198.mp4
  Using UTV:http://www.baidu.com/2016/0704/8025915_HD-60i_7198.mp4?px-time=1467685158&px-hash=a08a3c149514aae2aea14755a45a29c2

  px-time : current time or expire time
  px-hash : hash(secret + url_path +expire_time) 

  

下面是我的想法,按照想法先搞一下;

 

1. 一個簡單流媒體測試伺服器。

2. 搞清楚頁面防盜連結所需要的知識,比如開啟視訊連結繼而驗證referer,還有新增校驗的args等。

3. 優化,新增功能。

4. 驗證這些是否符合需求。

 

搭建流媒體使用tengine 新版自帶的mp4模組

下載原始碼:http://tenine.taobao.org/download.html

./configure  --prefix=/web --with-http_sub_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_v2_module  --with-http_ssl_module   --with-http_image_filter_module  --with-http_image_filter_module=dynamic --with-http_sub_module --with-http_mp4_module && make && make install

 

Nginx配置檔案:

####
    server {
        listen       80;
        server_name  xxxxxx;

        access_log  logs/vhost/xxxxxx_access.log  main;
        #access_log  "pipe:rollback logs/vhost/xxxxxx.access_log interval=1d baknum=7 maxsize=2G"  main;

        location / {
            root   xxxxxx;
            index  index.html index.htm;
            mp4;  #mp4配置,沒有做優化
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }

 

播放器選用Jwplayer

https://www.jwplayer.com  PS:註冊☑️勾選了開發者就可以獲取JS連結;jdk等用來測試嗯嗯免費^ ^。

 

 

編輯測試頁面:

index.html

<!DOCTYPE heml>
<html>
    <head>
        <!-- 在這裡替換自己的JW Player id -->
        <script type="text/javascript" src="https://cdn.jwplayer.com/libraries/xxxx.js"></script>
        <script type="text/javascript" src="getParam.js"></script>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    </head>

    <body bgcolor="#000000">
        <div id="myElement">Loading the page...</div>
        <script type="text/javascript">
            var file_name=getParam('id');
            console.log(file_name);
            jwplayer("myElement").setup({
                file: "http://x.x.x.x:8081/" + file_name,
                // image: "data/myposter.jpg",
                title: file_name,
            });
        </script>
    </body>
</html>

 

獲取檔案getParam.js 

function getParam(paramName) {
    paramValue = "", isFound = !1;
    if (this.location.search.indexOf("?") == 0 && this.location.search.indexOf("=") > 1) {
        arrSource = unescape(this.location.search).substring(1, this.location.search.length).split("&"), i = 0;
        while (i < arrSource.length && !isFound) arrSource[i].indexOf("=") > 0 && arrSource[i].split("=")[0].toLowerCase() == paramName.toLowerCase() && (paramValue = arrSource[i].split("=")[1], isFound = !0), i++;
    }
    return paramValue == "" && (paramValue = null), paramValue;
}

 

流媒體測試伺服器就基本搭建ok了,測試下:

下面的url大家也可以播放,需要番茄下,dig下就知道了。

http://www.agawater.cn/mp4/?id=xzz.mp4 

順帶說一嘴:年輕真好。

 

參考資料:

https://www.xiaohulu.com/video/user_detail?plat=201&roomid=61936357840

https://www.cnblogs.com/nopnog/p/7452405.html

https://www.cnblogs.com/vinyuan/p/3556218.html

https://leefige.github.io/2019/03/05/%E5%9F%BA%E4%BA%8ENginx%E9%85%8D%E7%BD%AEWeb%E8%A7%86%E9%A2%91%E6%B5%81%E5%AA%92%E4%BD%93%E6%9C%8D%E5%8A%A1%E5%99%A8/

&n