月光博客

青青子衿, 悠悠我心, 但为君故, 沉吟至今

« Alexa调整计算方法,中国网站排名再次跳水李敖北大演讲有感 »

IIS网站防盗链下载的解决方案

  “盗链”的定义是:此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中,通过这种方法盗取大网站的空间和流量。

  为什么会产生盗链

  一般浏览有一个重要的现象就是一个完整的页面并不是一次全部传送到客户端的。如果请求的是一个带有许多图片和其它信息的页面,那么最先的一个Http请求被传送回来的是这个页面的文本,然后通过客户端的浏览器对这段文本的解释执行,发现其中还有图片,那么客户端的浏览器会再发送一条Http请求,当这个请求被处理后那么这个图片文件会被传送到客户端,然后浏览器回将图片安放到页面的正确位置,就这样一个完整的页面也许要经过发送多条Http请求才能够被完整的显示。基于这样的机制,就会产生一个问题,那就是盗链问题:就是一个网站中如果没有起页面中所说的信息,例如图片信息,那么它完全可以将这个图片的连接到别的网站。这样没有任何资源的网站利用了别的网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现,这样显然,对于那个被利用了资源的网站是不公平的。一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接。一方面损害了原网站的合法利益,另一方面又加重了服务器的负担。

  我遇到的盗链

  我的网站遇到最多的是两类盗链,一是图片盗链,二是文件盗链。曾经有一个访问量极大的网站盗链我网站的图片,一天竟然消耗了数G的流量。同时,我站放的不少几十兆的大型软件也常遭到文件盗链,大量消耗我站资源。

  盗链的解决方案

  其实通过WEB服务器的URL过滤技术,这个伤脑筋的问题会很容易得到解决。 

  如果WEB服务器用的是APACHE的话,那么使用APACHE自带的Url Rewrite功能可以很轻松地防止各种盗链,其原理是检查REFER,如果REFER的信息来自其他网站则禁止访问所需要的资源。

  那么,IIS支持UrlRewrite吗?

  答案很简单,不支持。但是我们可以通过安装第三方服务器扩展让IIS支持。

  目前有一种产品能比较好地支持IIS的UrlRewrite,名字叫ISAPI_Rewrite

  下载地址在: http://www.helicontech.com/download/

  这里只有ISAPI Rewrite的一个LITE版本是免费的,其它都是trial版本。ISAPI Rewrite Lite的版本功能不支持虚拟站点配置,元数据监测和自动缓存清理。 但是基本的UrlRewrite功能都支持。

  如何进行UrlRewrite的设置?

  isapi_rewrite利用正则表达式进行替换规则的表示。

  下面是一个简单的例子,我想让我们的用户输入 http://localhost/test-12314.html 实际上访问的是 http://localhost/test.asp?id=12314 。那么我们的匹配表达式应该是 /test-([0-9]*).html 对应的格式化表达式应该为 /test.asp\?id=$1 。

  进行正则表达式的编写的时候,可以利用isapi_rewrite提供的正则表达式测试工具(默认安装提供),进行调试。做好了匹配表达式和格式化表达式,我们可以把它们放到安装目录下的httpd.ini里面。文件保存后,不需重新启动iis即可生效。

  对于我的网站,我防盗链的方法是在httpd.ini里面加入如下语句

RewriteCond Host: (.+)

RewriteCond Referer: (?!http://\1.*).*

RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O]

  然后重启IIS,这时防盗链就开始起作用了,其他网站盗链过来的请求都会被拒绝。

  至此,我也终于可以摆脱了被盗链的烦恼了。



原创文章如转载,请注明:转载自月光博客 [ http://www.williamlong.info/ ]

本文链接地址:http://www.williamlong.info/archives/266.html
  • 文章排行:
  • 利用isapi_rewrite防盗链(引用)
  • 剧毒---请勿靠近!
  • 利用isapi_rewrite可以实现类似于Apache的伪静态路径,利用其检查refer的功能我们还可以实现防盗链。该软件可以在 http://www.helicontech.com/download/下载,是一个共享软件,但是有一个LITE版本是免费的,基本上可以实现我们需要的功能。安装的步骤我就不详细说了,具体说说htt
  • 2006-10-19 21:32:59
  • 4.toap
  • 用防盗链专家就可以阻止盗链的,还能防止迅雷的。http://www.fangdaolian.com
  • 2006-6-19 0:30:34
  • 7.密陀僧
  • http://0e2.net
  • 请教两个问题:
    1.如何设置正则表达式使abc.com和www.abc.com同时在允许引用图片和文件的website名单里?设
    2.如果浏览者从首先访问盗链我的图片的网站再访问我的网站,被盗链的图片由于浏览器缓存的原因会显示block.gif这个图片文件。请问有什么方法可以解决。
    谢谢!
  • 2006-9-27 0:24:56
  • 13.小罗
  • 请问我用了
    RewriteCond Referer: (?!http://(?:www\.baidu\.com|www\.google\.com|post\.baidu\.com)).+

    为什么post.baidu.com上还是不能显示我的图片,

    再次谢谢你的文章
  • 2007-4-23 21:47:07
  • 15.郁闷
  • RewriteCond Host: (.+)
    RewriteCond Referer: (?!http://\1.*).*
    RewriteRule .*\.(?:swf|gif|jpg|png|rar|zip|txt|jqf|exe|rm|rmvb|ra|wmv|mpeg|mpg|mp3|wma|avi) /block.gif [I,O,N]
    上面的代码为什么防盗链没效果呢?没点反应!请问下是不是得设置其它上面地方还是代码错误?
  • 2007-5-8 17:58:43
  • 18.ban
  • http://www.911688.com/
  • williamlong6楼的那句话,总的是不是这样写?可我的怎么无效呀,跟版本有没有关系呀?我用的是老的1.47版。

    RewriteCond Host: (.+)
    RewriteCond Referer: (?!http://(?:www\.williamlong\.info|www\.google\.com)).+
    RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O]
  • 2007-10-21 10:23:09
  • 20.泡泡
  • 你好,我是个菜鸟。我想问下,会不会发生数据库盗链的情况?就是网站A有个查询系统,每次查询都是用的网站B的数据库信息,通过网站B数据库运算后,其结果又显示在网站B中。谢谢回答
  • 2007-11-26 16:13:55

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 通过Google订阅本站
  • 通过鲜果订阅本站
  • 通过抓虾订阅本站
  • 通过电子邮件订阅本站

站内搜索


热文排行

最新评论及回复

最近发表

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.

This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License.