
Client DNS réessayable en Go
Basé sur miekg/dns et librement inspiré de bogdanovich/dns_resolver.
$ go get github.com/projectdiscovery/retryabledns
Après cette commande, le code source de la bibliothèque retryabledns se trouvera dans votre $GOPATH
/etc/hostsPar défaut, la bibliothèque traite le fichier /etc/hosts jusqu'à un nombre maximal de lignes pour des raisons d'efficacité (4096). Si votre configuration possède un fichier hosts plus volumineux et que vous souhaitez traiter plus de lignes, vous pouvez facilement configurer cette limite en ajustant la variable hostsfile.MaxLines.
Par exemple :
hostsfile.MaxLines = 10000 // Now the library will process up to 10000 lines from the hosts file
Exemple d'utilisation :
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)
}
Crédits :
https://github.com/lixiangzhong/dnsutilhttps://github.com/rs/dnstrace