创作不易感谢支持。
一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。 个人博客:太阳上的雨天 地址:blog.caixiaoxin.cn 善于分享,希望有助他人. 非常感谢各位大佬的关注和支持
使用纯真IP库 qqwry.dat
,高性能,线程安全,并对国内数据格式化到省、市、县
使用大佬写的一个包iploc包
go get -u github.com/kayon/iploc/…
命令会下载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
内蒙古锡林郭勒盟苏尼特右旗 联通
中国 内蒙古 锡林郭勒盟 苏尼特右旗