官网:http://www.dnspython.org/html
https://pypi.org/project/dnspython/python
dnspython是Python的DNS工具包。它支持几乎全部的记录类型。它能够用于查询,区域传输和动态更新。它支持TSIG认证消息和EDNS0(扩展DNS)。服务器
dnspython提供对DNS的高级和低级访问。高级别类对给定名称,类型和类的数据执行查询,并返回答案集。低级别容许直接操做DNS区域,消息,名称和记录。网络
使用dnspython的几种方法,官方示例(点击查看)tcp
CentOS工具
[root@localhost test]# pip3 install dnspython Collecting dnspython Downloading https://files.pythonhosted.org/packages/a6/72/209e18bdfedfd78c6994e9ec96981624a5ad7738524dd474237268422cb8/dnspython-1.15.0-py2.py3-none-any.whl (177kB) 100% |████████████████████████████████| 184kB 27kB/s Installing collected packages: dnspython Successfully installed dnspython-1.15.0
Mac OSspa
MacBook-Pro:~ h$ pip3 install dnspython Collecting dnspython Downloading https://files.pythonhosted.org/packages/a6/72/209e18bdfedfd78c6994e9ec96981624a5ad7738524dd474237268422cb8/dnspython-1.15.0-py2.py3-none-any.whl (177kB) 100% |████████████████████████████████| 184kB 10kB/s Installing collected packages: dnspython Successfully installed dnspython-1.15.0
dnspython模块提供了大量的DNS处理方法,最经常使用的方法是域名查询。dnspython提供了一个DNS解析器类——resolver,使用它的query方法来实现域名的查询功能。query方法的定义以下:code
query(self,qname,rdtype=1,rdclass=1,tcp=False,source=None,raise_on_no_answer=True,source_port=0)
其中,qname参数为查询的域名。retype参数用来指定RR资源的类型,经常使用的有如下几种:htm
A记录,将主机名转换成IP地址;
MX记录,邮件交换记录,定义邮件服务器的域名;
CNAME记录,指别名记录,实现域名间的映射;
NS记录,标记区域的域名服务器及受权子域;
PTR记录,反向解析,与A记录相反,将IP转换成主机名;
SOA记录,SOA标记,一个起始受权区的定义。
rdclass参数用于指定网络类型,可选的值有IN、CH与HS,其中IN为默认,使用最普遍。TCP参数用于指定查询是否启用TCP协议,默认为False(不启用)。source与source_port参数做为指定查询源地址与端口,默认值为查询设备IP地址和0.raise_on_no_answer参数用于指定当查询无应答时是否触发异常,默认为True。blog