文章目录
前言
能说算不上什么,有本事就把你的代码给我看看。—— Linus Torvalds,Linux 之父
一、什么是IP离线纯真数据库
今年上半年俄乌战争爆发,为了控制平台舆论,类似于抖音,微博等国内众多平台纷纷响应国家号召,开始进行IP的归属地显示。
这种可以通过IP地址来剥取到地理位置的做法目前实现起来主要有两种方式。
- 使用第三方API接口,比如目前国内的搜狐接口,淘宝接口,这种方式好处是,无需资源本地化,靠接口即可完成数据的取得,但是弊端也很明显,请求时效性,速度因人而异。
- 使用离线数据库,所谓的离线就是把IP库放到本地进行存储,然后通过自身的程序代码进行IP解析,相对更安全,快速。但是弊端就是IP地址不是长久不变的,IP是分配给给个运营商的,这个更新的频率可想而知,所以离线库就要考虑到数据的更新问题。
目前主流的离线库主要要三种:
二、GeoIP2
1.引入库
<dependency>
<groupId>com.maxmind.geoip2</groupId>
<artifactId>geoip2</artifactId>
<version>3.0.1</version>
</dependency>
2. 代码实装
2.1 数据获取
根据官网提示下载数据:链接: 官网
数据有两种形式:
1.MMDB结尾的二进制内置数据库
2.CSV结尾的可提供导入本地MySql数据的数据
2.2 数据位置
推荐放在resources 目录下

2.3 编写测试类
//GeoIP2-City 数据库文件
// 获取resources文件夹下的GeoIP2-City.mmdb文件 ,要获取绝对路径文件
File database = new File(Thread.currentThread().getContextClassLoader().getResource("GeoLite2-City.mmdb").getPath());
// 创建 DatabaseReader对象
DatabaseReader reader = new DatabaseReader.Builder(database).build();
InetAddress ipAddress = InetAddress.getByName("128.101.101.101")

最低0.47元/天 解锁文章
2934

被折叠的 条评论
为什么被折叠?



