欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 《Java 核心知识整理&面试.pdf》资源链接!!个人网站: https://www.exception.site/essay/how-to-set-aliyun-oss-http-referer
目录
一、背景
二、背后有啥猫腻
三、什么是盗链?
四、为什么会被盗链?
五、OSS 设置防盗链
六、验证一下效果
七、另外一些应对手段
一、背景
小哈前天陆续接到三个电话,但都因为忙于工作、下雨天等各种因素导致没接上,电话均来自杭州,心理一想,估计是阿里云的客服吧,因为之前也会偶尔接到他们的电话,比如回访之类的。
感觉应该也不是什么要紧的事儿。直到晚上,躺在床上休息的时候,无意翻动手机,鬼使神差的,我点开了短信查看。
PS: 小哈平常不怎么主动去翻短信,短信上常年数字 1000+,主要里面内容基本上是一些验证码啊、垃圾短信啊啥的,也懒得去清理。
无意间看到下面这条短信:
打了一个激灵,事情并不简单,如果还不及时续费,网站图片(小哈网站图片均存储在阿里云 OSS 对象存储上)都将无法访问!
吓得我赶紧又续费了 50 块钱!
二、背后有啥猫腻
暂时解决了 OSS 快到期的问题后,我开始回想整个事情的经过。OSS 当时开通的是按时付费的,因为使用的比较少,选择按时付费要更划算一些。
但是这一个月来,小哈写博客频率高了一些,另一方面,也为了公众号文章能有个良好的阅读体验,也是能用图片展示的,就尽量少上一行代码。
但是小哈的个站,每天的访问量只有可怜的几十个IP, 但是 OSS 后台的统计是下面这个鬼样子的:
存储用量暂且不说,外网流出流量 50G+,图片读请求 10w+, 什么鬼啊!这个数据对于每天访问几十个IP的个站,绝对是不正常的!
由于是按小时付费,峰值的时候,每小时就耗费5块大洋,这谁顶得住啊,账户上就那点钱,不欠费才怪呢!
问题原因,小哈首先想到的是图片被盗链了!
三、什么是盗链?
以下来自百度百科官方解释:
盗链是指服务提供商自己不提供服务的内容,通过技术手段绕过其它有利益的最终用户界面(如广告),直接在自己的网站上向最终用户提供其它服务提供商的服务内容,骗取最终用户的浏览和点击率。受益者不提供资源或提供很少的资源,而真正的服务提供商却得不到任何的收益。
通俗来说,就是存储在小哈图片服务器上图片,在未经过授权的情况下,被别人擅自使用了。
四、为什么会被盗链?
有一些类似于下图中爬虫网站,每天大批量的爬取文章,凭着自己网站权重高,即使不是原创,也能在百度中排名靠前,赚取广告费啥的,这里不得不吐槽一下百度。
好了,回归正题,这些爬虫网站没有自己的图片服务器(因为要钱),而是直接引用的原文的图片链接:
最终,这些图片的请求流量,全都由图片的所有者来买单。
五、OSS 设置防盗链
OSS 是按使用量收费的服务,为了减少存储于 OSS 的数据被其他人盗链而产生额外费用,OSS本身是支持设置Referer,基于 HTTP 和 HTTPS header 中表头字段Referer 的防盗链方法。
我们可以通过控制台为自己的存储空间设置 Referer 字段的白名单、以及是否允许 Referer 字段为空的请求访问。
接下来,进入阿里云控制台,设置 OSS 白名单,这里我设置为自己的网站域名 www.exception.site, 也就是说 header 请求头中, Referer 为 www.exception.site 的网站,才能被够允许访问,否则直接拒绝:
- ①:选择需要设置防盗链的 Bucket;
- ②:设置防盗链 HTTP Referer 白名单;
- ③:保存;
六、验证一下效果
6.1 Referer 为空测试
通过 curl
命令来访问一下 bucket 中的某张图片,此时 header 头中的 Referer 属性值为空,看下是否能够正常访问:
可以看到请求失败 AccessDenied
.
6.2 Referer 一个不在白名单的域名测试
通过 -e
参数传递一个未设置在白名单中的地址,看能够访问成功:
依然不能够访问成功,测试正常!
再来验证下上面说的盗链网站是否还能够正常访问,首先我们清空浏览器缓存:
Nice!图片已经打不开了。
6.3 存在于白名单中的域名测试
这里小哈直接访问自己的网站来验证效果:
图片请求 header 头的 Referer 属性值与设置的一致,个人网站图片均能够正常访问。
七、另外一些应对手段
除了防盗链的设置,目前来看按小时付费套餐已经不太合适了,在阿里云上购买一个下行流量包,半年6个月,每个月50G流量,价格60块大洋,当然了,超出的得另算。
如果说未来流量继续增大的话,那就要考虑带过期时间的图片访问、CDN, 以及购买回源流量包了,那就是后话了,有机会小哈再给大家分享。下期见!
Ref
- https://help.aliyun.com/document_detail/31901.html?spm=a2c4g.11186623.2.10.27941757vDKK1u
- https://help.aliyun.com/knowledge_detail/39521.html?spm=5176.2000002.0.0.2fcf54b5M6uyDU
免费分享 | 面试&学习福利资源
最近在网上发现一个不错的 PDF 资源《Java 核心知识&面试.pdf》分享给大家,不光是面试,学习,你都值得拥有!!!
获取方式: 关注公众号: 小哈学Java, 后台回复资源,既可免费无套路获取资源链接,下面是目录以及部分截图:
重要的事情说两遍,关注公众号: 小哈学Java, 后台回复资源,既可免费无套路获取资源链接 !!!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。