服务器之家

服务器之家 > 正文

使用asp代码突破图片的防盗连

时间:2019-10-26 11:49     来源/作者:asp代码网

从网上来的代码,,稍微修改了一些地方,其实用的是cache类。。

保存代码为,比如pic.asp

使用:http://www.xxx.com/pic.asp?url=http://www.aaaa.com/log.gif

不光是163,其实就是很多防盗连的图片都可以这个实现。

  1. <%   
  2. '盗链判断   
  3. 'If Instr(Request.ServerVariables("http_referer"),"http://"&Request.ServerVariables("server_name")&"") = 0 Then   
  4. 'Response.Write "非法链接"   
  5. 'Response.End   
  6. 'End If   
  7.  
  8. Dim url, body, myCache   
  9.  
  10. url = Request.QueryString("url")   
  11.  
  12. Set myCache = new cache   
  13. myCache.name = "picindex"&url   
  14. If myCache.valid Then   
  15. body = myCache.value   
  16. Else   
  17. body = GetWebData(url)   
  18. myCache.add body,dateadd("d",1,now)   
  19. End If   
  20.  
  21. If Err.Number = 0 Then   
  22. Response.CharSet = "UTF-8"   
  23. Response.ContentType = "application/octet-stream"   
  24. Response.BinaryWrite body   
  25. Response.Flush   
  26. Else   
  27. Wscript.Echo Err.Description   
  28. End if   
  29.  
  30. '取得数据   
  31. Public Function GetWebData(ByVal strUrl)   
  32. Dim curlpath   
  33. curlpath = Mid(strUrl,1,Instr(8,strUrl,"/"))   
  34. Dim Retrieval   
  35. Set Retrieval = Server.CreateObject("Microsoft.XMLHTTP")   
  36. With Retrieval   
  37. .Open "Get", strUrl, False,"",""   
  38. .setRequestHeader "Referer", curlpath   
  39. .Send   
  40. GetWebData =.ResponseBody   
  41. End With   
  42. Set Retrieval = Nothing   
  43. End Function   
  44.  
  45.  
  46. 'cache类   
  47.  
  48. class Cache   
  49. private obj 'cache内容   
  50. private expireTime '过期时间   
  51. private expireTimeName '过期时间application名   
  52. private cacheName 'cache内容application名   
  53. private path 'url   
  54.  
  55. private sub class_initialize()   
  56. path=request.servervariables("url")   
  57. path=left(path,instrRev(path,"/"))   
  58. end sub   
  59.  
  60. private sub class_terminate()   
  61. end sub   
  62.  
  63. public property get blEmpty   
  64. '是否为空   
  65. if isempty(obj) then   
  66. blEmpty=true   
  67. else   
  68. blEmpty=false   
  69. end if   
  70. end property   
  71.  
  72. public property get valid   
  73. '是否可用(过期)   
  74. if isempty(obj) or not isDate(expireTime) then   
  75. valid=false   
  76. elseif CDate(expireTime)<now then   
  77. valid=false   
  78. else   
  79. valid=true   
  80. end if   
  81. end property   
  82.  
  83. public property let name(str)   
  84. '设置cache名   
  85. cacheName=str & path   
  86. obj=application(cacheName)   
  87. expireTimeName=str & "expires" & path   
  88. expireTime=application(expireTimeName)   
  89. end property   
  90.  
  91. public property let expires(tm)   
  92. '重设置过期时间   
  93. expireTime=tm   
  94. application.lock   
  95. application(expireTimeName)=expireTime   
  96. application.unlock   
  97. end property   
  98.  
  99. public sub add(var,expire)   
  100. '赋值   
  101. if isempty(var) or not isDate(expire) then   
  102. exit sub   
  103. end if   
  104. obj=var   
  105. expireTime=expire   
  106. application.lock   
  107. application(cacheName)=obj   
  108. application(expireTimeName)=expireTime   
  109. application.unlock   
  110. end sub   
  111.  
  112. public property get value   
  113. '取值   
  114. if isempty(obj) or not isDate(expireTime) then   
  115. value=null   
  116. elseif CDate(expireTime)<now then   
  117. value=null   
  118. else   
  119. value=obj   
  120. end if   
  121. end property   
  122.  
  123. public sub makeEmpty()   
  124. '释放application   
  125. application.lock   
  126. application(cacheName)=empty   
  127. application(expireTimeName)=empty   
  128. application.unlock   
  129. obj=empty   
  130. expireTime=empty   
  131. end sub   
  132.  
  133. public function equal(var2)   
  134. '比较   
  135. if typename(obj)<>typename(var2) then   
  136. equal=false   
  137. elseif typename(obj)="Object" then   
  138. if obj is var2 then   
  139. equal=true   
  140. else   
  141. equal=false   
  142. end if   
  143. elseif typename(obj)="Variant()" then   
  144. if join(obj,"^")=join(var2,"^") then   
  145. equal=true   
  146. else   
  147. equal=false   
  148. end if   
  149. else   
  150. if obj=var2 then   
  151. equal=true   
  152. else   
  153. equal=false   
  154. end if   
  155. end if   
  156. end function   
  157. end class   
  158. %>   

相关文章

热门资讯

玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字
抖音撒撒累累是什么歌 撒撒累累张艺兴歌曲名字 2019-06-05
返回顶部