2012-09-29 31 views
0

我有一個網站的圖像,他們的鏈接通常在其他網站上。我怎麼能理解我是否可以刪除一張圖片?就像檢查鏈接的位置,或者是否有人從其他網站看到圖像一樣。如何檢查我的網站上的盜鏈

我希望你能理解我的問題。

感謝

+0

根據您用於提供圖像的網絡服務器,它們將記錄每個訪問。這並不完美,但在大多數情況下,記錄引用者(http://en.wikipedia.org/wiki/HTTP_referer)會告訴你。 – Prinzhorn

回答

3

要檢查盜鏈你需要有HTTP查詢的HTTP_REFERER值那要求你的形象。這不是一種可靠的方式,因爲有幾個原因可能導致它根本沒有被填充,即使在熱鏈接請求(「個人防火牆」解決方案,代理等等)中也是如此。

你最好的選擇將是包括在日誌中引用者,其中經常使用,那麼請參閱「組合日誌格式」

http://httpd.apache.org/docs/2.2/logs.html 

,然後分析用合適的工具日誌的Apache的情況下(如AWSTATS)。

檢查熱鏈接,你可以檢查ErrorLog;如果有人不再發現圖像,則會在日誌中留下痕跡。

如果有日誌(或配置)不上網,但你有機會獲得.htaccess,你可以使用mod_rewrite

您可以通過內部重定向做到這一點(用戶不會看到任何)等環節的

http://www.yoursite.com/images/myimage.jpg 

到服務器端腳本如

http://www.yoursite.com/images/index.php?image=myimage.jpg 

現在用戶認爲他仍然要求myimage ,但他實際上正在調用腳本。該腳本可能會將上次訪問時間存儲在數據庫中,或者注意圖像正在使用的其他方式:例如,在PHP中,可以使用函數touch()來更新文件修改時間。在這一點上,您可以輕鬆找出哪些文件最近被訪問過,哪些不是。

所有這些方法都很容易出錯(例如,某人可能會盜鏈並通過代理訪問您的圖片)代理的保留時間很長,即使它是明智的也不會檢查上游。 ,什麼都沒有發生 - 直到一週後代理同步,並且你最終看到一個訪問;以及一個失敗的代理),但這是你能做的最好的。

+0

非常感謝您的詳盡答案!我已經這樣做了,但我不明白如何執行我的PHP文件後重定向/顯示圖像。 Header()似乎會導致無限循環... – Yuri

+1

不,您必須直接提供圖像:'Header('content-type:image/jpeg'); ReadFile的(path_to_real_image);出口();'。爲了緩存友好性和帶寬,您還應該發送Content-Length,Last-Modified和ETag頭,並且可能會處理If-Modified-Since和If-None-Match請求。 – LSerni

1

如果圖像是不是從任何地方,或者如果發生沒有人訪問它鏈接到你永遠無法確定。可能有一個頁面會鏈接圖片,但沒有獲得任何流量。

檢查您的Web服務器訪問日誌會告訴您是否正在使用圖像以及使用頻率; setting up referer logs將幫助您確定其中使用圖像。有了這些數據,你可以從更好的角度考慮你的下一步行動。

+0

非常感謝您的回答!但是,如果我沒有訪問我的虛擬主機配置呢? – Yuri

+0

'.htaccess'可以提供類似的功能。 – 2012-09-30 18:58:18