我的程序将使用(http)代理发送http请求。代理地址是程序已知的。但该程序还希望在代理后面获取当前的IP地址。检索它的最佳方法是什么?
答案 0 :(得分:3)
您可以这样做的唯一方法是让您的程序显式将其IP地址发送到请求URL,自定义请求标头或请求正文中编码的服务器。
如果代理由您控制,您可以将其配置为将客户端的IP地址添加到请求中。 (它可能已经这样做了;例如“x-forwarded-for”)
另一个问题(一般情况下)是您的计算机的IP地址可能是私有IP地址。无法保证服务器可以寻址IP。或者,如果服务器使用它来识别客户端,则无法保证IP将是唯一的......或可靠的;例如没有以某种方式欺骗。
但有一种选择。如果正确配置服务器和客户端,则服务器可以依赖SSL客户端证书来建立客户端的身份。但这需要一些东西:
通过代理发送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);