一.盜鏈的定義:
某內(nèi)容不在自己服務(wù)器上春瞬,而通過技術(shù)手段,繞過別人放廣告有利益的最終頁操刀,直接在自己的有廣告有利益的頁面上向最終用戶提供此內(nèi)容摔刁。 常常是一些名不見經(jīng)傳的小網(wǎng)站來盜取一些有實力的大網(wǎng)站的地址(比如一些音樂、圖片净蚤、軟件的下載地址)然后放置在自己的網(wǎng)站中钥组,通過這種方法盜取大網(wǎng)站的空間和流量。內(nèi)容不在自己服務(wù)器上今瀑,而通過技術(shù)手段程梦,繞過別人放廣告有利益的最終頁,直接在自己的有廣告有利益的頁面上向最終用戶提供此內(nèi)容橘荠。 常常是一些名不見經(jīng)傳的小網(wǎng)站來盜取一些有實力的大網(wǎng)站的地址(比如一些音樂屿附、圖片、軟件的下載地址)然后放置在自己的網(wǎng)站中哥童,通過這種方法盜取大網(wǎng)站的空間和流量挺份。
二.某視防盜鏈:
1.Referer防盜鏈(央視網(wǎng)H5采用referer防盜鏈+token防盜鏈)
什么是referer?Referer是HTTP協(xié)議中request header的一部分贮懈,當(dāng)瀏覽器向web服務(wù)器發(fā)送請求的時候匀泊,一般會帶上Referer,告訴服務(wù)器我是從哪個頁面鏈接過來的朵你,服務(wù)器基此可以獲得一些信息用于處理各聘。如果refer信息不是來自本站,就阻止訪問或者跳到其它鏈接抡医。
我對某視網(wǎng)的H5進行了抓包躲因,發(fā)現(xiàn)其采用了referer防盜鏈:
referer驗證過程抓包
不妨推測一下某視網(wǎng)referer防盜鏈的流程:
第一步:b_match進行referer驗證,成功訪問返回btime和bauth的信息魂拦,然后將btime和bauth通過b_mattching的進行referer驗證毛仪,通過繼續(xù)訪問,不通過返回error芯勘,箱靴。
我將b.matching的url復(fù)制到瀏覽器進行了驗證,即空referer的情況荷愕,charles截圖如下:
空referer的request截圖
請求返回結(jié)果如下圖:
由此可見衡怀,對referer的判斷可以起到防盜鏈的作用。但是安疗,refer防盜鏈易于破解抛杨,大大降低了防盜鏈的作用。
第二步荐类,b.matching通過驗證會返回一個tag怖现,然后請求vdn,解析獲取視頻的原始url,然后把原始url作為參數(shù)進行new_url請求(參數(shù)還有btime屈嗤,bauth以及referer):
請求返回新的url潘拨,response截圖·如下:
第三步,用新的url請求CDN
還有一種UA防盜鏈饶号,也叫做客戶端白名單铁追,依據(jù)就是User Agent字段,其原理和referer防盜鏈類似茫船。UA 防盜鏈通常用在手機 APP 或者一些可自定義 User Agent 的應(yīng)用琅束。User agent和referer一樣,易于偽造算谈。
2.Token防盜鏈(時間戳防盜鏈)
什么是token防盜鏈涩禀?Token防盜鏈通過對時間有關(guān)的字符串進行簽名,將時間濒生,簽名信息通過一定的方式傳遞給CDN節(jié)點服務(wù)器作為判斷依據(jù)埋泵,CDN 節(jié)點則會根據(jù) URL 的加密形式幔欧,取出對應(yīng)的過期時間罪治,和當(dāng)前服務(wù)器時間進行比較,確認請求是否過期礁蔗,過期的話觉义,則直接拒絕;如果時間未過期浴井,CDN 節(jié)點將根據(jù)約定的簽名算法和密文晒骇,計算后的值和 URL 中的原始加密串進行比較;通過之后磺浙,請求會被認為是合法的洪囤。不合法的請求可以采取禁止訪問或其他操作。
1)客戶端業(yè)務(wù)服務(wù)器生成驗證信息撕氧,驗證信息的生成由業(yè)務(wù)服務(wù)器負責(zé)瘤缩,具體的加密過程需要確認如下事項:
a.確認過期時間的格式,默認采用UNIX時間戳格式
b.確認驗證信息中的密文伦泥,用戶計算驗證信息剥啤,需要和 CDN 平臺約定
c.確認驗證信息時加入的參數(shù),默認為 URL 的路徑部分
d.根據(jù)上文的算法說明計算驗證信息不脯,其中請求 URL 中的驗證參數(shù)為 _upt
2)CDN節(jié)點驗證過程
a.根據(jù)約定解析取出過期時間府怯,和當(dāng)前 CDN 節(jié)點服務(wù)器時間進行比較,確認請求是否過期
b.根據(jù)上文約定好的算法計算方式防楷,計算出 MD5 加密串后牺丙,和 URL 中的加密串進行比較,驗證加密串是否一致
c.如果以上兩個步驟都驗證通過复局,請求才會被認為是合法的冲簿,這時 CDN 會請求資源響應(yīng)給客戶端是整,否則會被認為是非法請求,直接響應(yīng) HTTP status code 403民假。