Golang IP2Location.io IP地理定位SDK使用指南
Golang IP2Location.io IP地理定位SDK使用指南 GitHub 链接:https://github.com/ip2location/ip2location-io-go
我们很高兴地宣布 IP2Location.io Go SDK 正式发布。该 SDK 允许用户基于 IP 地址查询丰富的数据集,并提供 WHOIS 查询 API,帮助用户获取域名信息。
它提供了基于 IP 地址的地理位置信息,包括国家、地区、行政区、城市、经纬度、邮政编码、时区、ASN、ISP、域名、网络速度、国际长途区号、国内区号、气象站数据、MNC、MCC、移动设备品牌、海拔、使用类型、地址类型、广告类别以及代理数据。
更多关于Golang IP2Location.io IP地理定位SDK使用指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于Golang IP2Location.io IP地理定位SDK使用指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
以下是使用IP2Location.io Go SDK进行IP地理定位的示例代码:
package main
import (
"fmt"
"log"
"github.com/ip2location/ip2location-io-go"
)
func main() {
// 初始化客户端
config := ip2locationio.Configuration{
ApiKey: "YOUR_API_KEY", // 替换为您的API密钥
}
client, err := ip2locationio.Open(config)
if err != nil {
log.Fatal(err)
}
defer client.Close()
// 查询IP地址信息
ip := "8.8.8.8"
result, err := client.Lookup(ip)
if err != nil {
log.Fatal(err)
}
// 输出地理位置信息
fmt.Printf("IP: %s\n", ip)
fmt.Printf("国家: %s\n", result.CountryName)
fmt.Printf("地区: %s\n", result.RegionName)
fmt.Printf("城市: %s\n", result.CityName)
fmt.Printf("纬度: %f\n", result.Latitude)
fmt.Printf("经度: %f\n", result.Longitude)
fmt.Printf("时区: %s\n", result.TimeZone)
fmt.Printf("ISP: %s\n", result.Isp)
fmt.Printf("域名: %s\n", result.Domain)
// 输出ASN信息
if result.Asn != "" {
fmt.Printf("ASN: %s\n", result.Asn)
fmt.Printf("AS: %s\n", result.As)
}
// 输出移动网络信息
if result.MobileBrand != "" {
fmt.Printf("移动设备品牌: %s\n", result.MobileBrand)
fmt.Printf("MCC: %s\n", result.Mcc)
fmt.Printf("MNC: %s\n", result.Mnc)
}
}
// WHOIS查询示例
func whoisLookup(client *ip2locationio.Client) {
domain := "example.com"
result, err := client.Whois(domain)
if err != nil {
log.Fatal(err)
}
fmt.Printf("域名: %s\n", result.Domain)
fmt.Printf("创建日期: %s\n", result.CreateDate)
fmt.Printf("更新日期: %s\n", result.UpdateDate)
fmt.Printf("过期日期: %s\n", result.ExpireDate)
fmt.Printf("注册商: %s\n", result.Registrar)
}
批量查询示例:
func batchLookup(client *ip2locationio.Client) {
ips := []string{"8.8.8.8", "1.1.1.1", "9.9.9.9"}
results, err := client.BulkLookup(ips)
if err != nil {
log.Fatal(err)
}
for _, result := range results {
fmt.Printf("IP: %s -> 国家: %s, 城市: %s\n",
result.Ip, result.CountryName, result.CityName)
}
}
错误处理示例:
func lookupWithErrorHandling(client *ip2locationio.Client, ip string) {
result, err := client.Lookup(ip)
if err != nil {
switch e := err.(type) {
case *ip2locationio.AuthenticationError:
fmt.Println("认证失败:", e.Message)
case *ip2locationio.RateLimitError:
fmt.Println("请求频率限制:", e.Message)
case *ip2locationio.InvalidIPError:
fmt.Println("无效IP地址:", e.Message)
default:
fmt.Println("查询错误:", err)
}
return
}
fmt.Printf("查询成功: %s - %s\n", ip, result.CountryName)
}
SDK支持查询代理检测信息:
func checkProxy(client *ip2locationio.Client, ip string) {
result, err := client.Lookup(ip)
if err != nil {
log.Fatal(err)
}
if result.IsProxy {
fmt.Printf("IP %s 检测为代理\n", ip)
fmt.Printf("代理类型: %s\n", result.ProxyType)
fmt.Printf("威胁类型: %s\n", result.ThreatType)
} else {
fmt.Printf("IP %s 不是代理\n", ip)
}
}
这些示例展示了如何使用IP2Location.io Go SDK进行基本的IP地理定位查询、WHOIS查询、批量查询和错误处理。

