2008年08月26日

IIS防盗链,防迅雷的唯一方案

作者 非鱼

最近一周多公司的网站反应速度特别慢,Ping一下速度都超过1000ms,会员也开始抱怨。向机房反映以后,机房说瓶颈在我们的防火墙设备那里,不在他们机房的线路。连到设备上一看,带宽占用稳定超过25M,这台设备的最大带宽也就是25M,看来的确是达到它的瓶颈了。

本来考虑换个更大的防火墙,但是后来想一想,以目前网站的PV和内容来看,也没有理由占用这么大带宽啊。

于是想办法分析日志,下载了几个比较大的日志文件,怎么分析呢?最后找到Nihuo Web Log Analyzer 3这个东西,虽然是试用,但是并没有功能限制(有时间限制),分析完之后清楚的列出访问量比较大的URL(可惜只能按点击数列出来,不能按文件实际占用的流量,当然啦,这是日志文件本身的限制)。排在前两位的都是压缩文件,下面还有很多wmv的视频文件。而且2000多个IP发起了20几万次访问,而且,这些访问都不在Google的访问记录里。很明显,这些都是多线程下载导致的。在文章页里想找到文件的下载地址需要登录,那几乎可以肯定,是迅雷的自动镜像功能了。

接下来就是想办法限制用户的下载,不让下载是不可能,于是搜索下载限速和限制每用户的线程的东西,找到了几个组件,包括2003Server_ChajianForIIS,EmIISLimitTS还有另外两个相似的东西,都是ISAPI的工作模式,但是都有一个共同的问题,就是狂占CPU,基本不会有空闲。而且也没有明显降低网站的流量。

直到今天下午再次研究这个问题,终于在一篇文章里看到一条线索,找到了Safe3IF,关键是,它没有限速功能,但是可以完全屏蔽迅雷。还有些其它的功能,比如防数据库注入之类的。作为ISAPI装上以后,网站的响应速度立马变快了,而且CPU使用率几乎没有变化。虽然可能会导致用户无法下载大文件,但是,作为目前最佳的也是唯一的解决方案,总算是解了燃眉之急。