
Retryable DNS client in Go
miekg/dns पर आधारित और bogdanovich/dns_resolver से प्रेरित।
$ go get github.com/projectdiscovery/retryabledns
इस कमांड के बाद retryabledns लाइब्रेरी का स्रोत आपके $GOPATH में होगा।
/etc/hosts फ़ाइल प्रसंस्करणडिफ़ॉल्ट रूप से, लाइब्रेरी दक्षता के लिए /etc/hosts फ़ाइल को अधिकतम 4096 पंक्तियों तक प्रोसेस करती है। यदि आपकी सेटअप में बड़ी होस्ट्स फ़ाइल है और आप अधिक पंक्तियों को प्रोसेस करना चाहते हैं, तो आप hostsfile.MaxLines वेरिएबल को समायोजित करके इस सीमा को आसानी से कॉन्फ़िगर कर सकते हैं।
उदाहरण के लिए:
hostsfile.MaxLines = 10000 // Now the library will process up to 10000 lines from the hosts file
उपयोग उदाहरण:
package main
import (
"log"
"github.com/projectdiscovery/retryabledns"
"github.com/miekg/dns"
)
func main() {
// It requires a list of resolvers.
// Valid protocols are "udp", "tcp", "doh", "dot". Default are "udp".
resolvers := []string{"8.8.8.8:53", "8.8.4.4:53", "tcp:1.1.1.1"}
retries := 2
hostname := "hackerone.com"
dnsClient, err := retryabledns.New(resolvers, retries)
if err != nil {
log.Fatal(err)
}
ips, err := dnsClient.Resolve(hostname)
if err != nil {
log.Fatal(err)
}
log.Println(ips)
// Query Types: dns.TypeA, dns.TypeNS, dns.TypeCNAME, dns.TypeSOA, dns.TypePTR, dns.TypeMX, dns.TypeANY
// dns.TypeTXT, dns.TypeAAAA, dns.TypeSRV (from github.com/miekg/dns)
// retryabledns.ErrRetriesExceeded will be returned if a result isn't returned in max retries
dnsResponses, err := dnsClient.Query(hostname, dns.TypeA)
if err != nil {
log.Fatal(err)
}
log.Println(dnsResponses)
}
श्रेय:
https://github.com/lixiangzhong/dnsutilhttps://github.com/rs/dnstrace