能在哪里找到referer:
今天我来学习一下referer
,简单的介绍一下,常见的http请求中,header部分会带有一个
字段,我们打开网络开发者工具(Web developer tool),找到network,点开post里面的file文件,就会发现里面带有referer
字段。如下图:referer

referer是什么:
在英文中,
代表“引用”的意思,我们可以理解为你是通过什么渠道点击进入的这个网站,即你是被谁引介进入的,就会在referrer
中有所体现。(注:referer
拼错了,但是开发人员将错就错了)referer
因为上图是我自己从我的网站上面点击的,所以
字段的信息,就是我网站的host。一般来说referer
字段显示的就是你当前访问的网页地址(比如说域名加上文章页面地址)referer
但是也有例外,有时候你会在Header里面找不到
,这是为什么呢?可能因为:referer
1)直接在地址栏输入url链接,直达网页
2)从浏览器收藏夹中打开网页
3)后端代码没有配置
的情况下自动请求网页referer
4)用户的浏览器插件直接禁止了携带
信息referer
referer的作用:
设置【防盗链】,接下来我会说的很简单,网页上有时候不是所有的网址你都打得开,网页上面的每张图片,每个图标,都是有它对应的网址的,也就是我们所说的【链接】,而让这些链接变得无法访问,404,405,就是【防盗链】在起得作用。
如何突破防盗链:
我想说的是,一般只要是放在网络上面的东西,你就不要指望有多安全了,想扒下来那是绝对可以做到的,像一般使用火狐浏览器,都不需要设置,基本上天猫,京东的图片右键-【新的标签页打开】-【直接右键保存】即可,对比谷歌浏览器,火狐可以操作的空间很多,像我的这个网站没有CDN加速,只是设置了一下
,稍微伪装一下就可以下载图片,基本上只要是上了浏览器的东东,大家都懂的吧referer
1、火狐可以安装一款插件【Referer Control】,插件链接点此,(如果你是CN版的火狐,那么对不起你无法安装这款插件,它会提示你文件已损坏,请去下载US版本的火狐),直接对于自己想要扒的图片设置【Block referer】屏蔽referer

打开插件主页面。对于
有三种设置模式:“普通”,“自订”,“屏蔽”referer
“普通”是默认的选项,也就是没有任何变化的选项,“自订”是自己输入想要修改的
,“屏蔽”就是让referer
为空referer
Normal | do not change referer – use this to whitelist sites when using the default action |
Custom | set up a custom referer to send |
Block | do not send any referer at all |
2、 在火狐地址栏中输入”about:config”,回车。然后在下面出现的过滤器一栏输入”network.http.sendRefererHeader”,下面只剩了一条显示。
双击该条首选项,出现的对话框内,将整数的值由2改为0。刷新后就能看到图片。
介绍一下首选项各个整数值所代表的含义:
0–从不发送referer信息;
1–当点击超链接时发送referer信息;
2–当点击超链接或加载图片时发送referer信息。(默认值)

3、mock referer 字段
使用chrome 插件【postman】,可 mock 多种类型请求,常用的就是 post 和 get。对于限定请求来源的请求,可在 header 中设置 referer 字段。postman还有共享api,api池等功能,详细介绍可以参考他们的官方文件。
当我们通过一系列设置,使得我们能够知道图片对应的http地址,我们在网络开发者工具中【Console】输入:
location.href='图片的http地址'
我们就能打开图片进行下载了
结语:
除了referer,配置nginx
也可以达到防盗链的目的,防盗链既然能够被伪造,也就是说无法被完全相信,所以大家对于放到网页上面的东西,不论是你的社交平台还是个人资料,都需要想好,这些东西我是不是真的想要分享给所有人看。有些京东淘宝很多图片,他们的防盗链虽然能够被突破,但是他们图片http地址指向的是缩略图,下载下来像素不高,可能原图几百kb,你爬下来才十几kb,或许这也是防盗链的新思路,既然无法完全禁止下载图片,那么就提交一个像素不高的thumbnail供爬取。