MMDB ip地址库操作
MMDB ip地址库操作
@(JAVA)[java]
MMDB即Maxmind DB,是一个设计用于存储IPv4和IPv6的数据信息的数据库,mmdb文件是一个二进制格式的文件,它使用一个二分查找树加速IP信息的查询。
1、数据格式说明
{continent => { //大洲code => string, //大洲代码,如AS,可能为空names => { //大洲名称en => string, //大洲英文名称,如Asia,可能为空zh_CN => string, //大洲中文名称,如亚洲,可能为空},},country => { //国家iso_code => string, //国家iso代码,如CN,可能为空names => { //国家名称en => string, //国家英文名称,如China,可能为空zh_CN => string, //国家中文名称,如中国,可能为空},},subdivisions => { //省份iso_code => string, //省iso代码省ISO代码,如44,可能为空names => { //省份名称en => string, //省份英文名称,如Guangdong,可能为空zh_CN => string, //省份中文名称,如广东,可能为空},},city => { //城市id => int, //城市id,如440000,可能为空names => { //城市名称en => string, //城市英文名称,如Guangzhou,可能为空zh_CN => string, //城市中文名称,如广州,可能为空},},location => { //地理位置latitude => double, //纬度,可能为空longitude => double, //经度,可能为空time_zone => string, //时区,可能为空},isp => { //运营商id => int, //运营商id,可能为空names => { //运营商名称zh_CN => string, //运营商中文名称,如电信,可能为空},
}
其中:
* 国家ISO代码可以参考维基百科ISO_3166-2。
* 省ISO代码,国内的省ISO代码均为该省公民身份证号的前两位。国外的省ISO代码可能存在为英文的情况,不一定全是数字。具体可以参考维基百科ISO_3166-2。
* 城市id,只有中国IP存在城市id(包含港澳台),该城市id为该城市公民身份证号的前6位。具体可以参考国家统计局网站。
* 运营商id,只有中国大陆的IP存在运营商字段,现有id规则如下:电信10000,联通10010,移动10086,铁通10050,教育网985211,鹏博士600804,华数96171,方正网络9990,歌华网络96196,阿里云1688,其他(包括国内未知)1,国外ip的运营商id为空。
* 运营商名称,中文,如电信,可能为空,只有中国大陆的IP才可能存在运营商字段,中国大陆的IP也可能存在未知运营商的情况,此时运营商字段也为空。
* 使用程序语言解析mmdb的数据可能返回数组、字典或哈希表数据(视编程语言而定)。
2、java读取mmdb文件
可以使用maxmind-db库。在pom.xml中添加以下内容:
<dependency><groupId>com.maxmind.db</groupId><artifactId>maxmind-db</artifactId><version>1.2.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.7.0</version></dependency>
代码如下:
public class IpDemo {public static void main(String[] args) throws Exception {File database = new File("resources/ip.mmdb");Reader reader = new Reader(database);InetAddress address = InetAddress.getByName("24.24.24.24");JsonNode response = reader.get(address);System.out.println(response);reader.close();}
}
其中ip.mmdb放在resources目录下,这相目录是src folder。输出如下:
{"location":{"time_zone":"America/New_York","longitude":-76.1474,"latitude":43.0481},"isp":{"id":0,"names":{"zh_CN":""}},"continent":{"names":{"zh_CN":"北美洲","en":"North America"},"code":"NA"},"subdivisions":{"names":{"zh_CN":"纽约州","en":"New York"},"iso_code":"NY"},"country":{"names":{"zh_CN":"美国","en":"United States"},"iso_code":"US"},"city":{"id":0,"names":{"zh_CN":"锡拉丘兹","en":"Syracuse"}}}
MMDB ip地址库操作相关推荐
- IP问问区县级别IP地址库---使用帮助(上篇)
应广大IP地址库爱好者的要求,埃文科技将IP问问区县级IP地址库的使用帮助发布,供大家在使用过程中参考. 1.IP问问区县级IP库介绍 大家在埃文商城(https://mall.ipplus360.c ...
- ThinkPHP中IP地址定位,包括IP地址库文件
前几天,研究了一下TP中IP地址定位,着实费了一些时间,现在解决了,分享给大家. IP地址库有点大,去这里下载http://download.csdn.net/detail/man_quan/4636 ...
- java ip地址相关操作
java ip地址相关操作 @(JAVA)[scala] 参考CORE JAVA. 在JAVA中,InetAddress类用于操作与IP地址相关的内容,常用方法如下: java.net.InetAdd ...
- 站长工具--IP地址库
中国最全的IP地址库 转载于:https://www.cnblogs.com/weloveshare/p/5783438.html
- spring boot 整合 ip2region(ip地址库)
Ip2region是什么? ip2region - 准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,ip2region.db数据库只有数MB,提供了java,php,c,python,nod ...
- IP地址库介绍 (转)
IP地址库介绍 摘要 在CDN系统中,IP地址库在流量调度.网络服务质量监测等方面起到重要的作用,本文主要介绍了IP地址库的功能.内容以及IP地址库的生成和评价方法 什么是IP地址库? 所谓IP地址库 ...
- 分享淘宝的IP地址库查询接口
以前用过腾讯和新浪的IP地址库查询接口,由于不能直接传递IP数据,所以只能从前端用JS获取用户地址信息.也用过纯真的IP数据库,为了保持数据准确,所以就得不断的更新这个数据库,稍微麻烦一些,这次分享一 ...
- 如何在庞大的ip地址库中快速定位到对应的ip地址所对应的归属地?
通过ip地址查看 ip地址的归属地,这个功能实现起来并不复杂,它是通过维护一个很大的ip地址库来实现的,比如查找 202..133.3 该ip地址库,那便会在对应的ip地址库中找到 一个区间 如 [2 ...
- 通过ip地址访问操作远程Mysql数据库
通过ip地址访问操作远程Mysql数据库(数据库学习笔记 (三)) 可能使用的工具· 问题描述 远程数据库配置 本地连接 可能使用的工具· Navicat Premium XXX版本 各类数据库(仅以 ...
最新文章
- php正则表达式函数 preg_replace用法
- Hadoop对Spark:正面比拼报告(架构、性能、成本、安全性和机器学习)
- 推荐安装的chrome插件
- 1185 威佐夫游戏 V2
- 一行代码引来的安全漏洞,就让我们丢失了整个服务器的控制权
- 为系统扩展而采取的一些措施——异步
- 【Flink】Flink CDH6.3.2 下的yarn per job模式 savepoint和checkpoint,卡住,没有保存成功文件
- python机器学习案例系列教程——关联分析(Apriori、FP-growth)
- 踢向《英雄王座》的面目全非脚
- 盘点:12个超炫数据可视化工具
- 零基础安卓手游辅助开发入门视频教程
- 数商云:疫情之下钢铁行业的数字化转型之道
- CF120F Spiders 题解
- winrar破解注册
- 详解 Java 日期与时间
- 思途旅游CMS短信宝短信插件
- mos中Port-Specific的意思
- Linux多功能下载机(Arias2)
- 云呐|加强实验室固定资产设备在线信息化管理
- 3.24 使用海绵工具制作变异的白虎 [原创Ps教程]
热门文章
- 14行代码满分:1037 在霍格沃茨找零钱 (20分)
- method=post和method=get的区别是啥【汇总】
- 【超全解析】原码、反码、补码、移码的相互转化和解读(取值范围)
- 蓝桥杯 试题 基础练习 芯片测试——12行代码AC
- 浅谈万进制算法与大数定理的结合(高精度乘除法,阶乘)
- Mysql数据库(四)——mysql索引相关知识
- minigui linux 安装与运行
- java查询类提供的方法_查询一个类的方法和构建器的JAVA程序
- python类定义中、对象字符串的特殊方法是_python中自定义类对象json字符串化的方法_python json转字符串、...
- css中float详解,CSS浮动属性Float详解?史上最全Float详解