盜鏈

盜鏈

盜鏈是指服務提供商自己不提供服務的內容,通過技術手段繞過其它有利益的最終用戶界面(如廣告),直接在自己的網站上向最終用戶提供其它服務提供商的服務內容,騙取最終用戶的瀏覽和點擊率。受益者不提供資源或提供很少的資源,而真正的服務提供商卻得不到任何的收益。

盜鏈分類


網站盜鏈會大量消耗被盜鏈網站的帶寬,而真正的點擊率也許會很小,嚴重損害了被盜鏈網站的利益。早期的盜鏈一般是一些比較小的網站盜取一些有實力的大網站的地址,盜鏈的目標比較有針對性,現如今,一些大型的網站也已經開始把盜鏈的目光鎖定在了整個網際網路上,竊取整個網際網路上的其它機器的帶寬。常見的盜鏈有以下幾種:圖片盜鏈、音頻盜鏈、視頻盜鏈、文件盜鏈。
一般要被瀏覽的頁面並不是一次全部傳送到客戶端的。如果客戶請求的是一個帶有許多圖片和其它信息的頁面,那麼最先的一個HTTP 請求被傳送回來的是這個頁面的HTML文本,客戶端瀏覽器對這段文本解釋執行后,發現其中還有其它文件,客戶端瀏覽器會再發送一條或者更多HTTP請求,當這些請求被處理后其它文件才被傳送到客戶端,然後瀏覽器將這些文件放到頁面的正確位置。一個完整的頁面要經過發送多條HTTP 請求才能夠被完整地顯示。基於這樣的機制,盜鏈就成為可能,服務提供商完全可以在自己的頁面中嵌入別人的鏈接,顯示在自己的頁面上,以達到盜鏈的目的。
根據盜鏈的形式的不同,可以簡單地把盜鏈分成兩類:常規盜鏈和分散式盜鏈。常規盜鏈比較初級,同時也比較常見,具有一定的針對性,只盜用某個或某些網站的鏈接。技術含量不高,實現也比較簡單,只需要在自己的頁面嵌入別人的鏈接即可。分散式盜鏈是盜鏈的一種新的形式,系統設計複雜,難度相對較大。這種盜鏈一般不針對某一個網站,網際網路上任何一台機器都可能成為盜鏈的對象。服務提供商一般會在後台設置專門程序(Spider)在Internet上抓取有用的鏈接, 然後存儲到自己的資料庫中。而對於最終用戶的每次訪問,都將其轉化為對已有資料庫的查詢,被查詢到的URL 就是被盜鏈的對象。由於對文件的訪問已經被瀏覽器屏蔽掉了,所以最終用戶感覺不到所訪問的鏈接是被盜取的鏈接。

反盜鏈


原始方式

不定期的更改文件或者目錄的名稱,是最原始的反盜鏈的方式,可以比較有效地防止盜連,這種方法一般工作量比較大。但是批量的文件改名是完全可以自動化的,而且也比較容易實現。在文件的更名過程中, 可能會有客戶正在下載該文件,這樣會導致正常的客戶訪問失敗,儘管這個問題容易解決,但是也不能夠忽視。

限制引用頁

這種防盜鏈原理是,伺服器獲取用戶提交信息的網站地址,然後和真正的服務端的地址相比較,如果一致則表明是站內提交,或者為自己信任的站點提交,否則視為盜鏈。實現時可以使用HTTP_REFERER1 和htaccess 文件(需要啟用mod_Rewrite),結合正則表達式去匹配用戶的每一個訪問請求。對於每一個HTTP 請求, 伺服器都要查找.htaccess 文件,增加了讀取文件的次數,一定程度上降低了性能。另外,伺服器打開這個功能,有比較多的限制。

文件偽裝

文件偽裝是目前用得最多的一種反盜鏈技術,一般會結合伺服器端動態腳本(PHP/JSP/ASP)。實際上用戶請求的文件地址,只是一個經過偽裝的腳本文件,這個腳本文件會對用戶的請求作認證,一般會檢查Session,Cookie 或HTTP_REFERER 作為判斷是否為盜鏈的依據。而真實的文件實際隱藏在用戶不能夠訪問的地方,只有用戶通過驗證以後才會返回給用戶。

加密認證

這種反盜鏈方式,先從客戶端獲取用戶信息,然後根據這個信息和用戶請求的文件名字一起加密成字元串(Session ID)作為身份驗證。只有當認證成功以後,服務端才會把用戶需要的文件傳送給客戶。一般我們會把加密的Session ID 作為URL 參數的一部分傳遞給伺服器,由於這個Session ID 和用戶的信息掛鉤,所以別人就算是盜取了鏈接,該Session ID 也無法通過身份認證,從而達到反盜鏈的目的。這種方式對於分散式盜鏈非常有效。

隨機附加碼

每次,在頁面里生成一個附加碼,並存在資料庫里,和對應的圖片相關,訪問圖片時和此附加碼對比,相同則輸出圖片,否則輸出404圖片

其它方法

其它反盜鏈方式也有不少, 這裡只列出一個大概思想作為參考:⑴ IIS 反盜鏈, 利用ISAPI_Rewrite,可作為Windows下反盜鏈的一個解決方案;⑵ 圖片反盜鏈,在圖片中加入水印,雖然盜鏈者可以達到目的,但是卻也在為自己的網站做宣傳。

防盜鏈


WEB應用防火牆通過實現URL級別的訪問控制,對客戶端請求進行檢測,如果發現圖片、文件等資源信息的HTTP請求來自於其它網站,則阻止盜鏈請求,節省因盜用資源鏈接而消耗的帶寬和性能。