首頁 >後端開發 >Golang >如何在不更改 /etc/resolv.conf 的情況下在 Golang 中執行 LookupTXT?

如何在不更改 /etc/resolv.conf 的情況下在 Golang 中執行 LookupTXT?

Patricia Arquette
Patricia Arquette原創
2024-12-03 12:58:11242瀏覽

How to Perform a LookupTXT in Golang Without Changing /etc/resolv.conf?

Golang 中的LookupTXT 函數,無需修改/etc/resolv.conf

標準Golang 庫沒有提供與LookupTXT 等效的直接函數,允許指定自訂DNS 伺服器。原因是 DNS 用戶端依賴 /etc/resolv.conf 中的配置來取得 DNS 伺服器資訊。

但是,有幾個選項可以實現您所需要的,同時遵守不修改的要求/etc/resolv.conf.

使用自訂DNS 解析器:

一種方法就是使用一個自訂的DNS解析器函式庫,支援指定特定的DNS伺服器。例如,github.com/miekg/dns 庫提供了在 dns.Client 物件中設定自訂伺服器 IP 的靈活性。以下程式碼示範如何使用該函式庫:

import (
    "log"
    "net"

    "github.com/miekg/dns"
)

func main() {
    target := "microsoft.com"
    server := "8.8.8.8"

    // Create a new DNS client with a custom server.
    c := dns.Client{Net: "udp", Server: server}

    // Build a request message.
    m := dns.Msg{}
    m.SetQuestion(target+".", dns.TypeTXT)

    // Exchange the request and receive the response.
    r, _, err := c.Exchange(&m, server+":53")
    if err != nil {
        log.Fatal(err)
    }

    // Process the response.
    if len(r.Answer) == 0 {
        log.Fatal("No results")
    }
    for _, ans := range r.Answer {
        TXTrecord := ans.(*dns.TXT)
        for _, txt := range TXTrecord.Txt {
            log.Println(txt)
        }
    }
}

以上是如何在不更改 /etc/resolv.conf 的情況下在 Golang 中執行 LookupTXT?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn