当前位置:首页 > 行业动态 > 正文

dns python

dnspython 是 Python 中用于 DNS 操作的第三方库,提供了丰富的 DNS 处理方法,如域名查询、区域传输、动态更新等。它支持多种 DNS 记录类型,可简化 DNS 查询与解析流程,还能实现 DNS 服务监控及解析结果校验等功能。

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())

FAQs

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')
0