feat(ipquery): 自 go-hua 迁入 IP/域名归属地查询
- 基于 ip2region xdb 全内存加载, 新增依赖 lionsoul2014/ip2region - 附测试、examples/ipquery 例程与包 README(含 xdb 获取说明)
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
# ipquery
|
||||
|
||||
基于 [ip2region](https://github.com/lionsoul2014/ip2region) xdb 数据文件的
|
||||
IP/域名归属地查询:整个 xdb 加载进内存,进程内只加载一次后可并发查询。
|
||||
|
||||
> 迁移自 go-hua/ipquery,代码保持原样。
|
||||
|
||||
## 用法
|
||||
|
||||
```go
|
||||
import "git.zeroonesoft.cn/golib/zogo/ipquery"
|
||||
|
||||
// 加载 xdb(进程内一次即可)
|
||||
if err := ipquery.LoadIp("D:/data/ip2region.xdb"); err != nil { ... }
|
||||
|
||||
// 字符串结果("国家|区域|省份|城市|ISP")
|
||||
fmt.Println(ipquery.QueryString("114.114.114.114"))
|
||||
|
||||
// 结构化结果(Query 支持域名,内部先解析)
|
||||
d, err := ipquery.Query("www.baidu.com")
|
||||
|
||||
// 工具函数
|
||||
ipquery.StringToUint32("114.114.114.114") // uint32
|
||||
ipquery.RegexpDns("www.example.com") // 域名格式校验
|
||||
```
|
||||
|
||||
完整可运行例程:[examples/ipquery/main.go](../examples/ipquery/main.go)
|
||||
(`go run . <xdb路径> [IP或域名]`,xdb 从 ip2region 项目下载)
|
||||
|
||||
## 注意
|
||||
|
||||
- **必须先 `LoadIp`**,未加载直接 Query 会失败。
|
||||
- 全内存加载(xdb 数十 MB 起),内存敏感场景注意;数据文件需自行定期更新。
|
||||
Reference in New Issue
Block a user