curl का उपयोग करके DNS परिणाम प्राप्त करें

दो प्रारूपों में DNS क्वेरी परिणाम प्राप्त करने के लिए curl का उपयोग कैसे करें इसका परिचय।

इस लेख में DNS क्वेरी परिणाम प्राप्त करने के लिए curl का उपयोग करने के दो तरीके बताए गए हैं:

  1. DNS JSON प्रारूप
  2. DNS Wire Format प्रारूप

1. DNS JSON प्रारूप क्वेरी

JSON प्रारूप में DNS प्रतिक्रिया लौटाता है, जिसे पार्स करना आसान है।

Google

curl -H 'accept: application/dns-json' "https://dns.google/resolve?name=baidu.com&type=A" | jq .

Cloudflare

curl -H 'accept: application/dns-json' 'https://cloudflare-dns.com/dns-query?name=baidu.com&type=A' | jq .

Aliyun

curl -H "accept: application/dns-json" "https://223.5.5.5/resolve?name=baidu.com&type=1" | jq .

dns.pub

curl -H 'accept: application/dns-json' 'https://doh.dns.pub/dns-query?name=baidu.com&type=A' | jq .

AdGuard Private DNS

# अभी समर्थित नहीं है

2. DNS Wire Format प्रारूप क्वेरी

बाइनरी प्रारूप में DNS प्रतिक्रिया लौटाता है, जिसका आगे विश्लेषण करने की आवश्यकता होती है।

Google

curl -H 'accept: application/dns-message' 'https://dns.google/dns-query?dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB'  | hexdump -c

Cloudflare

curl -H 'accept: application/dns-message' 'https://cloudflare-dns.com/dns-query?dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB'  | hexdump -c

Aliyun

curl -H 'accept: application/dns-message' "https://dns.alidns.com/dns-query?dns=P8QBAAABAAAAAAAABWJhaWR1A2NvbQAAAQAB"  | hexdump -c

dns.pub

curl -H 'accept: application/dns-message' 'https://doh.dns.pub/dns-query?dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB'  | hexdump -c

AdGuard Private DNS

curl -H 'accept: application/dns-message' 'https://public0.adguardprivate.com/dns-query?dns=q80BAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB'  | hexdump -c

Python का उपयोग करके DNS प्रतिक्रिया का विश्लेषण करें

# pip install dnspython
# pip install requests
# JSON प्रारूप प्रतिक्रिया का विश्लेषण करें
import json
import requests

def query_dns_json(domain="example.com", type="A"):
  """DNS की JSON प्रारूप में क्वेरी करें"""
  url = "https://dns.google/resolve"
  params = {"name": domain, "type": type}
  headers = {"accept": "application/dns-json"}

  response = requests.get(url, params=params, headers=headers)
  return json.dumps(response.json(), indent=2)

# Wire Format प्रतिक्रिया का विश्लेषण करें
def query_dns_wire(domain="example.com"):
  """DNS की Wire Format प्रारूप में क्वेरी करें"""
  import dns.message
  import requests
  import base64

  # DNS क्वेरी संदेश बनाएं
  query = dns.message.make_query(domain, 'A')
  wire_format = query.to_wire()
  dns_query = base64.b64encode(wire_format).decode('utf-8')

  # अनुरोध भेजें
  url = "https://dns.google/dns-query"
  params = {"dns": dns_query}
  headers = {"accept": "application/dns-message"}

  response = requests.get(url, params=params, headers=headers)
  dns_response = dns.message.from_wire(response.content)
  return str(dns_response)

if __name__ == "__main__":
  print("JSON प्रारूप क्वेरी परिणाम:")
  print(query_dns_json())
  print("\nWire Format क्वेरी परिणाम:")
  print(query_dns_wire())

DNS Wire Format Base64 एन्कोडेड डेटा उत्पन्न करें

# pip install dnspython
import base64
import dns.message
import dns.rdatatype

# एक DNS क्वेरी संदेश बनाएं
query = dns.message.make_query('example.com', dns.rdatatype.A)

# संदेश को Wire Format में परिवर्तित करें
wire_format = query.to_wire()

# base64 में परिवर्तित करें
wire_format_base64 = base64.b64encode(wire_format).decode('utf-8')

# प्रिंट करें
print(wire_format_base64)