簡體   English   中英

在Java中,當我在代理后面時,網站如何找到我的真實IP地址?

[英]In Java, how can a website find my real IP address while I'm behind a proxy?

我的程序將使用(http)代理發送http請求。 並且代理地址是程序已知的。 但是該程序還希望在代理之后獲取當前IP地址。 檢索該內容的最佳方法是什么?

唯一的方法是讓程序將其IP地址顯式發送到請求URL,自定義請求標頭或請求正文中編碼的服務器。

如果代理處於您的控制之下,則可以對其進行配置,以將客戶端的IP地址添加到請求中。 (它可能已經這樣做;例如,“ x-forwarded-for”)


另一個問題(通常)是您機器的IP地址很可能是私有IP地址。 不能保證服務器可以訪問該IP。 或者,如果服務器使用它來標識客戶端,則不能保證IP的唯一性或可靠性。 例如不以某種方式欺騙。


不過,還有一種選擇。 如果正確配置服務器和客戶端,則服務器可以依靠SSL客戶端證書來建立客戶端的身份。 但這需要一些注意事項:

  • 用戶的防火牆必須允許HTTPS連接。
  • 客戶端應用程序(或用戶的瀏覽器)必須在其密鑰庫中具有客戶端證書。
  • 服務器必須能夠信任客戶端證書並知道其建立的身份(一個人或一台機器?)
  • 建立HTTPS連接時,客戶端應用程序必須知道要發送證書。

通過代理發送SSL / TLS時也存在安全問題。 如果不能信任代理,則有可能發生“中間人”攻擊。

總而言之,這是一種“困難”的方法。

您可以查詢我的IP地址是什么? ,或任何其他可以告訴您的網站(例如google,我的IP地址是什么)。

像這樣

String ipAddress = request.getHeader("X-FORWARDED-FOR");
if (ipAddress == null) {
    ipAddress = request.getRemoteAddr();
}
System.out.println("ipAddress:" + ipAddress);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM