IPIP.net 官方支持的 IP 数据库 ipdb 格式解析库
go get github.com/soulteary/ipdb-go
package main
import (
"fmt"
"log"
"github.com/soulteary/ipdb-go"
)
func main() {
// 创建城市数据库实例
db, err := ipdb.NewCity("/path/to/city.ipv4.ipdb")
if err != nil {
log.Fatal(err)
}
// 支持热更新,更新 ipdb 文件后调用 Reload 方法
db.Reload("/path/to/city.ipv4.ipdb")
// 数据库元信息查询
fmt.Println(db.IsIPv4()) // 检查是否支持 IPv4
fmt.Println(db.IsIPv6()) // 检查是否支持 IPv6
fmt.Println(db.BuildTime()) // 数据库构建时间
fmt.Println(db.Languages()) // 支持的语言列表
fmt.Println(db.Fields()) // 支持的字段列表
// IP 查询示例
fmt.Println(db.FindInfo("2001:250:200::", "CN")) // 返回 CityInfo 结构体
fmt.Println(db.Find("1.1.1.1", "CN")) // 返回字符串数组
fmt.Println(db.FindMap("118.28.8.8", "CN")) // 返回字符串映射
fmt.Println(db.FindInfo("127.0.0.1", "CN")) // 返回 CityInfo 结构体
}
字段名 | 说明 |
---|---|
country_name | 国家名称 |
region_name | 省份名称 |
city_name | 城市名称 |
owner_domain | 所有者 |
isp_domain | 运营商 |
latitude | 纬度 |
longitude | 经度 |
timezone | 时区 |
utc_offset | UTC 时区 |
china_admin_code | 中国行政区划代码 |
idd_code | 国家电话号码前缀 |
country_code | 国家二位代码 |
continent_code | 大洲代码 |
idc | IDC / VPN |
base_station | 基站 / WIFI |
country_code3 | 国家三位代码 |
european_union | 是否为欧盟成员国(1:是 0:否) |
currency_code | 当前国家货币代码 |
currency_name | 当前国家货币名称 |
anycast | ANYCAST |
FindInfo(ip, language)
: 返回结构化的 CityInfo 对象Find(ip, language)
: 返回字符串数组FindMap(ip, language)
: 返回字符串映射
- 支持 IPv4 和 IPv6 地址
- 支持多语言查询
- 数据库文件支持热更新
- 所有查询方法都是线程安全的
该项目采用 MIT 许可证