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查询、批量查询和错误处理。

回到顶部