盗链
盗链:盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
例如:在浏览器的URL栏中输入https://p.qpic.cn/music_cover/JBDCVgqXWXaYUvcsElqcicZMXwZytGNh8kNBGQ8jB7p7GVxic7KLx4Cw/300?n=1,如图所示:
在本地运行如下代码:
<img src="https://p.qpic.cn/music_cover/JBDCVgqXWXaYUvcsElqcicZMXwZytGNh8kNBGQ8jB7p7GVxic7KLx4Cw/300?n=1">
运行结果如图所示:
这就是盗链
防盗链
防盗链:顾名思义就是防止盗链。
原理:HTTP头里面有个referer头信息,在web 服务器通过referer的来源来判断是否展示资源
referer代表网页的来源或者上一个网页的地址
如果直接输入则没有refer信息头
原来的图片
不管是输入浏览器地址栏还是运行代码都是这个运行结果
这就是防盗链的一种方法。
Apache防盗链
1.找到httpd.conf中的LoadModule socache_shmcb_module modules/mod_socache_shmcb.so,去掉前面的”#“ 符号
2.在网站目录中新建.htaccess文件写入如下内容
<IfModule mod_rewrite.c>
//重写规则生效
RewriteEngine On
//只是在该目录下生效
RewriteBase /img
//对以下格式的文件进行重写规则
RewriteCond %{REQUEST_FILENAME}.*\.(jpg|jpeg|gif|png) [NC]
//如果不是来自139.199.20.195的用户,会重写
RewriteCond %{HTTP_REFERER} !139.199.20.195 [NC]
//重写规则
RewriteRule .*https://pic1.zhimg.com/80/v2-721c133aca3699e0426aef67ab5a609f_hd.jpg
// RewriteRule.* ./no.jpg 本地图片访问不了什么原因
</IfModule>
3.新建代码文件1.php输入如下内容
<img src="./img/1.jpg">
4.在浏览器中输入url
R 就是转向的意思
NC 指的是不区分大小写
L 的作用是指明本次转向到此结束,后续的转向不受先前判断语句的影响
原因:这个图片要放在没有设置防盗链的网站上,因为防盗链的作用,这个图片如果也放在防盗链网站上就会被当作防盗链显示不出来了,盗链者的网站所盗链图片会显示X符号。
Nginx防盗链:
1. 配置好lnmp环境,这是原图
2. 修改nginx.conf文件
//白名单,允许文件链出的域名白名单,自行修改成您的域名
valid_referers none blocked 139.199.20.195;
if ($invalid_referer) { //注意,这个if和(括号之间有空格,括号)和后面的{也有空格
rewrite ^/https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1525350349129&di=2e8675ac746f8a96496dba068b86bcd2&imgtype=0&src=http%3A%2F%2Fimgbdb3.bendibao.com%2Fbjbdb%2F201611%2F21%2F20161121154935_85682.jpg;
}
运行结果如图所示