歡迎關注個人微信公眾號: 小哈學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, 後臺回覆資源,既可免費無套路獲取資源連結 !!!