当前位置: 首页 > 工具软件 > go-qqwry > 使用案例 >

Go 使用IP纯真库获取IP对应的国家、省、市

訾高明
2023-12-01

创作不易感谢支持。
一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。 个人博客:太阳上的雨天 地址:blog.caixiaoxin.cn 善于分享,希望有助他人. 非常感谢各位大佬的关注和支持

使用纯真IP库 qqwry.dat,高性能,线程安全,并对国内数据格式化到省、市、县

使用大佬写的一个包iploc包

安装

go get -u github.com/kayon/iploc/…

获取query.dat

命令会下载qqwry.gbk.dat 文件到当前目录

iploc-fetch qqwry.gbk.dat

转换为 UTF-8

使用命令行工具 iploc-conv将刚刚下载的 qqwry.gbk.dat 转换为 UTF-8 保存为 qqwry.dat

iploc-conv -s qqwry.gbk.dat -d qqwry.dat

使用

package main

import (
	"fmt"

	"github.com/kayon/iploc"
)

func main() {

	loc, err := iploc.Open("qqwry.dat")
	if err != nil {
		panic(err)
	}
	detail := loc.Find("8.8.8") // 补全为8.8.0.8, 参考 ping 工具
	fmt.Printf("IP:%s; 网段:%s - %s; %s\n", detail.IP, detail.Start, detail.End, detail)

	detail2 := loc.Find("8.8.3.1")
	fmt.Printf("%t %t\n", detail.In(detail2.IP.String()), detail.String() == detail2.String())

	detail = loc.Find("1.24.41.0")
	fmt.Println(detail.String())
	fmt.Println(detail.Country, detail.Province, detail.City, detail.County)

}

结果:

IP:8.8.0.8; 网段:8.7.245.0 - 8.8.3.255; 美国 科罗拉多州布隆菲尔德市Level 3通信股份有限公司
true true
内蒙古锡林郭勒盟苏尼特右旗 联通
中国 内蒙古 锡林郭勒盟 苏尼特右旗
 类似资料: