① 如何查詢「盜鏈」情況怎麼知道自己網站資源被多少網站利用了
為什麼會產生盜鏈
一般瀏覽有一個重要的現象就是一個完整的頁面並不是一次全部傳送到客戶端的。如果請求的是一個帶有許多圖片和其它信息的頁面,那麼最先的一個Http請求被傳送回來的是這個頁面的文本,然後通過客戶端的瀏覽器對這段文本的解釋執行,發現其中還有圖片,那麼客戶端的瀏覽器會再發送一條Http請求,當這個請求被處理後那麼這個圖片文件會被傳送到客戶端,然後瀏覽器回將圖片安放到頁面的正確位置,就這樣一個完整的頁面也許要經過發送多條Http請求才能夠被完整的顯示。基於這樣的機制,就會產生一個問題,那就是盜鏈問題:就是一個網站中如果沒有起頁面中所說的信息,例如圖片信息,那麼它完全可以將這個圖片的連接到別的網站。這樣沒有任何資源的網站利用了別的網站的資源來展示給瀏覽者,提高了自己的訪問量,而大部分瀏覽者又不會很容易地發現,這樣顯然,對於那個被利用了資源的網站是不公平的。一些不良網站為了不增加成本而擴充自己站點內容,經常盜用其他網站的鏈接。一方面損害了原網站的合法利益,另一方面又加重了伺服器的負擔。
我遇到的盜鏈
我的網站遇到最多的是兩類盜鏈,一是圖片盜鏈,二是文件盜鏈。曾經有一個訪問量極大的網站盜鏈我網站的圖片,一天竟然消耗了數G的流量。同時,我站放的不少幾十兆的大型軟體也常遭到文件盜鏈,大量消耗我站資源。
盜鏈的解決方案
其實通過WEB伺服器的URL過濾技術,這個傷腦筋的問題會很容易得到解決。
如果WEB伺服器用的是APACHE的話,那麼使用APACHE自帶的Url Rewrite功能可以很輕松地防止各種盜鏈,其原理是檢查REFER,如果REFER的信息來自其他網站則禁止訪問所需要的資源。
那麼,IIS支持UrlRewrite嗎?
答案很簡單,不支持。但是我們可以通過安裝第三方伺服器擴展讓IIS支持。
目前有一種產品能比較好地支持IIS的UrlRewrite,名字叫ISAPI_Rewrite。
下載地址在: http://www.helicontech.com/download/
這里只有ISAPI Rewrite的一個LITE版本是免費的,其它都是trial版本。ISAPI Rewrite Lite的版本功能不支持虛擬站點配置,元數據監測和自動緩存清理。 但是基本的UrlRewrite功能都支持。
如何進行UrlRewrite的設置?
isapi_rewrite利用正則表達式進行替換規則的表示。
下面是一個簡單的例子,我想讓我們的用戶輸入 http://localhost/test-12314.html 實際上訪問的是 http://localhost/test.asp?id=12314 。那麼我們的匹配表達式應該是 /test-([0-9]*).html 對應的格式化表達式應該為 /test.asp\?id=$1 。
進行正則表達式的編寫的時候,可以利用isapi_rewrite提供的正則表達式測試工具(默認安裝提供),進行調試。做好了匹配表達式和格式化表達式,我們可以把它們放到安裝目錄下的httpd.ini裡面。文件保存後,不需重新啟動iis即可生效。
對於我的網站,我防盜鏈的方法是在httpd.ini裡面加入如下語句
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteRule .*\.(?:gif|jpg|png|exe|rar|zip) /block.gif [I,O]
然後重啟IIS,這時防盜鏈就開始起作用了,其他網站盜鏈過來的請求都會被拒絕。
至此,我也終於可以擺脫了被盜鏈的煩惱了。