经过几个小时的测试,终于搞定本博客的防盗链并显示防盗链后的警示图片文件,下面就把我的设置成功的经验分享给大家,本博客在服务器Linux系统空间测试有效(服务器Windows系统空间不支持本博防盗链方法,网上有Windows系统下防盗链的方法,请使用Windows主机空间的用户百度或GG下此类文章,本文仅讲解Linux系统空间成功防盗链的方法)。老鸟就别看了吧。而且防盗链仅服务器Linux系统空间可用
盗链和防盗链的定义
“盗链”的定义是:此内容不在自己服务器上,而通过技术手段,绕过别人放广告有利益的最终页,直接在自己的有广告有利益的页面上向最终用户提供此内容。 常常是一些名不见经传的小网站来盗取一些有实力的大网站的地址(比如一些音乐、图片、软件的下载地址)然后放置在自己的网站中,通过这种方法盗取大网站的空间和流量。
“防盗链”其实就是采用服务器端编程,通过url过滤技术实现的防止盗链的“软件”或“技术”。比如file.xxx.com/test.rar 这个下载地址,如果没有装防盗链,别人就能轻而易举的在他的网站上引用这个地址。如果对file.xxx.com这个站的服务器端编程,比如通过file.xxx.com/test.rar?authcode=xxxxxxxxxxxxxxxx&ip=127.0.0.1 绑定了ip,只能通过127.0.0.1来访问这个链接,其他ip都不可以的。
为什么会产生盗链
一般浏览有一个重要的现象就是一个完整的页面并不是一次全部传送到客户端的。如果请求的是一个带有许多图片和其它信息的页面,那么最先的一个Http请求被传送回来的是这个页面的文本,然后通过客户端的浏览器对这段文本的解释执行,发现其中还有图片,那么客户端的浏览器会再发送一条Http请求,当这个请求被处理后那么这个图片文件会被传送到客户端,然后浏览器回将图片安放到页面的正确位置,就这样一个完整的页面也许要经过发送多条Http请求才能够被完整的显示。基于这样的机制,就会产生一个问题,那就是盗链问题:就是一个网站中如果没有起页面中所说的信息,例如图片信息,那么它完全可以将这个图片的连接到别的网站。这样没有任何资源的网站利用了别的网站的资源来展示给浏览者,提高了自己的访问量,而大部分浏览者又不会很容易地发现,这样显然,对于那个被利用了资源的网站是不公平的。一些不良网站为了不增加成本而扩充自己站点内容,经常盗用其他网站的链接。一方面损害了原网站的合法利益,另一方面又加重了服务器的负担。
盗链的危害
网站遇到最多的是两类盗链,一是图片盗链,二是文件盗链。比如有一个访问量极大的网站盗链你网站的图片,一天内可以消耗你网站数G的流量。或者,你网站放的软件遭到文件盗链,也会大量消耗你网站所在主机的资源。
盗链的解决方案
- 采用图片防盗链插件Hotlink Protection,具体使用方法我就不讲了,网上有很多对此插件的使用方法,大家可以GG或者百度一下(本博使用此插件防盗链无效)。
- 服务端装防盗链软件,此方法也请大家GG或者百度(因为很多人都是租用服务器空间,没有空间的最高使用权限,所以此方法不太实际)。
- 【本文重点讲解第三种方法】利用.htaccess文件(.htaccess文件是apache的访问控制文件,apache中httpd.conf的选项配合此文件,完美实现了目录、站点的访问控制)防盗链。
首先要创建一个 .htaccess文件,创建方法:在Windows系统下新建一个文本文件,打开它这个新建的文本文件,然后另存为文件名写成.htaccess,文件类型改成所有文件,编码可以选择默认的ANSI或者UTF-8。最后点击保存,这样一个空的.htaccess文件就创建好了。
然后用记事本或其他编辑软件打开.htaccess文件,在打开的空白.htaccess文件里先写如下示例代码:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^https://www.cccie.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^https://www.cccie.com$ [NC] RewriteCond %{HTTP_REFERER} !^https://www.cccie.com/.*$ [NC] RewriteCond %{HTTP_REFERER} !^https://www.cccie.com$ [NC] RewriteRule .(jpg|gif|jpeg|png|bmp|swf|rar|zip|exe) /forbid.png [R,NC,L]
示例代码中要替换的部分:将第2-5段代码中的四处域名(https://www.cccie.com/、http://soccer、https://www.cccie.com/、https://www.cccie.com)改为你自己的域名,代码中/forbid.png(此处可修改为你想要显示的图片或文件的路径,但是需注意不要把此图片或文件放在防盗链目录下,因为此图片或文件在防盗链目录下也会被防盗链,就是也不会显示此图片或文件,以免达不到警示效果)的意思是其他网站盗链你网站图片或文件的时候会在其他盗链你网站图片或文件的位置显示路径为http://www.xxx.xxx/forbid.png文件名为forbid.png的警示图片,如下图所示:
如果你没有合适的警示图片,也可将此警示图片保存到你的网站目录下使用,当然你也可以自己另外挑选更经典的警示图片或自己动手做一个带版权的警示图片来替换它。
把修改好代码的.htaccess文件保存。
把保存过的.htaccess 文件放到网站中有图片或者附件的目录下,即可起到此目录下的图片或附件防盗链的作用(如想保护整个网站的图片则上传到根目录,如想保护其他格式的文件则直接在RewriteRule中添加扩展名)。
这段代码的意思是四个RewriteCond排除四种访问自己网站的方法,分别是不带www访问网站下某目录文档、不带www访问网站根目录文档、带www访问网站下某目录文档和带www访问网站根目录文档。符合这四种情况外的HTTP_REFERER,并且访问文件以jpg或、gif、jpeg、png、bmp、swf、rar、zip、exe扩展名结尾的文件则转到http://www.xxx.net/forbid.png文件处(本博则将被盗链图片或文件转到了本博的警示图片处,这样就既显示不出盗链的图片也起到了警示作用)。
顺便说一句:这种方法有一定的局限性,比如某些下载工具可以发送自定的“引用”值;此外有些用户安装的防火墙、杀毒软件会阻止浏览器发送HTTP_REFERER值给服务器,因此他们正常浏览会受影响。真不知道这类防火墙软件厂商是怎么想的,因为这最多只涉及隐私(而且主要是HTTP_REFERER网站的隐私,跟访问者没什么关系),而网络安全无关。
其实讲解.htaccess防盗链的文章互联网上有N多了,但是大多转载的都比原创作者SEO做的好,所以都在首页的近几页找不到原创的文章了,也就出现了许多代码被篡改而出现错误(比如转载复制时符号的半角全角的变换等原因),错误的代码和方法被一转再转,后果大家都知道了,找到的代码都用不了,不生效(比如防盗链彻底不生效,或者只能防盗链而能不显示设置防盗链后转到的警示图片或文件)。此次写这篇文章也是经过自己的反复试验和修正,终于成功防盗链并显示警示图片文件了。此篇文章有转载和修改原创的地方,希望原创能理解,我也是从N多转载中修改并总结的,太多转载我都找不到原创的你们了,故不能正确标明转载出处。本博为照顾新手啰嗦了不少,也请各位老鸟体谅。
- 最新
- 最热
查看全部没有评论内容