DNSPython 是一个用 Python 实现的 DNS 工具包,它几乎支持所有的记录类型,可以用于查询、传输并动态更新 ZONE 信息,同时支持 TSIG(事务签名)验证消息和 EDNS0(扩展 DNS),在系统管理方面,DNSPython 可以用于 DNS 服务监控和解析结果校验,替代 nslookup 和 dig 等工具,轻松与现有平台整合。
可以通过以下命令安装 DNSPython:
pip install dnspython
1、A 记录:将主机名转换成 IP 地址。
import dns.resolver domain = input('Please input an domain: ') # 输入域名地址 A = dns.resolver.query(domain, 'A') # 指定查询类型为 A 记录 for i in A.response.answer: # 通过 response.answer 方法获取查询回应信息 for j in i.items: # 遍历回应信息 print(j.address)
2、MX 记录:邮件交换记录,定义邮件服务器的域名。
import dns.resolver domain = input('Please input an domain: ') # 输入域名地址 MX = dns.resolver.query(domain, 'MX') # 指定查询类型为 MX 记录 for i in MX: # 遍历回应结果,输出 MX 记录的 preference 及 exchanger 信息 print('MX preference =', i.preference, 'mail exchanger =', i.exchange)
3、NS 记录:标记区域的域名服务器及授权子域。
import dns.resolver domain = input('Please input an domain: ') # 输入域名地址 NS = dns.resolver.query(domain, 'NS') # 指定查询类型为 NS 记录 for i in NS.response.answer: # 通过 response.answer 方法获取查询回应信息 for j in i.items: # 遍历回应信息 print(j.to_text())
4、CNAME 记录:别名记录,实现域名间的映射。
import dns.resolver domain = input('Please input an domain: ') # 输入域名地址 CNAME = dns.resolver.query(domain, 'CNAME') # 指定查询类型为 CNAME 记录 for i in CNAME.response.answer: # 通过 response.answer 方法获取查询回应信息 for j in i.items: # 遍历回应信息 print(j.to_text())
1、如何查询特定类型的 DNS 记录?
使用dns.resolver.query
方法,并指定qname
(要查询的域名)和rdtype
(记录类型),查询 A 记录可以使用dns.resolver.query(domain, 'A')
。
2、如何设置自定义的 DNS 服务器进行查询?
可以创建一个dns.resolver.Resolver
对象,并设置其nameservers
属性为自定义的 DNS 服务器列表,然后使用该 resolver 对象的query
方法进行查询。
myResolver = dns.resolver.Resolver() myResolver.nameservers = ['8.8.8.8'] # 设置为 Google 的公共 DNS 服务器 answer = myResolver.query('www.example.com', 'A')