日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MMDB ip地址库操作

發布時間:2024/1/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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地址库操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。