0
点赞
收藏
分享

微信扫一扫

#干货分享!!!-如何优雅的解析IP地址得到物理地址

相信码农们在项目开发过程中或多或少会有解析IP地址的需求,常用的例如使用ip138在线解析或其他第三方在线解析,但都会有各种各样的限制。

现在,提供一个可离线解析的方案,可以灵活的集成到项目中。

在此要感谢大佬的分享,ip2region,https://gitee.com/lionsoul/ip2region

有各种开发语言的版本。

下面贴出本人在java项目中的解析代码

public static String getRealAddressByIp2region(String ip) {
    // 内网不查询
    if (IpUtils.internalIp(ip)) {
        return "内网IP";
    }
    if (HiPiConfig.isAddressEnabled()) {
        try {
            String dbPath = "/home/was/uploadPath/ip2region.xdb";
            Searcher searcher = Searcher.newWithFileOnly(dbPath);

            String region = searcher.search(ip);
            String[] regionArray = region.split("\\|");
            String address = "";
            if(regionArray[2] != null && regionArray[3] != null) {
                address = regionArray[2] + regionArray[3];
            }

            System.out.println(address);
            return address;
        } catch (Exception e) {
            e.printStackTrace();
            log.error("获取地理位置异常 {}", ip);
        }
    }
    return UNKNOWN;
}

需要注意的是,需要依赖一个ip2region.xdb文件,在大佬的github中能获取,也可私我获取。

部署到服务器上时,可以直接将xdb文件打包到项目中,也可以映射目录访问。

解析结果如图

#干货分享!!!-如何优雅的解析IP地址得到物理地址_IP

可以自行根据解析结果做进一步处理。

再次感谢【狮子的魂】。https://gitee.com/lionsoul

举报

相关推荐

0 条评论