月光博客 » 互联网络 » IIS网站防盗链下载的解决方案

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,这时防盗链就开始起作用了,其他网站盗链过来的请求都会被拒绝。

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

顶一下 ▲()   踩一下 ▼()

相关文章

  1. 1
    KenWong   说道:
    这个方法不错。

    可惜服务器我没有配置权限,服务器主人不肯安装。

    不过还是谢谢站长的方法,先记下来,以后可能用得上。
    1. sadf   说道:
      sdf
      支持(0反对(0回复
    支持(31反对(7回复
  1. 2
    metruetian   说道:
    看了后,感觉图片还是可以再下载的呀,下载后重新编辑一下就可以再用了呀,这样相对地说还是网页内容在各网站中的重复呀,那么如何才能使一个网站内容,完全地归于该网站呢》因为,网页内容一样的实在太没意义了,我想以后网站的发展趋势 也会向不同的内容发展吧。我感觉现在的网站也像平常街道那样了,做一样生意的人太多了,然而且优有劣,那么我们该如何去进行更好的评比,在哪里能做得到最优呢?有很类似的网 站,也有很多内容一样,我不知道如何才能更优地让一个站内容真正地达到专一~求教哈。
    支持(14反对(5回复
  1. 3
    郁闷   说道:
    我按照上面文章设置的,但是防盗连不起作用,转静态起作用
    可否指导一下
    支持(10反对(4回复
  1. 4
    小串   说道:
    我想某个网站可以连,那正则怎样写?
    支持(11反对(8回复
  1. 5
    williamlong   说道:
    第二行修改类似为:RewriteCond Referer: (?!http://(?:www\.williamlong\.info|www\.google\.com)).+
    就可以了,网站可以增加多个。
    支持(9反对(6回复
  1. 6
    flyabroad   说道:
    不错的东西
    支持(6反对(3回复
  1. 7
    uudog   说道:
    这里可能是您要找的
    uuiis2008高级版
    1、加密IP和时间信息防盗链,加密地址到了时间自动过期,一个加密地址对应一个IP,实现防盗链。
    2、控制速度和线程序(目前业内控制速度最为稳定的一种插件)
    3、绑定播放器,防下载功能。
    4、加密文件名,一个文件名对应一个加密码(对于收费下载站,有利于防止用户根据上一个文件名绕过扣点猜出下一个文件地址)
    5、自定义错误转向错误提示
    6、错误日志功能
    7、可以用于任何脚本写的网站(ASP,PHP,ASP.NET,JSP等),当然文件服务器需要用的是IIS
    支持(6反对(4回复
  1. 8
    下载   说道:
    如何防止迅雷盗链???
    支持(10反对(9回复
  1. 9
    mlikey   说道:
    楼上可以在“google”里搜索“八种常见的防盗链方法总结及分析”
    支持(8反对(7回复
  1. 10
    cmmb8   说道:
    cmmb8发布的 友情盗链 编辑器。
    http://youqingdaolian.cmmb8.com/
    可以解决防盗链网站不能拷贝图片的问题。

    友情盗链使用go2技术,采用google的云计算平台来缓存所有的图片,流量走google平台,对原有网站不会造成任何负担。
    支持(7反对(6回复
  1. 11
    密陀僧   说道:
    谢谢williamlong的解答。
    对于问题2,我看到您网站上的图片不存在这个问题,请问您是按照上面说的方法解决的吗?
    支持(9反对(9回复
  1. 12
    密陀僧   说道:
    已解决
    把最后一行RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O]改为RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O,N]即可
    支持(6反对(6回复
  1. 13
    泡泡   说道:
    你好,我是个菜鸟。我想问下,会不会发生数据库盗链的情况?就是网站A有个查询系统,每次查询都是用的网站B的数据库信息,通过网站B数据库运算后,其结果又显示在网站B中。谢谢回答
    支持(7反对(7回复
  1. 14
    情况是这样的   说道:
    我是做音乐站的,我用微盾防盗链专家,非常好用,不仅可以防盗链,还可以限制下载线程,速度,防攻击等。
    支持(6反对(6回复
  1. 15
    iis   说道:
    龙盾IIS防火墙,保证不盗链
    支持(6反对(6回复
  1. 16
    小罗   说道:
    请问我用了
    RewriteCond Referer: (?!http://(?:www\.baidu\.com|www\.google\.com|post\.baidu\.com)).+

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

    再次谢谢你的文章
    支持(7反对(8回复
  1. 17
    txhuakang   说道:
    都是很不错,那zenu下如何设置呢?
    支持(8反对(9回复
  1. 18
    williamlong   说道:
    对于问题1,可以采用类似下面的语句:(www\.)?williamlong\.info 。
    对于问题2,请将图片的日期修改伪很早以前的日期,比如2000年的,就可以解决。
    支持(10反对(12回复
  1. 19
    aaa   说道:
    我把refcontrol中的default都设成forge了,我人品是不是很差
    支持(4反对(6回复
  1. 20
    heesey   说道:
    如何支持所有一级域名下的所有二级域名?
    支持(5反对(8回复
  1. 21
    meiya   说道:
    我安装了ISAPI_Rewrite,怎么用呀?
    支持(6反对(10回复
  1. 22
    gumeiz   说道:
    看了你的文章,我还是不大懂盗链是什么意思。。。。
    支持(3反对(7回复
  1. 23
    ban   说道:
    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]
    支持(6反对(18回复

发表留言