爱东东

VS.NET,IT,个人,个人网站 爱东东 http://www.idongdong.net

 

页面WMP传参防盗链

搜到的一个例子,这个动态页面动态生成asx,而后mediaplayer播放
<%@   page   language="java"   contentType="video/x-ms-asf;   charset=gb2312"% >
<%
                  //音乐文件所在的目录,我这里用的是绝对路径,自己随意
String   songid=(String)request.getAttribute("songid");
                  /*从Servlet中传过来的多个音乐文件,之间用"_"连接
                      然后再用String类的split("")方法拆分字符串为数组,将字符串数组循环
                      写入asx标记中*/
String[]   str=songid.split("_");
% >
<ASX   Version   =   "3.0" >
<%
for(int   i=0;i <str.length;i++)
{
                            /*我的站点音乐文件和JSP程序不在一个服务器上
                                文件录入数据库时没有加扩展名,所以我下面加上了".wma",自己随意
                            */
                            str[i]=str[i]+".wma";
% >
<Entry >
<Author > </Author >
<Copyright >低品质音乐,仅供试听!请支持正版唱片! </Copyright >
<Title > </Title >
<Param   Name   =   "WM/AlbumTitle"   Value   =   "爱龙♂空间[www.ilkj.net]"   / >
<Ref   href   =   " <%=url+str[i]% >"   / >
</Entry >
<%
}
% >
</ASX >

request.getAttribute("songid");由后台动态生成,这时可以在随机码等方面做手脚,达到防止盗链的目的。

还有一个,在此基础上,在Windows Media Server端做插件,采用类似如下模式:
<object id="mplayer1" height="60" width="300" classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6" class="player">
<PARAM NAME='URL' value="mms://60.190.28.152/VOD1/VOD/SMM/film03123001.WMV?00D2752D19D3B7C04B20D4364B061C94">
<param name="rate" value="1">
<param name="balance" value="0">
<param name="currentposition"  value="0">
<param name="defaultframe" value>
<param name="playcount" value="100">
<param name="autostart" value="-1">
<param name="currentmarker" value="0">
<param name="invokeurls" value="-1">
<param name="baseurl" value>
<param name="volume" value="100">
<param name="mute" value="0">
<param name="uimode" value="full">
<param name="stretchtofit" value="0">
<param name="windowlessvideo" value="0">
<param name="enabled" value="-1">
<param name="enablecontextmenu" value="0">
<param name="fullscreen" value="0">
<param name="samistyle" value>
<param name="samilang" value>
<param name="samifilename" value>
<param name="captioningid" value>
<param name="enableerrordialogs" value="0">
<param name="_cx" value="8123">
<param name="_cy" value="1588">
</object>

或动态生成asx时,在url中加随机码参数。
而后服务器端插件获取随机码,进行比较,如果比较错误,则拒绝播放。

测试结果可行。在服务器端写授权插件,通过授权插件中对随机校验码进行校验,以此控制该音/视频只能在特定网页上播放。

打开网页->验证服务器端生成随机校验码->随机校验码写入页面客户端播放器参数->流媒体服务器授权插件获得客户端播放器传递的随机校验码->授权插件与验证服务器进行随机码比较->确认随机码正确,则播放,否则不播放。随机码设定较短失效时间,例如1分钟。
另:为了控制一个账户只能自己看,不能多个人同时用一个账户查看。可以通过客户端页面与心跳服务器进行心跳的方式,采用类似QQ踢人的方式,来控制,始终只有一个人用以一个账号看视频。

posted on 2007-10-16 10:25  爱东东  阅读(455)  评论(1编辑  收藏  举报

导航