使用golang獲取網域名稱的dns記錄, 包括a / cname等型別.
只舉例獲取cname型別的解析記錄, 其他型別大同小異.
func cname(src string) (dst string, err error)官方net包呼叫的是系統api, 所以在不同的系統上可能有不同的結果, 我測試當乙個網域名稱的解析記錄如下時, linux和windows返回的結果不一致.
bysir.xyz. 297 in cname blog.bysir.top.windows下blog.bysir.top. 60 in cname bysir.top.
bysir.top. 60 in a 78.178.25.149
net.lookupcname
會返回第一層cname, 即blog.bysir.top.
, linux下會返回第二層cname, 即bysir.top.
.
而如果你想獲取完整的解析記錄, 或者是精確的第一層cname就需要用到下述的第二種方案了.
// cname2 返回所有層的cname// src: 網域名稱
// dnsservice: dns伺服器, 如114.114.114.114
func cname2(src string, dnsservice string) (dst string, err error)
var lasterr error
// retry 3 times
for i := 0; i < 3; i++
// 最終都會指向乙個ip 也就是typea, 這樣就可以返回所有層的cname.
m.setquestion(src+".", dns.typea)
r, _, err := c.exchange(&m, dnsservice+":53")
if err != nil
dst = string{}
for _, ans := range r.answer
}lasterr = nil
break
}err = lasterr
return
}
在Golang中獲取DNS記錄
使用golang獲取網域名稱的dns記錄,包括a cname等型別.只舉例獲取cname型別的解析記錄,其他型別大同小異.func cname src string dst string,err error 官方net包呼叫的是系統api,所以在不同的系統上可能有不同的結果,我測試當乙個網域名稱的解...
在Golang中獲取DNS記錄
使用golang獲取網域名稱的dns記錄,包括a cname等型別.只舉例獲取cname型別的解析記錄,其他型別大同小異.func cname src string dst string,err error 官方net包呼叫的是系統api,所以在不同的系統上可能有不同的結果,我測試當乙個網域名稱的解...
在Golang中獲取DNS記錄
使用golang獲取網域名稱的dns記錄,包括a cname等型別.只舉例獲取cname型別的解析記錄,其他型別大同小異.func cname src string dst string,err error 官方net包呼叫的是系統api,所以在不同的系統上可能有不同的結果,我測試當乙個網域名稱的解...