基本概念
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
盗链分类
网站盗链会大量消耗被盗链网站的带宽,而真正的点击率也许会很小,严重损害了被盗链网站的利益。早期的盗链一般是一些比较小的网站盗取一些有实力的大网站的地址,盗链的目标比较有针对性,现如今,一些大型的网站也已经开始把盗链的目光锁定在了整个互联网上,窃取整个互联网上的其它机器的带宽。常见的盗链有以下几种:图片盗链、音频盗链、视频盗链、文件盗链。
一般要被浏览的页面并不是一次全部传送到客户端的。如果客户请求的是一个带有许多图片和其它信息的页面,那么最先的一个HTTP 请求被传送回来的是这个页面的HTML 文本,客户端浏览器对这段文本解释执行后,发现其中还有其它文件,客户端浏览器会再发送一条或者更多HTTP 请求,当这些请求被处理后其它文件才被传送到客户端,然后浏览器将这些文件放到页面的正确位置。一个完整的页面要经过发送多条HTTP 请求才能够被完整地显示。基于这样的机制,盗链就成为可能,服务提供商完全可以在自己的页面中嵌入别人的链接,显示在自己的页面上,以达到盗链的目的。
根据盗链的形式的不同,可以简单地把盗链分成两类:常规盗链和分布式盗链。常规盗链比较初级,同时也比较常见,具有一定的针对性,只盗用某个或某些网站的链接。技术含量不高,实现也比较简单,只需要在自己的页面嵌入别人的链接即可。分布式盗链是盗链的一种新的形式,系统设计复杂,难度相对较大。这种盗链一般不针对某一个网站,互联网上任何一台机器都可能成为盗链的对象。服务提供商一般会在后台设置专门程序(Spider)在Internet上抓取有用的链接, 然后存储到自己的数据库中。而对于最终用户的每次访问,都将其转化为对已有数据库的查询,被查询到的URL 就是被盗链的对象。由于对文件的访问已经被浏览器屏蔽掉了,所以最终用户感觉不到所访问的链接是被盗取的链接。
反盗链
不定期更名文件或者目录
不定期的更改文件或者目录的名称,是最原始的反盗链的方式,可以比较有效地防止盗连,这种方法一般工作量比较大。但是批量的文件改名是完全可以自动化的,而且也比较容易实现。在文件的更名过程中, 可能会有客户正在下载该文件,这样会导致正常的客户访问失败,尽管这个问题容易解决,但是也不能够忽视。
限制引用页
这种防盗链原理是,服务器获取用户提交信息的网站地址,然后和真正的服务端的地址相比较,如果一致则表明是站内提交,或者为自己信任的站点提交,否则视为盗链。实现时可以使用HTTP_REFERER1 和htaccess 文件(需要启用mod_Rewrite),结合正则表达式去匹配用户的每一个访问请求。对于每一个HTTP 请求, 服务器都要查找.htaccess 文件,增加了读取文件的次数,一定程度上降低了性能。另外,服务器打开这个功能,有比较多的限制。
文件伪装
文件伪装是目前用得最多的一种反盗链技术,一般会结合服务器端动态脚本(PHP/JSP/ASP)。实际上用户请求的文件地址,只是一个经过伪装的脚本文件,这个脚本文件会对用户的请求作认证,一般会检查Session,Cookie 或HTTP_REFERER 作为判断是否为盗链的依据。而真实的文件实际隐藏在用户不能够访问的地方,只有用户通过验证以后才会返回给用户。
加密认证
这种反盗链方式,先从客户端获取用户信息,然后根据这个信息和用户请求的文件名字一起加密成字符串(Session ID)作为身份验证。只有当认证成功以后,服务端才会把用户需要的文件传送给客户。一般我们会把加密的Session ID 作为URL 参数的一部分传递给服务器,由于这个Session ID 和用户的信息挂钩,所以别人就算是盗取了链接,该Session ID 也无法通过身份认证,从而达到反盗链的目的。这种方式对于分布式盗链非常有效。
随机附加码
每次,在页面里生成一个附加码,并存在数据库里,和对应的图片相关,访问图片时和此附加码对比,相同则输出图片,否则输出404图片
其它方法
其它反盗链方式也有不少, 这里只列出一个大概思想作为参考:⑴ IIS 反盗链, 利用ISAPI_Rewrite,可作为Windows下反盗链的一个解决方案;⑵ 图片反盗链,在图片中加入水印,虽然盗链者可以达到目的,但是却也在为自己的网站做宣传[1]。
阅读(489) | 评论(0) | 转发(0) |