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

时间:2022-02-20 13:46:33

从网上来的代码,,稍微修改了一些地方,其实用的是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. %>