欢迎关注个人微信公众号: 小哈学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

免费分享 | 面试&学习福利资源

最近在网上发现一个不错的 PDF 资源《Java 核心知识&面试.pdf》分享给大家,不光是面试,学习,你都值得拥有!!!

获取方式: 关注公众号: 小哈学Java, 后台回复资源,既可免费无套路获取资源链接,下面是目录以及部分截图:

重要的事情说两遍,关注公众号: 小哈学Java, 后台回复资源,既可免费无套路获取资源链接 !!!

欢迎关注微信公众号: 小哈学Java

阿里云 OSS 如何设置防盗链, 上个月图床流量耗费50G+,请求次数10W+,什么鬼?的更多相关文章

  1. Hexo一键部署到阿里云OSS并设置浏览器缓存

    自建博客地址:https://bytelife.net,欢迎访问! 本文为博客自动同步文章,为了更好的阅读体验,建议您移步至我的博客 本文作者: Jeffrey 本文链接: https://bytel ...

  2. 使用Typora + 阿里云OSS + PicGo 打造自己的图床

    使用Typora + 阿里云OSS + PicGo 打造自己的图床 为什么要打造图床? 让笔记远走高飞 试问以下场景: 我们要把 markdown 笔记放到某博客上,直接进行复制即可.但因你的图片存储 ...

  3. 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程

    在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程 by shuijingwan · 2016/01/13 1.SDK安装 github ...

  4. 阿里云oss视频上传不能在线播放,js,javascript,在线播放器,插件

    网页视频播放插件 发现阿里云oss储存,上传了视频不能在线播放. 解决方法:使用插件播放即可解决. <html> <head> <meta charset="u ...

  5. 一招教你写博客,Typora+PicGo+阿里云oss,最好用的Markdown+最好用的图床工具!

    博客 写博客的好处 1.使自己变得更善于观察.一旦你养成了记博客的习惯,与此同时你也赋予了一个更好的机会给自己,让自己去更细致地观察生活.一个人的生活经历本就是价值连城的,从中学习到的知识,教训更是异 ...

  6. 云储存第三方--阿里云OSS VS 又拍云USS

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p. ...

  7. 如何用云存储和CDN加速网站图片视频、阿里云OSS的使用(转)

    总有人说阿里云主机带宽小,那只是因为你还停留在单机架构上. 阿里的架构设计,云主机主要用来跑程序的,附件的存储和访问主要靠OSS. 有人又会说了,OSS按存储费+流量双重计费伤不起,只是你不知道OSS ...

  8. SpringBoot 2.0整合阿里云OSS,实现动静分离架构

    前言 相信大部分开发者对下面这张架构图并不陌生吧,现在很多网站/应用都采用了动静分离的架构进行部署.博主的博客也不例外,主机采用的是阿里云的 ECS,使用 CDN 做静态内容分发,不过静态文件还是存储 ...

  9. Typora图片与阿里云OSS图床的结合之旅

    图床? 专门用于存放图片,并允许用户通过独一的外链进行特定图片资源的访问 为什么是阿里云OSS(Object Storage Service) 码云开源需要审核,已经不能作为免费的图床使用(2022年 ...

随机推荐

  1. Git 合并单个文件

    有两个分支 # git branch -a * branchA branchB remotes/origin/branchC A分支合并B分支单个文件 注意是本地分支,还是远程分支 # git che ...

  2. Android培训准备资料之五大布局简单介绍

    本篇博客主要简单的给大家介绍一下Android五大布局 (1)LinearLayout(线性布局) (2)RelativeLayout(相对布局) (3)FrameLayout(帧布局) (4)Abs ...

  3. AI 图像识别的测试

    随着AI 的浪潮发展,AI 的应用场景越来越广泛,其中计算机视觉更是运用到我们生活中的方方面面.作为一个测试人员,需要紧跟上 AI 的步伐,快速从传统业务测试,转型到 AI 的测试上来.而人脸识别作为 ...

  4. day09 作业

    简述定义函数的三种方式 空函数.无参函数.有参函数 简述函数的返回值 函数内部代码经过一系列的逻辑处理返回的结果 函数没有返回值,默认返回None 函数可以通过return返回出返回值 return可 ...

  5. Python从零开始——元组tuple

    一:元组知识内容 二:元组的不可变性 三:元组创建 四:元组操作

  6. Swagger从入门到放弃

    如何编写基于OpenAPI规范的API文档 简介 Swagger Swagger是一个简单但功能强大的API表达工具.支持的语言种类繁多 使用Swagger生成API,我们可以得到交互式文档,自动生成 ...

  7. 前端之CSS(下)

    文本属性 ## 文字对齐 #text-align属性规定元素中文本的水平对齐方式 left: 左边对齐 默认值 right: 右对齐 center: 居中对齐 justify: 两端对齐 ## 文字装 ...

  8. zz“深度高斯模型”可能为深度学习的可解释性提供概率形式的理论指导

    [NIPS2017]“深度高斯模型”可能为深度学习的可解释性提供概率形式的理论指导?亚马逊机器学习专家最新报告 专知 [导读]在NIPS 2017上,亚马逊机器学习专家Neil Lawrence在12 ...

  9. 重拾算法之复杂度分析(大O表示法)

    .katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...

  10. Xamarin.Forms移动开发系列1:介绍和安装

    摘要 Xamarin成立于2011年5月16日.Xamarin 是一套基于C#语言的跨平台移动应用开发工具,2016年2月24日被微软正式收购. 前言 很早就已经听说强大的.NET生态中有一个移动开发 ...