浅谈阿里云oos防盗链

“浅谈我与防盗链的小故事”

Q:我为什么想到需要防盗链?

A:把视角回顾到几天前吧,那是长久的蝶梦真正开始化作现实的地方。

在建立了自己的博客并搞定Markdown专用的阿里云oos图床后,我便不停歇的赶向学习的下一站,那时候我就在想:“如果我传到图床并引用在公网的图片被审查元素后直接引用,而访问流量又计量到我的账户上怎么办呢?”(阿里云oos的流量可是按照使用量计费的嗷),那天还是6月11日。中间经历了短暂如流水过隙般的迷茫后,6月14日下午我完成了第三个博客,也就是java的八种基本数据类型。此时,这个问题又出现在了我的面前。看着不经意在论坛上浏览到的被盗链导致大额流量欠费的帖子,我陷入了沉思。

在搜索相关经验时,我接触到了“防盗链”这个名词,于是开始进一步了解。

不如在这里先说一下结果,结果就是在几个小时之后,我成功的完成了防盗链的设置,并对其有了较深入的了解,也不需要担心我的资源被引用导致流量谜一般超额。

盗链:“自己的图片上传到自己的云端,之后可以通过云端分配的URL地址进行直接引用,这使得我们在整理Markdown笔记或是编写网站时稳定的添加插图成为可能,不会因为计算机物理硬盘的损伤而丢失数据。盗链表示,互联网上的其他用户在浏览你的图片时检查了你的图片来源,获取了URL,并直接放到自己的博客或者网站上,而当用户在他们的网站上浏览你的图片时,产生的流量费用会记在你的服务器,所以我们需要防盗链”

Q:不如展开讲讲“防盗链”是什么?

A:Sure,我在第一段先说了事情的起因和结果,因为想要详细展开讲讲防盗链需要一点点的篇章,我怕大家看不下去,便先说了结果。接下来简单讲一下。

盗链:“自己的图片上传到自己的云端,之后可以通过云端分配的URL地址进行直接引用,这使得我们在整理Markdown笔记或是编写网站时稳定的添加插图成为可能,不会因为计算机物理硬盘的损伤而丢失数据。盗链表示,互联网上的其他用户在浏览你的图片时检查了你的图片来源,获取了URL,并直接放到自己的博客或者网站上,而当用户在他们的网站上浏览你的图片时,产生的流量费用会记在你的服务器,所以我们需要防盗链”

*先要确定防盗链选用的思路

我们从几张图片来看懂网络访问的逻辑

现在我随意打开了博客园的一篇文章并使用F12进行网络审查

image-20220615015526095

使用F5刷新页面,并点击其中一个捕获到的网络行为,我们可以看到在请求标头的位置存在一行“Referer”,内容也清晰可见:“https://www.cnblogs.com

这说明当我想要浏览这个网站上的媒体资源时,是通过博客园来访问的,这个“Referer”就相当于身份证,可以获取请求访问网站的身份信息,那么我们是否可以通过这个方式来辨别,即将访问我发布在公网上的图片的流量从何而来呢?如果是在我的博客上正常浏览,我就允许图片加载,而如果被引用到别的平台,且图片被其他平台来的流量访问则不允许加载呢?

只是不允许访问根据我的URL加载出来的图片,如果转载者可以保存下来我的图片并上传到自己的图床引用我是很欢迎的,发布到QQ或是朋友圈都好,只要不是在网站中直接引用我图床的地址就好。

*理论存在,开始动手

在短暂的人生中我学会了一个道理,如果你想要为了节约几块钱而大费周章,你所浪费的时间和精力会远远超过这些钱,并且收获较差的体验。所以我一开始将图床建立在阿里云oos,而不是gitee,微博图床等免费图床(微博图床已经无法使用,gitee根据最近的政策变动不允许仓库用作图床了,这说明我的观点正确,且阿里云的流量资费对于博客用户只需要几块钱甚至几毛钱就可以稳定用一个月)

我很高兴最开始便选择了功能完善的阿里云oos,在控制台的Bucket列表中很容易的找到了防盗链选项

image-20220615021047380

image-20220615021317104

当选择开启防盗链时,会看到三个选项,我们不需要在意最后一个,来看第一个和第二个吧。很显然,第一个后面跟着的填空框中需要我们填入白名单referer,也就是“可以访问我们放在公网资源的来源”。在这里我随意填一下

image-20220615021530542

显然“123”不是任何网址,而是随意的一组数字

image-20220615021752829

回到我们的oos仓库,发现竟然无法预览自己的图片了!

原因也相当简单,因为我们的白名单中没有阿里云仓库的Referer,所以阿里云不被允许加载这些图片,也就不会产生任何流量费用,接下来我们把阿里云加入白名单。

image-20220615022144559 image-20220615022313112

很明显!我们又可以访问自己的资源库了!

Q:防盗链对于别的网站是有效果的吗?

A:是的!

image-20220615022936519

我将它复制下来并尝试到其他网站引用

得到了这样的结果?!

你可能会惊讶?!我不是已经设置了防盗链了吗?为什么在CSDN上的Markdown编辑器还是可以访问我的图片?

但是不要着急,待我一点点为你解释

首先了解到CSDN的Markdown编辑器中解析图片的逻辑

CSDN的Markdown编辑器在得到我们的原图链接时进行访问,为什么会得到返回数据呢?这时把目光放回开始时我们对于Referer白名单的设置image-20220615031716180

*允许空Referer

之前我们说过,Referer就像网站的身份证,在请求访问时出示可以证明自己的身份,但是在Markdown文本编辑器中访问链接时Referer是空白的,相当于你用图片浏览器打开你本地的图片,所以在CSDN的Markdown文本编辑器中可以正常打开!

而下面的灰色链接,则是CSDN官方自己的图床,可以帮你解析网图并转存,由特征链接“csdnimg”可见!

由此,当我们发布出了文章,虽然也可以正常见到这张图片,但是链接是CSDN官方的图床,流量费用不会计算到我们自己的服务器~~

最后,让我们把自己博客的域名加到白名单,简单的Referer防盗链就完成啦!~~

posted @ 2022-06-15 03:46  枫爱林  阅读(378)  评论(0编辑  收藏  举报