实现电影防盗链功能 |
注意:以下仅实现功能,并未整合到网站中 |
|
一、加密解密及相关函数(FilmFun.asp) |
<% |
' ================= 函数部分 =================== |
|
Function GetFileName(longname)'/folder1/folder2/file.asp=>file.asp |
while instr(longname,"/") |
longname = right(longname,len(longname)-1) |
wend |
GetFileName = longname |
End Function |
' ================= 文件名加密 =================== |
Function Encrypt(Ecode) |
Dim texts |
Dim i |
For i=1 To Len(Ecode) |
texts = texts & Chr(Asc(Mid(Ecode,i,2))+i) |
Next |
Encrypt = texts |
End Function |
' ================= 文件名解密 =================== |
Function UnEncrypt(Dcode) |
Dim texts |
Dim i |
For i=1 To Len(Dcode) |
texts = texts & Chr(Asc(Mid(Dcode,i,2))-i) |
Next |
UnEncrypt = texts |
End Function |
%> |
|
二、入口文件(Play.asp) |
<link href="Style.css" rel="stylesheet" type="text/css"> |
<!--#include file="FilmFun.asp" --> |
<script src="close.js" type="text/javascript"></Script> |
<% |
' ################################### |
IF Session("Film_Flag") = 5 Then%> |
<SCRIPT LANGUAGE="javascript"> |
function go() |
{ |
window.open('OpenWinPlay.asp?id=film','newwindow','height=405,width=450,top=120,left=200,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no,status=no'); |
CloseWin(); |
} |
</script> |
<br><div align=center><a href="#" onclick="go();">·播放电影防盗链测试</a></div> |
<% |
Else |
' ################################### |
Session("Film_Flag") = Session("Film_Flag") + 1 |
Response.Write "<br><div align=center>·播放电影防盗链测试 [请刷新5次,您已经刷新</font>" & Session("Film_Flag")-1 & "次</font>]</div>" |
End IF |
%> |
|
三、播放页面(OpenWinPlay.asp) |
<link href="Style.css" rel="stylesheet" type="text/css"> |
<script src="CloseWin.js" type="text/javascript"></Script> |
<body topmargin="0" leftmargin="0"> |
<!--#include file="FilmFun.asp" --> |
<% |
Dim FilmName |
IF Session("Film_Flag") = "" Then |
' ################################### |
Response.Write "<script>CloseWin();</script>" |
Else |
' 注意,这个算法对中文支持不好,用英文 |
FilmName = Encrypt("test.rmvb") '加密文件名 |
%> |
<script>setTimeout("document.all.view.style.visibility = 'visible'","1");</script> |
<div id=view style="visibility: hidden;position:absolute; width:0px; height:0px; z-index:0;; left: 0; top: 0"> |
<table width="450" border="0" cellspacing="0" cellpadding="0" height="300" bgcolor="#FFFFFF"> |
<tr><td valign="top"> |
<!-- 实体内容开始 --> |
<table border="0" width="450" id="table1" height="295" cellpadding="0" cellspacing="0"> |
<tr> |
<td height="23" width="450" bordercolor="#C0C0C0" bgcolor="#9AADCD"> |
<p><b><font face="宋体" color="#FFFFFF">﹢南京租房网电影院(NJZUFANG.COM)</font></b></td> |
</tr> |
|
<tr align="center"> |
<td valign="top" align="center"> |
<object id="player" name="player" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" width="430" height="295"> |
<param name="_ExtentX" value="18415"> |
<param name="_ExtentY" value="9102"> |
<param name="AUTOSTART" value="-1"> |
<param name="SHUFFLE" value="0"> |
<param name="PREFETCH" value="0"> |
<param name="NOLABELS" value="-1"> |
<param name="SRC" value="Film.asp?id=<%=FilmName%>"> |
<param name="CONTROLS" value="Imagewindow"> |
<param name="CONSOLE" value="clip1"> |
<param name="LOOP" value="0"> |
<param name="NUMLOOP" value="0"> |
<param name="CENTER" value="0"> |
<param name="MAINTAINASPECT" value="0"> |
<param name="BACKGROUNDCOLOR" value="#000000"> |
</object><br> |
<object ID="RP2" CLASSID="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" WIDTH="430" HEIGHT="57"> |
<param name="_ExtentX" value="18415"> |
<param name="_ExtentY" value="1005"> |
<param name="AUTOSTART" value="-1"> |
<param name="SHUFFLE" value="0"> |
<param name="PREFETCH" value="0"> |
<param name="NOLABELS" value="-1"> |
<param name="SRC" value="Film.asp?id=<%=FilmName%>"> |
<PARAM NAME="CONTROLS" VALUE="ControlPanel,StatusBar"> |
<param name="CONSOLE" value="clip1"> |
<param name="LOOP" value="0"> |
<param name="NUMLOOP" value="0"> |
<param name="CENTER" value="0"> |
<param name="MAINTAINASPECT" value="0"> |
<param name="BACKGROUNDCOLOR" value="#000000"> |
</object> |
</td> |
</tr> |
<tr> |
<td valign="middle" height="28" width="450" style="padding-left:10px;"> |
观看者:小三 来源IP: 127.0.0.1 <input type=button value=" 关 闭 " onclick="CloseWin()"></td> |
</tr> |
</table> |
<!-- 实体内容结束 --> |
</td> |
</tr> |
</table> |
</div> |
<%End IF%> |
|
四、实现防盗页面(Film.asp) |
<script src="CloseWin.js" type="text/javascript"></Script> |
<!--#include file="FilmFun.asp" --> |
<% |
' ########## 电影文件目录 ############### |
Const FileDriver = "/#@$%^FGFSD646464_RMVB@#$%^&$%@$@$@DFgsdfsdf56gr/" |
IF Session("Film_Flag") <> "" Then |
Dim Stream,Contents,FileName,TrueFileName,FileExt |
Const adTypeBinary = 1 |
FileName = UnEncrypt(Request.QueryString("id")) |
IF FileName = "" Then |
Response.Write "无效文件名!" |
Response.End |
End IF |
|
FileExt = Mid(FileName, InStrRev(FileName, ".") + 1) |
Select Case UCase(FileExt) |
Case "ASP", "ASA", "ASPX", "ASAX", "MDB" |
Response.Write "非法操作!" |
Response.End |
End Select |
Response.Clear |
Response.ContentType = "audio/x-pn-realaudio" |
Response.AddHeader "Content-Disposition", "attachment; Filename=" & FileName |
Set Stream = server.CreateObject("ADODB.Stream") |
Stream.Type = adTypeBinary |
Stream.Open |
IF Lcase(Right(FileName,4)) = "rmvb" Then TrueFileName = FileDriver & FileName '设置文件类型文件目录 |
Stream.LoadFromFile Server.MapPath(TrueFileName) |
While Not Stream.EOS |
Response.BinaryWrite Stream.Read(1024 * 64) |
Response.Flush '根据上面速率循环下载 |
Wend |
Stream.Close |
Set Stream = Nothing |
Response.End |
Else |
'Response.Write "禁止盗链!" |
Response.Write "<script>CloseWin();</script>" |
End IF |
%> |
|
五、关闭窗口Js文件(CloseWin.js) |
function CloseWin() |
{ |
//用Javascript实现完美关闭窗口 |
var ua=navigator.userAgent |
var ie=navigator.appName=="Microsoft Internet Explorer"?true:false |
if(ie){ |
var IEversion=parseFloat(ua.substring(ua.indexOf("MSIE ")+5,ua.indexOf(";",ua.indexOf("MSIE ")))) |
if(IEversion< 5.5){ |
var str = '<object id=noTipClose classid="clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11">' |
str += '<param name="Command" value="Close"></object>'; |
document.body.insertAdjacentHTML("beforeEnd", str); |
document.all.noTipClose.Click(); |
} |
else{ |
window.opener=null; |
window.close(); |
} |
} |
else{ |
window.close() |
} |
} |
|