<
%
' 盗链判断
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
% >
' 盗链判断
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>