2016-07-16 90 views
0

我正在上傳圖片到公共目錄,我想阻止用戶使用wget下載整個圖片。有沒有辦法做到這一點?如何拒絕wget?

據我所見,必須有。我發現了許多網站,作爲一個公共瀏覽器,我可以下載一張圖片,但是一旦我運行wget,他們就會得到403(禁止)。我嘗試過使用無機器人的參數,但我仍然無法下載它們。 (出於安全原因,我不會在這裏命名這些網站)。

+0

如果你在nginx上,如果我沒有弄錯,你可以限制對文件夾的訪問。在apache上,這可能有所幫助:https://httpd.apache.org/docs/trunk/mod/mod_ratelimit.html - 另一種選擇是編寫重寫規則並阻止直接訪問和控制訪問與PHP會話和IP地址,但這可能是一個長鏡頭。 – Nitin

回答

2

您可以使用用戶代理字符串來限制訪問,例如參見apache 2.4 mod_authz_core。 默認情況下,Wget也尊重robots.txt指令。這應該會改變任何偶然的用戶。

但是,仔細查看wget手冊將讓我們繞過這些限制。 Wget還允許在請求之間添加隨機延遲,因此即使是基於訪問模式分析的高級技術也可能被忽略。

所以正確的方法是弄亂wget鏈接/引用識別引擎。也就是說,您想保留未鏡像的內容應該使用javascript動態加載,並且必須以需要js代碼解碼的方式對url進行編碼。這將保護您的內容,但需要手動提供您想爲網站索引的網絡機器人的未混淆版本,例如谷歌機器人(並且不是,它不是唯一應該關心的人)。另外,有些人默認不運行js腳本(深奧的瀏覽器,低端機器,移動設備可能會要求這樣的策略)。