查询 MMDB 数据库

Undefined443 / 2024-02-19 / 原文

import java.io.File;
import java.net.InetAddress;

import com.fasterxml.jackson.databind.JsonNode;
import com.maxmind.db.Reader;

public class IpDemo {
    public static void main(String[] args) throws Exception {
        File database = new File("resources/Country.mmdb");
        Reader reader = new Reader(database);
        // 查询
        InetAddress address = InetAddress.getByName("114.114.114.114");
        JsonNode response = reader.get(address);
        System.out.println(response);
        reader.close();
    }
}

需要引入 Maxmind DBJackson Databind

pom.xml:

<project>
	<!-- .. -->

	<properties>
		<!-- .. -->

		<maxmind.version>1.2.2</maxmind.version>
		<jackson.version>2.16.1</jackson.version>

	</properties>

	<dependencies>
		<!-- .. -->

		<dependency>
			<groupId>com.maxmind.db</groupId>
			<artifactId>maxmind-db</artifactId>
			<version>${maxmind.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>

	</dependencies>
</project>

运行结果样例:

{"country":{"is_in_european_union":false,"names":{"de":"China","ru":"Китай","pt-BR":"China","ja":"中国","en":"China","fr":"Chine","zh-CN":"中国","es":"China"},"iso_code":"CN","geoname_id":1814991}}

参考:

MMDB ip 地址库操作 | CSDN

GeoIP2 and GeoLite2 Database Documentation | MaxMind Developers