curl का उपयोग करके DNS परिणाम प्राप्त करें
दो प्रारूपों में DNS क्वेरी परिणाम प्राप्त करने के लिए curl का उपयोग कैसे करें इसका परिचय।
Categories:
इस लेख में DNS क्वेरी परिणाम प्राप्त करने के लिए curl का उपयोग करने के दो तरीके बताए गए हैं:
- DNS JSON प्रारूप
- DNS Wire Format प्रारूप
1. DNS JSON प्रारूप क्वेरी
JSON प्रारूप में DNS प्रतिक्रिया लौटाता है, जिसे पार्स करना आसान है।
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 प्रतिक्रिया लौटाता है, जिसका आगे विश्लेषण करने की आवश्यकता होती है।
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)