欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用asp代码突破163相册的防盗连

程序员文章站 2022-05-28 16:14:05
从网上来的代码,,稍微修改了一些地方,其实用的是cache类。。  保存代码为,比如pic.asp  使用:http://www.xxx.com/pic...
从网上来的代码,,稍微修改了一些地方,其实用的是cache类。。 

保存代码为,比如pic.asp 
使用:http://www.xxx.com/pic.asp?url=http://www.aaaa.com/log.gif 

不光是163,其实就是很多防盗连的图片都可以这个实现。 
复制代码 代码如下:

<% 
'盗链判断 
'if instr(request.servervariables("http_referer"),"http://"&request.servervariables("server_name")&"") = 0 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 
%>