Java/JSP中的代理检测

Java/JSP中的代理检测,java,jsp,proxy,Java,Jsp,Proxy,我正在使用Java开发一个项目,在这个项目中,IP地址将是客户机/用户的身份。所以我面临一个问题:用户可以欺骗他们的主机身份,这可能导致用户的虚假身份。那么,有人知道如何检测主机是否使用代理吗 InetAddress thisIp = InetAddress.getLocalHost(); 我正在使用上述代码检测主机IP地址。您无法100%可靠地检查此地址,但要覆盖大多数代理,您可以检查是否存在X-Forwarded-For请求标头 if (request.getHeader("X-Forwa

我正在使用Java开发一个项目,在这个项目中,IP地址将是客户机/用户的身份。所以我面临一个问题:用户可以欺骗他们的主机身份,这可能导致用户的虚假身份。那么,有人知道如何检测主机是否使用代理吗

InetAddress thisIp = InetAddress.getLocalHost();

我正在使用上述代码检测主机IP地址。

您无法100%可靠地检查此地址,但要覆盖大多数代理,您可以检查是否存在
X-Forwarded-For
请求标头

if (request.getHeader("X-Forwarded-For") != null) {
    // Client is likely using a proxy.
}
这方面没有标准。每个代理都可能有自己特定的附加/自定义头集。您可以记录检索到的请求头,检查哪些头是由某些代理设置的,然后相应地修改代码。同样,您无法可靠地检查这一点。有些代理甚至可能根本没有额外的头。您需要维护一个“已知”代理的IP地址列表,以便可以对照它检查
getRemoteAddr()



与具体问题无关,正如您标记的那样,我只想补充一点,在JSP中编写Java代码是一种糟糕的做法。您通常会在普通Java类(如a或a)中执行此操作。

代理IP地址和Java库有一个公共黑名单。