在go中按域名查找IP地址

Vik*_*ank 6 ip-address go

我使用下面的 API 代码来查找给定域的 IP 地址:

func IPFinder(c *gin.Context) {
    var domain models.Domain
    c.BindJSON(&domain)
    addr, err := net.LookupIP(domain.DomainName)
    if err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
    } else {
        c.JSON(http.StatusOK, gin.H{"ip_address": addr})
    }
    return
}
Run Code Online (Sandbox Code Playgroud)

对于以下请求:

{
    "domain_name": "google.com"
}
Run Code Online (Sandbox Code Playgroud)

得到的响应为:

{
    "ip_address": [
        "2404:6800:4002:80a::200e",
        "172.217.167.46"
    ]
}
Run Code Online (Sandbox Code Playgroud)

此处,此 LookupIP 方法给出包含该域的 ipv4 和 ipv6 地址的切片。GoLang 中是否有其他任何其他第 3 方库,使用它我可以获得仅包含 IP 地址的输出,如下所示:

{
    "ip_address": "172.217.167.46"
}
Run Code Online (Sandbox Code Playgroud)

Sar*_*van 14

如果您只对 IPv4 地址感兴趣,可以这样获取:

package main

import (
    "fmt"
    "net"
)

func main(){
    ips, _ := net.LookupIP("google.com")
    for _, ip := range ips {
        if ipv4 := ip.To4(); ipv4 != nil {
            fmt.Println("IPv4: ", ipv4)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)