1.什么是盗链?
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告)
直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率
受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益
2.盗链分类
网站盗链会大量消耗被盗链网站的带宽,而真正的点击率也许会很小,严重损害了被盗链网站的利益
早期的盗链一般是一些比较小的网站盗取一些有实力的大网站的地址,盗链的目标比较有针对性
现如今,一些大型的网站也已经开始把盗链的目光锁定在了整个互联网上,窃取整个互联网上的其它机器的带宽
常见的盗链有以下几种:图片盗链、音频盗链、视频盗链、文件盗链
一般被访问浏览的页面并不是一次全部传送到客户端的
如果客户请求的是一个带有许多图片和其它信息的页面,那么最先的一个HTTP 请求被传送回来的是这个页面的HTML文本
客户端浏览器对这段文本解释执行后,发现其中还有其它文件,客户端浏览器会再发送一条或者更多HTTP请求
当这些请求被处理后其它文件才被传送到客户端,然后浏览器将这些文件放到页面的正确位置
一个完整的页面要经过发送多条HTTP 请求才能够被完整地显示
基于这样的机制,盗链就成为可能,服务提供商完全可以在自己的页面中嵌入别人的链接,显示在自己的页面上,以达到盗链的目的
根据盗链的形式的不同,可以简单地把盗链分成两类:常规盗链和分布式盗
常规盗链比较初级,同时也比较常见,具有一定的针对性,只盗用某个或某些网站的链接
技术含量不高,实现也比较简单,只需要在自己的页面嵌入别人的链接即可
分布式盗链是盗链的一种新的形式,系统设计复杂,难度相对较大
这种盗链一般不针对某一个网站,互联网上任何一台机器都可能成为盗链的对象
服务提供商一般会在后台设置专门程序(Spider)在Internet上抓取有用的链接, 然后存储到自己的数据库中
而对于最终用户的每次访问,都将其转化为对已有数据库的查询,被查询到的URL 就是被盗链的对象
由于对文件的访问已经被浏览器屏蔽掉了,所以最终用户感觉不到所访问的链接是被盗取的链接
3.什么是防盗链?
WEB应用防火墙通过实现URL级别的访问控制,对客户端请求进行检测
如果发现图片、文件等资源信息的HTTP请求来自于其它网站,则阻止盗链请求,节省因盗用资源链接而消耗的带宽和性能
4.实验环境
主机信息 | 主机的功能(服务) |
---|---|
server1(172.25.8.1) | 被盗链服务器 |
server2(172.25.8.2) | 盗链服务器 |
真机 | 客户端 |
其实server1是真正有资源的web服务,server2上面没有资源
当客户访问server2的时候拿到的是server1的资源,点击率却是server2的,不利于server1服务器的正常使用
5.模拟盗链(server2盗取server1的资源)
- (1)server2主机(盗链主机)上进行的操作如下:
yum install -y gd-devel cc gcc pcre-devel zlib-devel安装基本的东西
tar zxf nginx-1.17.1.tar.gz 解压
cd nginx-1.17.1/进入解压后的目录
vim auto/cc/gcc关闭debug日志
171 # debug
172 #CFLAGS="$CFLAGS -g"
./configure --prefix=/usr/local/nginx/ --with-http_image_filter_module=dynamic --with-http_realip_module编译
make && make install安装
cd /usr/local/nginx/conf/进入nginx服务的配置目录
vim nginx.conf编辑配置文件
35 server {
36 listen 80;
37 server_name daolian.westos.org;
38
39 charset utf-8;
40
41 #access_log logs/host.access.log main;
42
43 location / {
44 root /web;
45 index index.html index.htm;
46 }
ln -s /usr/local/nginx/sbin/nginx /sbin做一个软链接
nginx启动nginx服务
mkdir /web建立资源目录
vim /web/index.html
daolian.westos.org
vim /etc/hosts # 写解析
172.25.8.2 server2 daolian.westos.org
curl daolian.westos.org # 测试
daolian.westos.org
vim /web/index.html 将内容指向server1的资源
<html>
<body>
<br>盗链图片</br>
<img src="http://www.westos.org/1.jpg">
</body>
</html>
- (2)在server1主机(被盗链主机)上进行如下操作:
cp /usr/local/nginx/html/download/vim.jpg /web/
ls /web/
vim.jpg
- (3)在真机上面进行测试
vim /etc/hosts
172.25.8.2 server2 daolian.westos.org
其实这个图片是server1的资源
6.防盗链(server1不让server2盗取它自己的资源)
- (1)在server1上面设置
cd /bbs
ls
daolian.png index.html
cd /usr/local/nginx/conf/
vim nginx.conf
143 location ~* \.(gif|jpg|png|jpeg)$ {
144 root /web;
145 valid_referers none blocked www.westos.org;# 原是站点访问的是www.westos.otg时,不做禁止
146 if ($invalid_referer){
147 rewrite ^/ http://bbs.westos.org/daolian.png;
148 }
149 }
150
151 }
152
153 server {
154 listen 80;
155 server_name bbs.westos.org;
156
157 location / {
158 root /bbs;
159 index index.html;
160 }
nginx -s reload重新加载服务
- (2)客户端测试:警告信息