有效的破解图片防盗链

 
< %
' 盗链判断
Dim  server_v1,server_v2
server_v1
= Cstr (Request.ServerVariables( " HTTP_REFERER " ))
server_v2
= Cstr (Request.ServerVariables( " SERVER_NAME " ))
If   Mid (server_v1, 8 , len (server_v2)) <> server_v2  Then
Response.Write 
" 非法的盗链 "
Response.End
End   If

Dim  url, body, myCache

url 
=  Request.QueryString( " url " )

  
Set  myCache  =   new  cache
  myCache.name 
=   " picindex " & url
  
If  myCache.valid  Then
          body 
=  myCache.value
  
Else
          body 
=  GetWebData(url)
          myCache.add body,
dateadd ( " d " , 1 , now )
  
End   If

  
If  Err.Number  =   0   Then
        Response.CharSet 
=   " UTF-8 "
        Response.ContentType 
=   " application/octet-stream "
        Response.BinaryWrite body
        Response.Flush
  
Else
        Wscript.Echo Err.Description
  
End   if

' 取得数据
Public   Function  GetWebData(ByVal strUrl)
Dim  curlpath
curlpath 
=   Mid (strUrl, 1 , Instr ( 8 ,strUrl, " / " ))
Dim  Retrieval
Set  Retrieval  =  Server.CreateObject( " Microsoft.XMLHTTP " )
With  Retrieval
.Open 
" Get " , strUrl,  False , "" , ""
.setRequestHeader 
" Referer " , curlpath
.Send
GetWebData 
= .ResponseBody
End   With
Set  Retrieval  =   Nothing
End Function


' cache类

class Cache
        
private  obj                                 ' cache内容
         private  expireTime                 ' 过期时间
         private  expireTimeName         ' 过期时间application名
         private  cacheName                 ' cache内容application名
         private  path                         ' url
        
        
private   sub  class_initialize()
                path
= request.servervariables( " url " )
                path
= left (path, instrRev (path, " / " ))
        
end sub
        
        
private   sub  class_terminate()
        
end sub
        
        
public   property   get  blEmpty
                
' 是否为空
                 if   isempty (obj)  then
                        blEmpty
= true
                
else
                        blEmpty
= false
                
end   if
        
end property
        
        
public   property   get  valid
                
' 是否可用(过期)
                 if   isempty (obj)  or   not   isDate (expireTime)  then
                        valid
= false
                
elseif   CDate (expireTime) < now   then
                                valid
= false
                
else
                        valid
= true
                
end   if
        
end property
        
        
public   property   let  name(str)
                
' 设置cache名
                cacheName = str  &  path
                obj
= application(cacheName)
                expireTimeName
= str  &   " expires "   &  path
                expireTime
= application(expireTimeName)
        
end property
        
        
public   property   let  expires(tm)
                
' 重设置过期时间
                expireTime = tm
                application.lock
                application(expireTimeName)
= expireTime
                application.unlock
        
end property
        
        
public   sub  add(var,expire)
                
' 赋值
                 if   isempty (var)  or   not   isDate (expire)  then
                        
exit   sub
                
end   if
                obj
= var
                expireTime
= expire
                application.lock
                application(cacheName)
= obj
                application(expireTimeName)
= expireTime
                application.unlock
        
end sub
        
        
public   property   get  value
                
' 取值
                 if   isempty (obj)  or   not   isDate (expireTime)  then
                        value
= null
                
elseif   CDate (expireTime) < now   then
                        value
= null
                
else
                        value
= obj
                
end   if
        
end property
        
        
public   sub  makeEmpty()
                
' 释放application
                application.lock
                application(cacheName)
= empty
                application(expireTimeName)
= empty
                application.unlock
                obj
= empty
                expireTime
= empty
        
end sub
        
        
public   function  equal(var2)
                
' 比较
                 if   typename (obj) <> typename (var2)  then
                        equal
= false
                
elseif   typename (obj) = " Object "   then
                        
if  obj  is  var2  then
                                equal
= true
                        
else
                                equal
= false
                        
end   if
                
elseif   typename (obj) = " Variant() "   then
                        
if   join (obj, " ^ " ) = join (var2, " ^ " then
                                equal
= true
                        
else
                                equal
= false
                        
end   if
                
else
                        
if  obj = var2  then
                                equal
= true
                        
else
                                equal
= false
                        
end   if
                
end   if
        
end function
end  class
%
>

<script type="text/javascript"> google_ad_client = "pub-8527320164371593"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; //2006-11-09: asp.net google_ad_channel = "8786117784"; google_language = 'en'; </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值