相信码农们在项目开发过程中或多或少会有解析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文件打包到项目中,也可以映射目录访问。
解析结果如图
可以自行根据解析结果做进一步处理。
再次感谢【狮子的魂】。https://gitee.com/lionsoul