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地址库操作的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 使用ResourceBundle加载pr
- 下一篇: Java Calendar使用指南
