兰色精灵 发表于 2015-1-16 22:19:23

ASP网页编程之利用asp代码冲破163相册的防盗连

优点:简单易学、开发速度快、有很多年“历史”,能找到非常多别人做好的程序来用、配合activeX功能强大,很多php做不到的asp+activeX能做到,例如银行安全控件网下去的代码,,略微修正了一些中央,实在用的是cache类。。

保留代码为,好比pic.asp
利用:http://www.xxx.com/pic.asp?url=http://www.aaaa.com/log.gif

不但是163,实在就是良多防盗连的图片都能够这个完成。

<%
盗链判别
IfInstr(Request.ServerVariables("http_referer"),"http://"&Request.ServerVariables("server_name")&"")=0Then
Response.Write"不法链接"
Response.End
EndIf

Dimurl,body,myCache

url=Request.QueryString("url")

SetmyCache=newcache
myCache.name="picindex"&url
IfmyCache.validThen
body=myCache.value
Else
body=GetWebData(url)
myCache.addbody,dateadd("d",1,now)
EndIf

IfErr.Number=0Then
Response.CharSet="UTF-8"
Response.ContentType="application/octet-stream"
Response.BinaryWritebody
Response.Flush
Else
Wscript.EchoErr.Description
Endif

获得数据
PublicFunctionGetWebData(ByValstrUrl)
Dimcurlpath
curlpath=Mid(strUrl,1,Instr(8,strUrl,"/"))
DimRetrieval
SetRetrieval=Server.CreateObject("Microsoft.XMLHTTP")
WithRetrieval
.Open"Get",strUrl,False,"",""
.setRequestHeader"Referer",curlpath
.Send
GetWebData=.ResponseBody
EndWith
SetRetrieval=Nothing
EndFunction


cache类

classCache
privateobjcache内容
privateexpireTime过时工夫
privateexpireTimeName过时工夫application名
privatecacheNamecache内容application名
privatepathurl

privatesubclass_initialize()
path=request.servervariables("url")
path=left(path,instrRev(path,"/"))
endsub

privatesubclass_terminate()
endsub

publicpropertygetblEmpty
是不是为空
ifisempty(obj)then
blEmpty=true
else
blEmpty=false
endif
endproperty

publicpropertygetvalid
是不是可用(过时)
ifisempty(obj)ornotisDate(expireTime)then
valid=false
elseifCDate(expireTime)<nowthen
valid=false
else
valid=true
endif
endproperty

publicpropertyletname(str)
设置cache名
cacheName=str&path
obj=application(cacheName)
expireTimeName=str&"expires"&path
expireTime=application(expireTimeName)
endproperty

publicpropertyletexpires(tm)
重设置过时工夫
expireTime=tm
application.lock
application(expireTimeName)=expireTime
application.unlock
endproperty

publicsubadd(var,expire)
赋值
ifisempty(var)ornotisDate(expire)then
exitsub
endif
obj=var
expireTime=expire
application.lock
application(cacheName)=obj
application(expireTimeName)=expireTime
application.unlock
endsub

publicpropertygetvalue
取值
ifisempty(obj)ornotisDate(expireTime)then
value=null
elseifCDate(expireTime)<nowthen
value=null
else
value=obj
endif
endproperty

publicsubmakeEmpty()
开释application
application.lock
application(cacheName)=empty
application(expireTimeName)=empty
application.unlock
obj=empty
expireTime=empty
endsub

publicfunctionequal(var2)
对照
iftypename(obj)typename(var2)then
equal=false
elseiftypename(obj)="Object"then
ifobjisvar2then
equal=true
else
equal=false
endif
elseiftypename(obj)="Variant()"then
ifjoin(obj,"^")=join(var2,"^")then
equal=true
else
equal=false
endif
else
ifobj=var2then
equal=true
else
equal=false
endif
endif
endfunction
endclass
%>对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了,

飘飘悠悠 发表于 2015-1-19 08:41:28

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:

冷月葬花魂 发表于 2015-1-28 05:49:14

尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。

灵魂腐蚀 发表于 2015-2-5 18:02:43

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

再见西城 发表于 2015-2-13 05:16:52

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

因胸联盟 发表于 2015-3-3 15:27:30

如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:

爱飞 发表于 2015-3-18 15:48:14

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

若相依 发表于 2015-3-26 11:47:23

作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
页: [1]
查看完整版本: ASP网页编程之利用asp代码冲破163相册的防盗连