用于Go的DNS查询API客户端库(附代码)

184 阅读1分钟

dns-lookup-go license dns-lookup-go made-with-Go dns-lookup-go test

概述

Go语言中的DNS查询API的客户端库。

最小的Go版本是1.17。

安装

该库以Go模块的形式发布

go get github.com/whois-api-llc/dns-lookup-go

实例

这里有完整的API文档

你可以在example 目录中找到所有的例子。

创建一个新的客户端

要开始提出请求,你需要API密钥。 你可以在whoisxmlapi.com的个人资料页面上找到它。 使用API密钥你可以创建客户端。

大多数用户使用NewBasicClient 功能就可以了。

client := dnslookupapi.NewBasicClient(apiKey)

如果你想设置自定义http.Client 来使用代理,那么你可以使用NewClient 函数:

transport := &http.Transport{Proxy: http.ProxyURL(proxyUrl)}

client := dnslookupapi.NewClient(apiKey, dnslookupapi.ClientParams{
    HTTPClient: &http.Client{
        Transport: transport,
        Timeout:   20 * time.Second,
    },
})

提出基本请求

DNS查询API让你从域名的A记录以及域名的邮件服务器(MX记录)、名称服务器(NS记录)、SPF(TXT记录)等记录中获得结构清晰的域名对应的IP地址:

// Make request to get all parsed DNS records for the domain name
dnsLookupResp, resp, err := client.Get(ctx, "whoisxmlapi.com")
if err != nil {
    log.Fatal(err)
}

for _, record := range dnsLookupResp.DNSRecords.A {
    log.Println(record.Name)
    log.Println(record.Address)
}

// Make request to get raw DNS Lookup API data
resp, err := client.GetRaw(context.Background(), "whoisxmlapi.com")
if err != nil {
    log.Fatal(err)
}

log.Println(string(resp.Body))```