العودة إلى التحديثات
New releaseSep 3, 2026

retryabledns v1.0.116

عميل DNS قابل لإعادة المحاولة بلغة Go

مشاركة

محلل DNS قابل لإعادة المحاولة

مبني على miekg/dns ومستوحى بحرية من bogdanovich/dns_resolver.

الميزات

  • يدعم كلاً من محللات DNS الافتراضية للنظام وتلك المقدمة من المستخدم
  • يعيد محاولة طلبات DNS في حالة أخطاء الإدخال/الإخراج، أو انتهاء المهلة، أو فشل الشبكة
  • يسمح بأنواع استعلامات عشوائية
  • التحليل باستخدام محللات عشوائية
  • متوافق مع بروتوكولات محلل DNS المختلفة (TCP، UDP، DoH، وDoT)

الاستخدام عبر go get

$ go get github.com/projectdiscovery/retryabledns

بعد هذا الأمر، سيكون كود مكتبة retryabledns في $GOPATH الخاص بك

معالجة ملف /etc/hosts

افتراضيًا، تعالج المكتبة ملف /etc/hosts حتى حد أقصى من الأسطر من أجل الكفاءة (4096). إذا كان إعدادك يحتوي على ملف hosts أكبر وتريد معالجة المزيد من الأسطر، يمكنك بسهولة ضبط هذا الحد عن طريق تعديل المتغير 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

الفئات