引子:明明引用了一个正确的图片地址,但显示出来的却是一个红叉或写有“此图片仅限于***网站用户交流沟通使用”之类的“假图片”(下图便是网易博客的防盗链效果)。用嗅探软件找到了多媒体资源的真实地址用下载软件仍然不能下载。下载一些资源时总是出错,如果确认地址没错的话,大多数情况都是遇上防盗链系统了。常见的防盗链系统,一般使用在图片、音视频、软件等相关的资源上。
一、什么是防盗链系统
在确保地址正确的情况下,不能下载相应的资源,均是受到防盗链系统的影响,那么究竟什么是防盗链系统呢?防盗链自然就是防范盗链,所以这里先说一下什么是盗链。
隐藏音乐文件的真实地址,制作方法是通过脚本运算或者加密码来给查找真实地址制造麻烦。就拿mp3播放来说吧,我所使用的方法是这样比如play.asp 是播放器页面,在服务器运算的时候放取得真实地址,把这个地址写入session[地址]中保存, play.asp根本不出现这是的资源地址,play.asp下载完成后立即会加载url.asp脚本文件,在url.asp中检测是否有session[地址]有就写如脚本,并且立即清除该值。没有就不作任何输出。这样处理在播放页效果比较好,但是在下载页就不这么好隐藏了,而且只要用户安装了讯雷软件,鼠标移动到播放器上真实地址力马就显示出来了。而且本人认为只要是能给客户端提供正常服务器的,基本上不可能做到隐藏。除非不提供服务。否则随便找个抓包软件一抓就出来了。
三、中量级
用asp.net拦截httpHandlers,该方法和拦截IIS的ISAPI插件基本上是一个原理。作为资源下载站,根本不用隐藏真实地址,就算完全暴露在外,其他站长把地址放到他的站上点击就会失效。原理是:通过链接请求的来路判断是否为盗链。如果来路不符合要求则表示该请求为盗链的,马上终止就可以了。这种方式相对前面两种方法来说防盗技术已经跨越了一个质的飞跃过程了。效果非常好。现在使用这种方式防盗的软件非常多,比如最出名的免费软件re_writer等。但是美中不足的是:如果象54star.net 这样的音乐站,要提供在线试听功能,而经检测播放器请求的来路是空的,也就是说要提供在线试听服务器,必须把来路为空也视为合法。这样一来,盗链的链接通过 工具下载 或 者 点右键->另存为 的已经其他站的播放器直接链接也是合法的。没有完全达到防盗的效果。
四、重量级
通过密匙验证,使用的原理和方法三很相识,一样是拦截IIS,但不同的是,拦截的不是来路,而是地址后面的一串参数---经过加密处理后的密匙。其他密匙的原理和现在的在线支付系统一样,在线支付系统后台都要设置一个密码,在你的网站上也要设置一个同样的密码,表单提交来往的过程中判断是否合法全靠它了。使用这种方法防盗链的加密防止通常是这样 密匙 = 加密函数(客户端IP + 密码). 最后生成的地址形如:http://down.54star.net:89/cd/js-bksyjx/02.mp3?5335aaf7dec19388b7bb799dd70482e,问号前面的时候真实地址,后面那串东西就是密匙,判断是否合法就是通过判断它是否正确了。想盗本站资源的难度就形如要去破解一个未知长度,而且随时可以更改的密码是一样的。这种方法可以说在几种防盗技术中可以勘称最完美的了。而且资源服务器和网站服务器可以分开拜访。如果要提供给友情站使用,只需要把密匙告诉他即可。
五、超重量级
经管使用方法四已经几乎达到完美了,但是该防盗方法唯一美中不足的就是性能了。一般下载站都是使用HTTP协议提供下载,IIS的功能很强大,会ASP。NET的都知道其三层结构,其处理机制很庞大。所以,如果仅仅是把IIS当作下载资源服务器的话有些让IIS不堪重负了。象54star.net这个站就发现,只要下载的人稍微一多IIS占用资源非常高,而且IIS的可以并发的数量并不多,只要一超过一定数量,就会出现各种各样的问题。比如提示服务器太忙这种问题你也经常遇到。所以,可以使用防盗链专用服务器,如思达防盗链下载专用服务器软件等。
参考文章:http://bbs.csdn.net/topics/110042791
http://windyli.blog.51cto.com/1300305/315283/