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

作者: 太阳上的雨天 分类: Go 发布时间: 2022-03-22 15:15

使用纯真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
内蒙古锡林郭勒盟苏尼特右旗 联通
中国 内蒙古 锡林郭勒盟 苏尼特右旗

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注