有一個Java應用程序請求一個頁面,我想阻止它。如何從Web應用程序阻止特定的客戶端?
我認爲這樣做的一種方式是使用會話或cookie,但我不確定Java URL方法是否可以處理它們。
除了使用會話或cookie之外,是否還有另一種方法可以區分來自此Java應用程序的請求並阻止它?我知道它有一個獨特的Java用戶代理標題,但我希望更準確。
有一個Java應用程序請求一個頁面,我想阻止它。如何從Web應用程序阻止特定的客戶端?
我認爲這樣做的一種方式是使用會話或cookie,但我不確定Java URL方法是否可以處理它們。
除了使用會話或cookie之外,是否還有另一種方法可以區分來自此Java應用程序的請求並阻止它?我知道它有一個獨特的Java用戶代理標題,但我希望更準確。
標題問題的答案是URL.openXxx
方法不理解Cookie。
(如果您的服務器配置爲接受請求URL本身的會話令牌,該URL.openXxx
方法不會礙事。但是,這種做法是不安全的。)
然後我們來的身體你的問題。
......除了使用會話或cookie之外,還有另一種方法可以區分來自此Java應用程序的請求並阻止它?
在這一點上,我假設你正在討論阻塞服務器端的請求。我應該指出,「壞人」客戶端用來發送請求的現在是immaterial。 (它可以使用URL
或Apache HTTPComponents,或者它可以在彙編代碼中實現HTTP協議棧!)
所以真正的問題是你有什麼選擇來阻止不需要的請求。答案是:
總之,cookie是最好的解決方案,所以「好人」客戶端應用程序需要使用能夠進行cookie管理並在請求中設置cookie的庫。
URL只是您嘗試與之交談的服務器的代表。它有一些方便的方法來打開連接等等,但就是這樣。
會話以兩種方式之一處理:cookie或url重寫。這些與URL類很少或根本沒有關係(除了後者中的會話ID被放置在URL中)。
用戶代理似乎是你最好的選擇,缺少一些密碼(http basic,digest等等)或ssl證書驗證。也就是說,用戶代理完全由客戶端自行決定,客戶端可以很容易地更改其模擬其他瀏覽器。
URL()與會話或cookie有什麼關係? – 2012-08-01 02:14:12
所以你說Java應用程序正在訪問你的網站,你想阻止它? – 2012-08-01 02:15:18
是的。那麼,我想跟蹤它所提出的要求。我將通過發送404頭來完成。由於真正的客戶端(mozilla,chrome等)永遠不會404,我會知道哪個是java bot,哪個不是。 – SHH 2012-08-01 02:20:25