实现电影防盗链功能
注意:以下仅实现功能,并未整合到网站中
一、加密解密及相关函数(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()
}
}