摘要:最近幾年互聯(lián)網(wǎng)上流氓軟件盛行,盜鏈現(xiàn)象日益猖獗,已經(jīng)危及到許多網(wǎng)站的正常運行。文章提出了幾種反盜鏈解決方案,同時討論了如何處理反盜鏈技術(shù)和網(wǎng)站可用性的關(guān)系。
關(guān)鍵詞:盜鏈(hot-linking);反盜鏈;搜索引擎優(yōu)化(sE0);流氓軟件(rascal so,ware);網(wǎng)站可用性(website usability)
0 引言
盜鏈現(xiàn)象嚴(yán)重影響到了很多網(wǎng)站的正常運行已經(jīng)是不爭的事實。而完全以盜鏈為主的網(wǎng)站或共享軟件也屢見不鮮,完全有理由把這類軟件歸結(jié)為流氓軟件。
1 什么是盜鏈
所謂盜鏈,是指服務(wù)提供商自己不提供服務(wù)的內(nèi)容,而通過技術(shù)手段,繞過其它有利益的最終用戶界面(如廣告),直接在自己的界面上向最終用戶提供其它服務(wù)提供商的服務(wù)內(nèi)容,從而騙取最終用戶的瀏覽和點擊率。受益者不提供資源或提供很少的資源,而真正的服務(wù)提供商卻不能得到任何的支付。
網(wǎng)站盜鏈大量消耗被盜鏈網(wǎng)站的帶寬,而真正的點擊率也許會很小,嚴(yán)重損害了被盜鏈網(wǎng)站的利益。早期的盜鏈一般是一些名不見經(jīng)傳的小網(wǎng)站盜取一些有實力的大網(wǎng)站的地址,盜鏈的目標(biāo)比較有針對性;現(xiàn)在,很多大型的網(wǎng)站也已經(jīng)開始把盜鏈的目光鎖定在了整個互聯(lián)網(wǎng)上。竊取整個互聯(lián)網(wǎng)上的其它機器的帶寬。
常見的盜鏈有以下幾種:圖片盜鏈,音頻盜鏈,視頻盜鏈,文件盜鏈。
2 為什么存在盜鏈
—般要被瀏覽的頁面并不是一次全部傳送到客戶端的。如果客戶請求的是一個帶有許多圖片和其它信息的頁面,那么最先的—個HTTP請求被傳送回來的是這個頁面的HTML文本,客戶端瀏覽器對這段文本解釋執(zhí)行后,發(fā)現(xiàn)其中還有其它文件,客戶端瀏覽器會再發(fā)送一條或者更多httP請求。當(dāng)這些請求被處理后其它文件才被傳送到客戶端,然后瀏覽器將這些文件放到頁面的正確位置。一個完整的頁面要經(jīng)過發(fā)送多條HTTP請求才能夠被完整地顯示(如圖1)。基于這樣的機制。盜鏈就成為可能,服務(wù)提供商完全可以在自己的頁面中嵌入別人的鏈接,顯示在自己的頁面上,以達到盜鏈的目的。
簡單地說,盜鏈鉆了HTTP協(xié)議的空子。
3 盜鏈形式
根據(jù)盜鏈的形式的不同,可以簡單地把盜鏈分成兩類:常規(guī)盜鏈和分布式盜鏈。
(1)常規(guī)盜鏈
這種盜鏈比較初級,同時也比較常見。具有一定的針對性,只盜用某個或某些網(wǎng)站的鏈接。技術(shù)含量不高,實現(xiàn)也比較簡單。只需要在自己的頁面嵌入別人的鏈接即可。
(2)分布或盜鏈
分布式盜鏈?zhǔn)潜I鏈的一種閉幕式新的形式,系統(tǒng)設(shè)計復(fù)雜。難度相對較大。這種盜鏈一般不針對某一個網(wǎng)站,互聯(lián)網(wǎng)上任何一臺機器都可能成為盜鏈的對象。其原理如圖2所示。
服務(wù)提供商一般會在后臺設(shè)置專門程序(spjtier)在Interact上抓取有用的鏈接,然后存儲到自己的數(shù)據(jù)庫中。而對于最終用戶的每次訪問,都將其轉(zhuǎn)化為對已有數(shù)據(jù)庫的查詢,被查詢到的uRL就是被盜鏈的對象。由于對文件的訪問已經(jīng)被瀏覽器屏蔽掉了,所以最終用戶感覺不到所訪問的鏈接是被盜取的鏈接。
4 常見的反盜鏈技術(shù)
4.1 不定期更名文件或者目錄
不定期的更改文件或者目錄的名稱,是最原始的反盜鏈的方式,可以比較有效地防止盜鏈。這種方法一般工作量比較大。但是批量的文件改名是完全可以自動化的,而且也比較容易實現(xiàn)。
在文件的更名過程中,可能會有客戶正在下載該文件,這樣會導(dǎo)致正常的客戶訪問失敗,盡管這個問題容易解決,但是也不能夠忽視。
4.2 限制引用頁
這種防盜鏈原理是,服務(wù)器獲取用戶提交信息的網(wǎng)站地址,然后和真正的服務(wù)端的地址相比較,如果一致則表明是站內(nèi)提交,或者為自己信任的站點提交,否則視為盜鏈。
實現(xiàn)時可以使用HTTP_REFERERl和htaccess文件(需要啟用roodRewrite),結(jié)合正則表達式去匹配用戶的每一個訪問請求。
對于每5HTTP請求,服務(wù)器都要查找,htaccess文件,增加了讀取文件的次數(shù),一定程度上降低了性能。另外,服務(wù)器打開這個功能,有比較多的限制。
4.3 文件偽裝
文件偽裝是目前用得最多的一種反盜鏈技術(shù),一般會結(jié)合服務(wù)器端動態(tài)腳本(PHP/JSP/ASP)。圖3顯示了一個終端用戶請求文件a,zip的全過程。實際上用戶請求的文件地址,只是一個經(jīng)過偽裝的腳本文件,這個腳本文件會對用戶的請求作認證,一般會檢查Session,Cookie或HTrP_REFERER作為判斷是否為盜鏈的依據(jù)。而真實的文件實際隱藏在用戶不能夠訪問的地方,只有用戶通過驗證以后才會返回給用戶。
4.4 加密認證
這種反盜鏈方式。先從客戶端獲取用戶信息,然后根據(jù)這個信息和用戶請求的文件名字一起加密成字符串(session D)作為身份驗證。只有當(dāng)認證成功以后。服務(wù)端才會把用戶需要的文件傳送給客戶。
一般我們會把加密的Session ID作為URL參數(shù)的一部分傳遞給服務(wù)器,由于這個Session 和用戶的信息掛鉤,所以別人就算是盜取了鏈接,該Session lD也無法通過身份認證,從而達到反盜鏈的目的。這種方式對于分布式盜鏈非常有效。
4.5 其它方法
其它反盜鏈方式也有不少,這里只列出一個大概思想作為參考。
(1)IIS反盜鏈,利用ISAPl_Rewrite,和3 2的方法類似,可作為Windows下反盜鏈的—個解決方案。
(2)圖片反盜鏈,在圖片中加入水印,雖然盜鏈者可以達到目的,但是卻也在為自己的網(wǎng)站做宣傳。
5 反盜鏈技術(shù),搜索引擎優(yōu)化和網(wǎng)站可用性
(1)杜絕盜鏈?zhǔn)遣豢赡艿?,也沒有必要。
反盜鏈的目的在于保護自己的服務(wù)器資源特別是網(wǎng)絡(luò)帶寬不被非法濫用,合理的反盜鏈機制能夠讓網(wǎng)站有效地遠離不法網(wǎng)站的侵?jǐn)_,讓網(wǎng)站資源最大限度地為自己的用戶服務(wù),而不是不知不覺地為其他網(wǎng)站作貢獻。同時,反盜鏈技術(shù)在發(fā)展,盜鏈技術(shù)也在進步,必須注意的是,任何防盜鏈機制都不是百分之百可靠。只要是公開的資源就有可能被盜鏈。
實際上,我們只會保護重要的文件,而多數(shù)文件沒有必要反盜鏈。網(wǎng)站上的文件被相互引用是很正常的事情,沒有必要針對網(wǎng)站上的所有文件采用反盜鏈技術(shù)。
(2)反盜鏈技術(shù)和搜索引擎優(yōu)化。
反盜鏈技術(shù)不利于網(wǎng)站的推廣。搜索引擎在索引頁面時也會用到Sder,由于反盜鏈技術(shù)的采用,搜索引擎的Spider也會被拒之門外,這樣就減少了網(wǎng)站被索引的頁面。同時也會減少網(wǎng)站的外部鏈接,客戶了解這個網(wǎng)站的渠道會愈來愈少,這和網(wǎng)站推廣的原則背道而馳。合理地采用搜索引擎優(yōu)化技術(shù),可以把這方面的損失降低到最小。
(3)反盜鏈技術(shù)與網(wǎng)站可用性。
網(wǎng)站的反盜鏈技術(shù),多數(shù)都是通過檢查HTTP REFERER,Cookie和Session而實現(xiàn),這會帶來很多問題。在很多情況下這些值都為空,比如用戶在瀏覽器地址欄中直接輸入地址時,用戶通過某些代理服務(wù)器訪問時,通過收藏訪問等,這些訪問都是正常的訪問請求,但是會被誤認為是盜鏈。
從網(wǎng)站可用性角度看,采用反盜鏈技術(shù),相當(dāng)于提供商把自己的產(chǎn)品層層加鎖,嚴(yán)格控制訪問途經(jīng),這樣也必然給正常的終端用戶帶來不便。網(wǎng)站采用反盜鏈技術(shù)是以犧牲網(wǎng)站的某些功能為代價的,必然導(dǎo)致網(wǎng)站的可用性降低。
6 結(jié)束語
我們認為,應(yīng)該在保護自己不受盜鏈網(wǎng)站的侵害與保證網(wǎng)站可用性之間尋得一個可以接受的平衡點,要把網(wǎng)站的可用性放在第一位;另一方面,不能把反盜鏈技術(shù)作為保護網(wǎng)站版權(quán)的手段。適當(dāng)?shù)夭捎梅幢I鏈技術(shù),可以有效地保護自己,但同時也要保證網(wǎng)站的可用性。