अपडेट पर वापस जाएँ
New releaseSep 3, 2026

retryabledns v1.0.116

Go में पुनः प्रयास करने योग्य DNS क्लाइंट

साझा करें

पुनः प्रयास योग्य DNS रिज़ॉल्वर

miekg/dns पर आधारित और bogdanovich/dns_resolver से प्रेरित।

विशेषताएँ

  • सिस्टम डिफ़ॉल्ट DNS रिज़ॉल्वर और उपयोगकर्ता द्वारा प्रदान किए गए दोनों का समर्थन करता है
  • I/O त्रुटियों, टाइमआउट या नेटवर्क विफलताओं के मामले में DNS अनुरोधों को पुनः प्रयास करता है
  • मनमाना क्वेरी प्रकारों की अनुमति देता है
  • यादृच्छिक रिज़ॉल्वर के साथ रिज़ॉल्यूशन
  • विभिन्न DNS रिज़ॉल्वर प्रोटोकॉल (TCP, UDP, DoH, और DoT) के साथ संगत

go get का उपयोग करना

$ 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/dnsutil
  • https://github.com/rs/dnstrace

श्रेणियाँ