官網: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