欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

golang如何獲取域名ip?dns信息

 更新時(shí)間:2025年07月03日 09:50:31   作者:alden_ygq  
這篇文章主要介紹了golang如何獲取域名ip?dns信息問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Go語(yǔ)言查找DNS A記錄

A (Address) 記錄是用來(lái)指定主機(jī)名(或域名)對(duì)應(yīng)的IP地址記錄. 用戶可以將該域名下的網(wǎng)站服務(wù)器指向到自己的web server上. 同時(shí)也可以設(shè)置您域名的二級(jí)域名.

使用 Go 語(yǔ)言的標(biāo)準(zhǔn)庫(kù) net.LookupIP() 接受域名的字符串參數(shù),返回 net.IP的切片. 這個(gè) net.IP 對(duì)象包含IPv4地址和IPv6地址.

package main


import (

    "fmt"

    "net"

)


func main() {

    iprecords, _ := net.LookupIP("mojotv.cn")

    for _, ip := range iprecords {

        fmt.Println(ip)

    }

}

上面代碼返回的facebook域名的IPv4和IPv6地址:

C:\golang\mojotv.cn>go run golang_dns_example.go

2a03:2880:f12f:83:face:b00c:0:25de

31.13.79.35

Go語(yǔ)言查找DNSCNAME記錄

CNAME(縮寫canonical name)記錄,即:別名記錄.這種記錄允許您將多個(gè)名字映射到同一臺(tái)計(jì)算機(jī). 通常用于同時(shí)提供WWW和MAIL服務(wù)的計(jì)算機(jī).例如,有一臺(tái)計(jì)算機(jī)名為“host.mydomain.com”(A記錄). 它同時(shí)提供WWW和MAIL服務(wù),為了便于用戶訪問(wèn)服務(wù).可以為該計(jì)算機(jī)設(shè)置兩個(gè)別名(CNAME):WWW和MAIL.

使用Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)net.LookupCNAME()根據(jù)域名字符串查詢DNS CNAME 記錄值.

package main


import (

    "fmt"

    "net"

)


func main() {

    cname, _ := net.LookupCNAME("m.facebook.com")

    fmt.Println(cname)
    
}

返回m.facebook.com 的 DNS CNAME 記錄值出輸結(jié)果如下:

C:\golang\mojotv.cn>go run dns_cname_example.go

star-mini.c10r.facebook.com.

Go語(yǔ)言查找DNS PTR記錄

PTR記錄,是電子郵件系統(tǒng)中的郵件交換記錄的一種;另一種郵件交換記錄是A記錄(在IPv4協(xié)議中)或AAAA記錄(在IPv6協(xié)議中).PTR記錄常被用于反向地址解析. 根據(jù)一個(gè)IP值,查找映射的域名值,不一定沒(méi)有ip地址都回生效,DNS的IP地址可以查到.

DNS PTR用途

  • PTR記錄被用于電子郵件發(fā)送過(guò)程中的反向地址解析.
  • 當(dāng)正向域名解析完成后,還應(yīng)當(dāng)向您的線路接入商(ISP)申請(qǐng)做反向地址解析,以減少被國(guó)外機(jī)構(gòu)退信的可能性.

使用Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)net.LookupAddr()函數(shù)對(duì)地址執(zhí)行反向查找,并返回映射到給定地址的名稱列表.

package main


import (

    "fmt"

    "net"

)


func main() {

    ptr, err := net.LookupAddr("114.114.114.114")

    if err != nil {

        fmt.Println(err)

    }

    for _, ptrvalue := range ptr {

        fmt.Println(ptrvalue)

    }

}

查找dns的返回值如下

C:\golang\dns>go run example3.go

public1.114dns.com.

Go語(yǔ)言查找DNS NS記錄

NS記錄此記錄指定負(fù)責(zé)此DNS區(qū)域的權(quán)威名稱服務(wù)器. A記錄和NS記錄的區(qū)別是,A記錄直接給出目的IP, NS記錄將DNS解析任務(wù)交給特定的服務(wù)器, NS記錄中記錄的IP即為該特定服務(wù)器的IP地址.

使用Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)net.LookupNS()函數(shù)對(duì)域名執(zhí)行反向查找,并返回負(fù)責(zé)此域名DNS-NS記錄切片.

package main


import (

    "fmt"

    "net"

)


func main() {

    nameserver, _ := net.LookupNS("baidu.com")

    for _, ns := range nameserver {

        fmt.Println(ns)

    }

}

結(jié)果如下

C:\golang\mojotv.cn>go run dsn_ns_example.go

&{ns3.baidu.com.}

&{ns4.baidu.com.}

&{ns7.baidu.com.}

&{dns.baidu.com.}

&{ns2.baidu.com.}

Go語(yǔ)言查找DNS MX記錄

郵件交換記錄 (MX record)是域名系統(tǒng)(DNS)中的一種資源記錄類型,用于指定負(fù)責(zé)處理發(fā)往收件人域名的郵件服務(wù)器. MX記錄允許設(shè)置一個(gè)優(yōu)先級(jí),當(dāng)多個(gè)郵件服務(wù)器可用時(shí),會(huì)根據(jù)該值決定投遞郵件的服務(wù)器.簡(jiǎn)單郵件傳輸協(xié)議(SMTP)會(huì)根據(jù)MX記錄的值來(lái)決定郵件的路由過(guò)程.

使用Go語(yǔ)言標(biāo)準(zhǔn)庫(kù) net.LookupMX 函數(shù)將域名作為字符串,并返回按首選項(xiàng)排序的MX 結(jié)構(gòu)體的切片. MX結(jié)構(gòu)由主機(jī)作為string組成,Pref是uint16.

package main


import (

    "fmt"

    "net"

)


func main() {

    mxrecords, _ := net.LookupMX("baidu.com")

    for _, mx := range mxrecords {

        fmt.Println(mx.Host, mx.Pref)
    
    }

}

域名(baidu.com)的輸出列表MX記錄

C:\golang\mojotv.cn>go run golang_dns_mx_example.go

mx.maillb.baidu.com. 10

mx.n.shifen.com. 15

mx1.baidu.com. 20

jpmx.baidu.com. 20

mx50.baidu.com. 20

Go語(yǔ)言查找DNS SRV記錄

SRV記錄(英語(yǔ):Service Record,中文又名服務(wù)定位記錄)是域名系統(tǒng)中用于指定服務(wù)器提供服務(wù)的位置(如主機(jī)名和端口)數(shù)據(jù).此數(shù)據(jù)于RFC 2782中定義,類型代碼為33. 部分協(xié)議,如會(huì)話發(fā)起協(xié)議(SIP)及可擴(kuò)展消息與存在協(xié)議(XMPP)通常需要服務(wù)記錄的支持.

Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)LookupSRV函數(shù)嘗試指定服務(wù)的SRV查詢,協(xié)議和域名的SRV查詢. 第二個(gè)參數(shù)是“tcp”或“udp”. 返回的記錄按優(yōu)先級(jí)排序,并按優(yōu)先級(jí)在權(quán)重隨機(jī)分配.

package main


import (

    "fmt"

    "net"

)


func main() {

    cname, srvs, err := net.LookupSRV("xmpp-server", "tcp", "golang.org")

    if err != nil {

        panic(err)

    }


    fmt.Printf("\ncname: %s \n\n", cname)


    for _, srv := range srvs {

        fmt.Printf("%v:%v:%d:%d\n", srv.Target, srv.Port, srv.Priority, srv.Weight)

    }

}

下面的輸出演示了CNAME返回,后跟SRV記錄目標(biāo),端口,優(yōu)先級(jí)和由冒號(hào)分隔的權(quán)重.

C:\golang\mojotv.cn>go run golang_dns_srv_example.go

cname: _xmpp-server._tcp.golang.org.

Go語(yǔ)言查找DNS TXT記錄

TXT記錄用來(lái)保存域名的附加文本信息,TXT記錄的內(nèi)容按照一定的格式編寫,最常用的是SPF格式,SPF用于登記某個(gè)域名擁有的用來(lái)外發(fā)郵件的所有ip地址. MX記錄的作用是給寄信者指明某個(gè)域名的郵件服務(wù)器有哪些,SPF格式的TXT記錄的作用跟MX記錄相反,它向收信者表明,哪些郵件服務(wù)器是經(jīng)過(guò)某個(gè)域名認(rèn)可發(fā)送郵件的. SPF的作用主要是反垃圾郵件,主要針對(duì)那些發(fā)信人偽造域名的垃圾郵件.按照SPF格式在DNS中增加一條TXT類型的記錄,將提高該域名的信譽(yù)度,同時(shí)可以防止垃圾郵件偽造該域的發(fā)件人發(fā)送垃圾郵件.

Go語(yǔ)言標(biāo)準(zhǔn)庫(kù) net.LookupTXT 函數(shù)將域名(baidu.com)作為字符串,并返回DNS TXT記錄列表作為字符串片段.

package main


import (

    "fmt"

    "net"

)


func main() {

    txtrecords, _ := net.LookupTXT("baidu.com")


    for _, txt := range txtrecords {

        fmt.Println(txt)

    }

}

baidu.com的txt值如下

C:\golang\mojotv>go run golang_dns_txt.go

v=spf1 include:spf1.baidu.com include:spf2.baidu.com include:spf3.baidu.com a mx ptr -all

google-site-verification=GHb98-6msqyx_qqjGl5eRatD3QTHyVB6-xQ3gJB5UwM

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Go語(yǔ)言的http/2服務(wù)器功能及客戶端使用

    Go語(yǔ)言的http/2服務(wù)器功能及客戶端使用

    Golang 有一個(gè)很棒的自帶 http 服務(wù)器軟件包,不用說(shuō)就是: net/http, 它非常簡(jiǎn)單,但是功能非常強(qiáng)大。下面這篇文章主要給大家介紹了關(guān)于Go語(yǔ)言的http/2服務(wù)器功能及客戶端使用的相關(guān)資料,需要的朋友可以參考下
    2018-09-09
  • Go?Web實(shí)戰(zhàn)之創(chuàng)建項(xiàng)目及增加日志功能

    Go?Web實(shí)戰(zhàn)之創(chuàng)建項(xiàng)目及增加日志功能

    這篇文章主要為大家詳細(xì)介紹了Go?Web項(xiàng)目中如何實(shí)現(xiàn)創(chuàng)建項(xiàng)目及增加日志功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-11-11
  • 詳解Golang如何優(yōu)雅判斷interface是否為nil

    詳解Golang如何優(yōu)雅判斷interface是否為nil

    這篇文章主要為大家詳細(xì)介紹了Golang如何優(yōu)雅判斷interface是否為nil的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解下
    2024-01-01
  • 深入淺出Go語(yǔ)言:手把手教你高效生成與解析JSON數(shù)據(jù)

    深入淺出Go語(yǔ)言:手把手教你高效生成與解析JSON數(shù)據(jù)

    本文將帶你一步步走進(jìn)Go語(yǔ)言的世界,教你如何高效生成與解析JSON數(shù)據(jù),無(wú)論你是初學(xué)者還是經(jīng)驗(yàn)豐富的開(kāi)發(fā)者,都能在本文中找到實(shí)用的技巧和靈感,本文內(nèi)容簡(jiǎn)潔明了,示例豐富,讓你在閱讀的過(guò)程中輕松掌握Go語(yǔ)言生成與解析JSON數(shù)據(jù)的技巧,需要的朋友可以參考下
    2024-02-02
  • golang 數(shù)組隨機(jī)排序的實(shí)現(xiàn)

    golang 數(shù)組隨機(jī)排序的實(shí)現(xiàn)

    本文主要介紹了golang 數(shù)組隨機(jī)排序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Golang TCP網(wǎng)絡(luò)編程的具體實(shí)現(xiàn)

    Golang TCP網(wǎng)絡(luò)編程的具體實(shí)現(xiàn)

    go語(yǔ)言是一門功能強(qiáng)大的編程語(yǔ)言,它提供了眾多的網(wǎng)絡(luò)編程庫(kù),其中包括tcp/ip,本文主要介紹了Golang TCP網(wǎng)絡(luò)編程的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以來(lái)了解一下
    2024-06-06
  • go語(yǔ)言搬磚之go jmespath實(shí)現(xiàn)查詢json數(shù)據(jù)

    go語(yǔ)言搬磚之go jmespath實(shí)現(xiàn)查詢json數(shù)據(jù)

    這篇文章主要為大家介紹了go語(yǔ)言搬磚之go jmespath實(shí)現(xiàn)查詢json數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Go語(yǔ)言中的變量聲明和賦值

    Go語(yǔ)言中的變量聲明和賦值

    這篇文章主要介紹了Go語(yǔ)言中的變量聲明和賦值的方法,十分的細(xì)致全面,有需要的小伙伴可以參考下。
    2015-04-04
  • Go語(yǔ)言如何獲取goroutine的id

    Go語(yǔ)言如何獲取goroutine的id

    在Go語(yǔ)言中,獲取?goroutine的id并不像其他編程語(yǔ)言那樣容易,但依然有辦法,這篇文章就來(lái)和大家聊聊具體實(shí)現(xiàn)的方法,感興趣的小伙伴可以了解下
    2024-12-12
  • golang協(xié)程設(shè)計(jì)及調(diào)度原理

    golang協(xié)程設(shè)計(jì)及調(diào)度原理

    這篇文章主要介紹了golang協(xié)程設(shè)計(jì)及調(diào)度原理,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-06-06

最新評(píng)論