Files
4566704 b5c3c0c17c feat(ipquery): 自 go-hua 迁入 IP/域名归属地查询
- 基于 ip2region xdb 全内存加载, 新增依赖 lionsoul2014/ip2region
- 附测试、examples/ipquery 例程与包 README(含 xdb 获取说明)
2026-09-20 12:29:37 +08:00

48 lines
1.2 KiB
Go

// ipquery 包示例:基于 ip2region xdb 的 IP/域名归属地查询
// 运行: go run . <ip2region.xdb 路径> [IP或域名]
package main
import (
"fmt"
"os"
"git.zeroonesoft.cn/golib/zogo/ipquery"
)
func main() {
if len(os.Args) < 2 {
fmt.Println("用法: ipquery <ip2region.xdb文件路径> [IP或域名]")
fmt.Println("xdb 下载: https://github.com/lionsoul2014/ip2region")
return
}
dbPath := os.Args[1]
// 加载整个 xdb 到内存(进程内只需执行一次,之后可并发查询)
if err := ipquery.LoadIp(dbPath); err != nil {
fmt.Println("加载失败:", err)
return
}
ip := "114.114.114.114"
if len(os.Args) > 2 {
ip = os.Args[2]
}
// 查询详情
data, err := ipquery.Query(ip)
if err != nil {
fmt.Println("查询失败:", err)
return
}
fmt.Printf("IP: %s 国家: %s 区域: %s 省份: %s 城市: %s 运营商: %s\n",
data.Ip, data.Country, data.Area, data.Province, data.City, data.Isp)
// 查询简述(中国 IP 返回“省份城市 运营商”,国外返回“国家省份 运营商”)
fmt.Println("简述:", ipquery.QueryString(ip))
// IP 字符串转 uint32
if num, err := ipquery.StringToUint32("192.168.1.1"); err == nil {
fmt.Printf("192.168.1.1 -> %d\n", num)
}
}