![](/img/trans.png)
[英]How can I get the real IP address of Client behind F5 loadbalancer with Java socket
[英]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客户端证书来建立客户端的身份。 但这需要一些注意事项:
通过代理发送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.