盗链解决:服务器ISAPI Rewrite设置
发布时间:2011-08-14 06:34:29
近来小站遇到了盗链问题,至使网站的流量枉费流失,于是被迫准备为服务器安装防盗链机制以挽救本就不宽裕的带宽。通过G.CN和B.CN搜索后得出了几种不同的方案,例如网站程序的URL伪装法、服务器端的收费插件法和ISAPI-REWRITE的规则过滤法等,考虑自身网站结构和钱包的困难问题,最终选择了后者,即现在流行用来做伪静态的ISAPI Rewrite书写规则来实现我的防盗链“梦想”。
为什么说是梦想呢?首先表示惋惜,懒人我搜来了一大票经过无数次转载而来的文章,把现呈的代码应用后发现要么根本不起作用,要么就是效果达不到我想要的,几经周折后终于把这原本认为可以轻易借鉴照搬的防盗链给完成了,恨那些只会转载和伪原创的站长们,自己也不试试就拿来填充,害了多少人浪费了大把的时间。
经过恶补正则表达式相关教程并对前辈们留下的规则进行修改后,以下ISAPI Rewrite已经在我的服务器上正常运作。
经测试四种情况正常,即站内链接正常,白名单里的链接正常,盗链者链接屏蔽,搜索引擎链接正常。
详细如下;
一、完全屏蔽所有盗链来源的写法(如已有其它规则,则置于已有规则的上面)
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteRule .*\.(?:gif jpg jpeg png bmp) /block.gif [I,O,N]
老板,来个小解:
第一行通过RewriteCond的HOST定义其下的规则所适用的请求主机范围。
第二行通过RewriteCond的Referer定义规则适用的请求来源地址,我们都知道任何通过互联网方式访问网站都会留下Referer的痕迹,就好像我们在IIS日志里看到的一样。这里的(?!http://\1.*).*意思就是判断所有通过http协义发来的请求,都要应用规则。
第三行通过RewriteRule定义防盗链文件的后缀,这里仅是图片后缀,需要的可以添加mp3,rar等其它所有后缀。后面的/block.gif表示如果遇上这些后缀的文件被盗链后的转向,这里转向/根目录的block.gif,可以是HTML等任何文件。如果只想某个文件夹下面的文件不被盗链,只需要加上路径就可以。例如不想images和pic目录下的文件被盗,但其它可以。就要改写成:
RewriteRule (/images/ /pic/).*\.(?:gif jpg jpeg png bmp) /block.gif [I,O,N]
这种情况主要是有些站长在别人友情链接里的图片地址是在自己这的。
最后面的[I,O,N],I表示不区分大小写,O表示对URL进行标准化,可能是用来处理Unicode编码的地址(例如包含中文的URL)以及QueryString的内容,N表示重新从站点请求文件而不是从本地缓存读取文件,目的是防止当用户访问了盗你链的网站后,再回到你的网站也出现盗链提示。
提示,由于此规则是通过Referer来获取带有http://字样的地址进行过滤,因此它无法防范其它协议的盗链,比如迅雷下载。但通过任何浏览器直接访问,只要是HTTP协义的,通杀。
以上关于RewriteCond和RewriteRule的作用仅是本人的土法理解,欢迎在这方面有专业研究的朋友在评论中指正,以免误导,另外如果遇到isapi-rewrite版本问题,只要保证后面的正则式写法正确就行。
二、排除性防盗链写法
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteCond Referer: (?!http://(.*)(\.baidu\.com \.google\.com \.google\.cn \.g\.cn \.gougou\.com \.soso\.com \.sogou\.com \.youdao\.com \.bing\.com \.yahoo\.com \.yahoo\.cn \.eojoo\.com)).*
RewriteRule .*\.(?:gif jpg jpeg png bmp) /block.gif [I,O,N]
老板,来个小解:
第一行同上
第二行同上
第三行通过正则表达式对第二行中的请求协义地址进行过滤,这里按上面的写法,过滤了所有流行的搜索引擎,当然也包括你自己的站,或是你同台服务器其它的站。每个不同的域名写法是\.baidu\.com,多个有 号相隔。如果是IP则这样写100\.100\.100\.100
第四行同上
这样说明应该不难理解吧,直接拿去用,按着原有格式改。
规则中出现的正则表达式符号小解:
. 表示匹配除换行符以外的任意字符
+ 表示前面的字符可以出现一到任意多次
* 表示前面的字符可以出现零到任意多次
() 表示一个表达组,可以拿它和加减乘除法一起理解
?! 表示断言这个符号后面的字符如果出现则不再进行接下去的匹配
\ 表示转义符号,比如网址中的.是规则内置的运算符号,要把它通过\转义成字符。
表示或者,用于连接多种可能
通过以上这“乱七八糟”的符号,竟然组成了如此强大的规则,感叹!


猜你喜欢
- 在Exchange Server2007之前的版本中,管理邮件的通讯录是一件非常让人头疼的事情(特别是在大量的成员机构管理上),管理员不得不
- 现在主机商是遍地开花,怎么去选择主机?一个网站,选择一个质量好的虚拟主机就有关重要。因为很多主机商,在购买之前,和购买后所能实现的东西是根本
- 说句实在话,作为中国排名第一的搜索引擎,出现这种情况真的是很不应该,但是却着实出现了。在五月的时候,很多的seoer就讨论过这个现象。有很多
- 导语:NYDailyNews.com周六发表文章,介绍了因谷歌而生的几个网站。它们使用了谷歌的搜索引擎,但风格却大相径庭。这是谷歌的一个“真
- 在今天的文章中我们将使用一种完全不同的方式,来实现对新的Windows Server 2008高级防火墙的类似配置,就是使用netsh这个工
- 第一步:打开程序目录dede/templets/soft_add.htm 和 soft_edit.htm找到下面这句if(endNum>
- 我从博客们中听到最多的一个抱怨是,不管多么努力,他们都无法获得每天 100 人次的页面浏览量。实际上,博客初期是最艰难的,因为您需要努力工作
- 做SEO,关键词的优化是其中一个重要的部分,做关键词的优化,站长很容易陷入到两种极端,一种极端是专门做热门的关键词的优化,称之为红海战术;另
- 可能由于Typecho博客模板布局情况,需要单独调用typecho某一分类目录的文章列表,目前为止,我没有找到相关的typecho插件,但找
- 在我看来,站长TOP3的 落伍者 站长网 站长站[我不大去,因此不发表言论] 掌门人都各具特色.今天突然兴起,居然硬把 鱼和 图王 往一起凑
- 康盛创想(Comsenz)旗下的UCenter Home(简称UCHome)新版本即将推出,本期笔者给大家分享下道具“道具转让许可证”功能。
- 环境说明:开发平台是DOTNET B/S .NET Framework 1.1正式WEB服务器和测试机,均为win2003原有一个主网站,在
- 《商业大亨》以刺激真实的商场竞争、完备的市场体系、拟真的开店攻略、完善的员工系统、刺激的股市系统、有效的媒体系统、激战的赢在大亨系统……,让
- 经常有朋友加我Q,说他们上班的辛苦,但待遇不好,福利不行等等,问能不能带他们做网络,不上班了,每天轻轻松松赚钱,多惬意!对大多数朋友我都没有
- 1.功能:xargs可以将stdin中以空格或换行符进行分隔的数据,形成以空格分隔的参数(arguments),传递给其他命令。因为以空格作
- iis限制,流量限制与cpu限制的对比当前的虚拟主机主要分为三类流量限制:一:流量限制就是直接限制网络流量,这种限制通常是最严厉的一种流量限
- 呵呵,前一阵子,asp之家应该也被百度降权了,2天时间收录由原来的两千多页到只留一个首页,很郁闷。后来也看了很多这方面的文章,有的说换域名,
- 10月14日,中国软件资讯网据外电报道,当苹果的市值又再度超越Google时,这次它能够一直保持领先吗?《BusinessWeek》专栏作家
- 伴随着康盛创想(Comsenz)2010年核心产品Discuz! X1的正式发布,如何更快应用新的模板机制改版已经成为站长建站普遍关注的焦点
- 现在人们买食品都讲究绿色、没有添加任何化学添加剂的食物。那么对网站推广这块又何尝不是呢?网站推广不管是海外网站推广还是国内网站推广。最终的搜