6.3 使用dnspython解析DNS

6.3.1 dnspython简介与安装

dnspython是Python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询、传输并动态更新ZONE信息。在系统管理方面,我们可以利用其查询功能来实现DNS服务监控以及解析结果的校验,可以替代nslookup和dig等工具,轻松做到与现有平台的整合。

安装:

pip install dnspython

6.3.2 使用dnspython进行域名解析

dnspython提供大量关于DNS的处理方法,最常用的是域名查询。dnspython提供了一个DNS解析类resolver,使用它的query方法来实现域名的查询功能。

query(self, qname, rdtype = 1, rdclass = 1, tcp = False, source = None, raise_on_no_answer = True, source_port = 0)

qname参数为查询的域名,rdtype参数用来指定RR资源。

>>> answer = dns.resolver.query('www.baidu.com','A')
>>> answer.qname
<DNS name www.baidu.com.>
>>> answer.rdclass
1
>>> answer.rrset
<DNS www.a.shifen.com. IN A RRset>
>>> answer.response
<DNS message, ID 18190>
>>> for i in answer.response.answer:
...     print(i.to_text())
... 
www.baidu.com. 30 IN CNAME www.a.shifen.com.
www.a.shifen.com. 26 IN A 180.97.33.108
www.a.shifen.com. 26 IN A 180.97.33.107