在Java中,当我在代理后面时,网站如何找到我的真实IP地址?

时间:2013-11-16 01:52:44

标签: java proxy ip

我的程序将使用(http)代理发送http请求。代理地址是程序已知的。但该程序还希望在代理后面获取当前的IP地址。检索它的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

您可以这样做的唯一方法是让您的程序显式将其IP地址发送到请求URL,自定义请求标头或请求正文中编码的服务器。

如果代理由您控制,您可以将其配置为将客户端的IP地址添加到请求中。 (它可能已经这样做了;例如“x-forwarded-for”)


另一个问题(一般情况下)是您的计算机的IP地址可能是私有IP地址。无法保证服务器可以寻址IP。或者,如果服务器使用它来识别客户端,则无法保证IP将是唯一的......或可靠的;例如没有以某种方式欺骗。


但有一种选择。如果正确配置服务器和客户端,则服务器可以依赖SSL客户端证书来建立客户端的身份。但这需要一些东西:

  • 用户的防火墙必须允许HTTPS连接。
  • 客户端应用程序(或用户的浏览器)必须在其密钥库中具有客户端证书。
  • 服务器必须能够信任客户端证书并知道它建立的身份(一个人?一台机器?)
  • 客户端应用程序必须知道在建立HTTPS连接时发送证书。

通过代理发送SSL / TLS也存在安全问题。如果不能信任代理,则存在“中间人”攻击的可能性。

总而言之,这是一种“困难”的方法。

答案 1 :(得分:1)

您可以查询What is my ip address?或任何其他可以告诉您的网站(例如google什么是我的IP地址)。

答案 2 :(得分:0)

喜欢这个

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