0

我正在使用 Glassfish 网络服务器来运行我的网站。我仍在开发该网站,我想追踪人们尝试使用该网站的位置。特别是,我希望能够阻止整个非洲和中东地区访问我的网站,以防止欺诈。我还想知道某人的位置,以便向他们展示与他们在网站上的位置相关的内容。例如,如果用户从德克萨斯州达拉斯访问该站点,他将看到德克萨斯州达拉斯的内容。

我正在使用 jsp/Java,并且更喜欢这样的解决方案。

我想这是通过以某种方式将 IP 地址跟踪到某个位置来完成的。

4

2 回答 2

0

您可以使用JavaScript 中的此 Geo API来检测用户来自哪里并使用window.load. 我认为这不是正确的方法,因为用户可以在他们的浏览器中阻止 JavaScript 执行。

另一方面,您可以使用MaxMind IP GeoLocation 数据库并使用一些业务逻辑来使用Servlet-Filter和方法检测 IP 地址ServletRequest#getRemoteAddr()

@WebFilter("/*")
public class IPFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
        throws IOException, ServletException {
        String clientIp = req.getRemoteAddr();
        if (bannedIp(clientIp) {
            response.sendRedirect(request.getContextPath() + "/bannedIp.jsp");
            return;
        }
        chain.doFilter(req, res);
    }
    private boolean bannedIp(String clientIp) {
        //add logic that detects if IP comes from a banned location...
    }
}
于 2013-06-09T04:28:49.850 回答
0

我可以给你两个链接。一种通过分析ip识别国家名称,然后阻止它的网络过滤。

  1. 从ip判断国家的方法:link
  2. 在另一个 stackoverflow 帖子中给出的 Web 过滤器类:link
于 2013-06-09T04:33:18.837 回答