2014-10-18 75 views
1

是否有可能在Java中檢查給定的IP與端口是代理服務器?Java:檢查給定的IP和端口是代理服務器

我可以檢查給定的端口是否使用套接字打開。

Socket socket = new Socket(); 
socket.connect(new InetSocketAddress(ip, port), 5000); 

如何檢查它是否是代理服務器?

回答

0

沒有直接的方法來檢測IP地址是否在代理之後,因爲代理可以選擇是否發送X-Forwarded-For報頭(包含發起IP)。

一個代理不會發送這個頭文件,或者在日誌中記錄始發IP,被稱爲「匿名」代理。在您提到的情況下,您使用的代理可能會將此標頭轉發給您正在訪問的端點,因此您的連接未經匿名處理。

有多種方式可以檢測您的流量是否是代理來源。兩個簡單的是:

  • (在轉發 頁眉或自定義數據)的X-Forwarded-For頭的存在
  • 交叉檢查代理或出口繼電器(TOR)的已知IP地址

還有其他方式,可能需要更多的服務器智能,可能需要關聯來自不同IP的連接請求,例如查看用戶代理標準和請求時間,cookies,閃存中的LSOs(您希望cookie和Flash的原因之一)玩家禁用以真正匿名你自己)。

+0

謝謝,但我問ip是代理服務器,而不是ip是否在代理服務器後面。 – bizon 2014-10-18 14:27:16

0

唯一的方法是連接到IP /端口,向它發送代理請求,並查看它是否回覆代理響應。這是因爲像SOCKS和HTTP之類的代理協議(通過動詞CONNECT)不提供服務器端問候以使代理能夠自己進行身份驗證,客戶端會使用這些協議發送第一個數據包。

相關問題