破解防盗链 | 张扎瓦的博客

破解防盗链

用简单粗暴的方式破解防盗链


什么是盗链

简单来说,有两个网站,A和B。
A网站有一张图片

1
<img src="http://xxx/a.png" />

B网站看到了这张图片,他不下载,直接将图片的地址放到了自己的服务器上。那么当用户访问B站点时,实际却跑的是A站点的流量和服务,从而不劳而获,这就是盗链。

referrer

为了解决这种事情,HTTP协议规定:浏览器在加载非本站资源时,会增加如下请求头:

1
Referer: http://localhost:8080/temp/b.html

这个Referer标签是告诉请求者,引用这个资源的站点是谁

referer

防盗链原理

一般的站点,会根据Referer来进行防盗链工作,当请求头存在Referer时,即为非法引用,此时服务器拒绝服务,从而达到防盗链的目的。具体的实现有很多种,此处不细讲了,可自行Google。

破解防盗链

了解了防盗链的基本原理后,破解就简单多了。只要想办法在请求的时候取消请求头中的Referer就可以了。这里破解也有好多种办法,可以使用nginx反向代理,或者使用iframe等等。这里介绍一种我认为相对来说最简单的办法:

1
<meta name="referrer" content="never">

只要在html中加入上面的meta标签,就可以破解简单的防盗链了。这个meta标签的意思是告诉浏览器,请求时不用包含referer相关的信息,从而达到破解防盗链的目的。

referer与referrer

有人觉得很奇怪,浏览器中的请求头是referer,怎么标签里的是referrer,其实标签中的referrer才是正确的单词,据说是当时HTTP协议的制定者将单词拼错,大家就将错就错的使用了。具体可看维基百科的 HTTP来源地址 词条

如果我的文章对您有所帮助,不妨打赏一杯豆浆以资鼓励(○` 3′○)