如果你有自己的服务器就请先对./conf/httpd.conf 文件做以下修改
找到:#LoadModule rewrite_module modules/mod_rewrite.so
把前面的 # 给去掉
找到等一个 AllowOverride None 改为 AllowOverride All
重启Apache2服务器
接下就是做一个 .htaccess 文件了,其 .htaccess 文件内容为
代码如下 | 复制代码 |
RewriteEngine on RewriteCond %{HTTP_REFERER} !^[url]http://test.com.ru/.[/url]*$ [NC] RewriteCond %{HTTP_REFERER} !^[url]http://test.com.ru$[/url] [NC] RewriteCond %{HTTP_REFERER} !^[url]http://www.test.com.ru/.[/url]*$ [NC] RewriteCond %{HTTP_REFERER} !^[url]http://www.test.com.ru$[/url] [NC] RewriteRule .*.(jpg|jpeg|gif|png|bmp|rar|zip|exe)$ [url=http://down.test.com.ru/err.html]http://down.test.com.ru/err.html[/url] [R,NC] |
其中有色的地方都是要改为你的:
红色:就是改为你提供下载页面的地址,也就是只有通过这个地址才可以下载你所提供的东东。
蓝色:就是要保护文件的扩展名(以|分开),也就是说以这些为扩展名的文件只有通过红色的地址才可以访问。
绿色:如果不是通过红色的地址访问蓝色这些为扩展名的文件时就回重定向到绿色地址上。
接下就是怎么用 .htaccess 文件来实现防盗链了。
首先要在空间上建两个目录(当然目录名随你),一个为 web 另一个为 down ,
web 是用来放下载页面的(或下载程序),down 当然就是放你提供的东东的啦,
把 .htaccess 文件的红色部分改一下,改为http://你的域名/web。蓝色部分
改为你要保护文件的扩展名。绿色部分改为http://你的域名/web。改后保存
htaccess防盗链简单快捷。
首先建一个.htaccess文件 (linux系统一般是Apache服务器),写入如下代码,上传至网站根目录:
代码如下 | 复制代码 |
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ [NC] RewriteCond %{HTTP_REFERER} !www.111cn.net [NC] RewriteCond %{HTTP_REFERER} !google.com [NC] RewriteCond %{HTTP_REFERER} !baidu.com [NC] RewriteCond %{HTTP_REFERER} !www.hihi123.com [NC] RewriteRule .*.(gif|jpg|png)$ http://www.111cn.net/ nopic.gif [R,NC,L] |
说明:
上面是以我的网站www.111cn.net为例,依次设置允许访问的HTTP来源,包括我们的站点自身、google.com、baidu.com这些搜索引擎网站,便于收录,可以添加更多网站,复制多一行修改就行了。
最后面那一行代码是防盗链扩展名,自己添加修改;http://www.111cn.net
位置一般情况下在 /usr/local/apache/conf/httpd.conf
或者apache 2.2 的 /usr/local/apache2/conf/extra/httpd-vhost.conf
添加
代码如下 | 复制代码 |
SetEnvIfNoCase Referer "^http://www.ccvita.com" local_ref=1 SetEnvIfNoCase Referer "^http://ccvita.com" local_ref=1 <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)"> Order Allow,Deny Allow from env=local_ref </filesmatch> |
其中粗体的是您的网址,如果有多个,就加多行
斜体的是您需要防盗链的文件后缀,中间用|隔开
还一种写法,是用正则的,这种写法在各个版本的apache比较通用。
写法是
代码如下 | 复制代码 |
SetEnvIfNoCase Referer "^<strong>http://.*.yourdomin.com</strong>" local_ref=1 SetEnvIfNoCase Referer "<strong>.*.yourdomin.com</strong>" local_ref=1 <filesmatch ".(txt|doc|mp3|zip|rar|jpg|gif)"> Order Allow,Deny Allow from env=local_ref </filesmatch> |
其中粗体的部分有一点区别,用正则写法, 符号代表转义,因为.本身在正则中有自己的作用。
上面说的是Apache防盗链的使用,现在来说Apache防盗链的破解,说简单点Apache防盗链是通过来路来确定用户是否盗链的,如果自己写采集程序的话,我们完全可以利用php的curl_setopt函数中CURLOPT_REFERER和CURLOPT_USERAGENT这个两个函数去模拟referer和useragent的。