feat(ipquery): 自 go-hua 迁入 IP/域名归属地查询
- 基于 ip2region xdb 全内存加载, 新增依赖 lionsoul2014/ip2region - 附测试、examples/ipquery 例程与包 README(含 xdb 获取说明)
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
// 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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user