栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

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

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

创作不易感谢支持。
一条主写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; %sn", detail.IP, detail.Start, detail.End, detail)

	detail2 := loc.Find("8.8.3.1")
	fmt.Printf("%t %tn", 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
内蒙古锡林郭勒盟苏尼特右旗 联通
中国 内蒙古 锡林郭勒盟 苏尼特右旗
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/903759.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号