dnspython是Python的DNS工具包。它支持幾乎全部的記錄類型。它能夠用於查詢,區域傳輸和動態更新。它支持TSIG認證消息和EDNS0。python
dnspython提供對DNS的高級和低級訪問。高級別類對給定名稱,類型和類的數據執行查詢,並返回答案集。低級別類容許直接操做DNS區域,消息,名稱和記錄。服務器
官方網站:http://www.dnspython.org/ 網絡
#! /env python3 #coding=utf-8 ''' 模塊域名解析方法: dnspthon提供了一個DNS解析器類-resolver,使用query方法實現域名查詢功能 方法定義以下: query(self,qname,rdtpye=1,rdclass=1,tcp=False,source=None,rasie_on_no_answer=True,source_port=0) 其中qname參數爲查詢的域名。rdtpye參數指定RR資源類型,經常使用有如下幾種 A記錄,將主機名轉換爲IP地址; MX記錄,郵件交換機記錄,定義郵件服務器的域名; CNAME記錄,指別名記錄,實現域名間的映射; NS記錄,標記區域的域名服務器及受權子域; PTR記錄,方向解析,與A記錄相反,將IP轉換爲主機名; SOA記錄,SOA標記,一個起始受權區的定義 rdclass參數用於指定網絡類型,可選的值有IN,CH與HS,其中IN爲默認,使用最普遍 tcp參數用於指定查詢是否啓用了TCP協議,默認是 False不啓用。 source與source_port參數做爲指定查詢的源地址與端口,默認爲查詢設備IP地址和0. rasie_on_on_answer=True參數指定當查詢無應答時是否觸發異常 ''' ''' 常見的解析類型-A記錄,實現A記錄查詢方法 ''' 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) ''' 常見的解析類型-MX記錄 ''' import dns.resolver domain = input('Please input an domain: ') #指定域名爲163.com MX = dns.resolver.query(domain, 'MX') #指定查詢類型爲MX記錄 for i in MX: #遍歷迴應結果,輸出MX記錄的preference及exchanger信息 print ('MX preference =', i.preference, 'mail exchanger =', i.exchange) ''' 常見的解析類型-NS記錄 ''' import dns.resolver domain = input('Please input an domain: ') #只限輸入一級域名,如163.com ns = dns.resolver.query(domain, 'NS') #指定查詢類型爲NS for i in ns.response.answer: for j in i.items: print(j.to_text()) ''' 常見的解析類型-CNAME記錄 ''' import dns.resolver domain = input('Please input an domain: ') #指定查詢類型爲CNAME記錄 cname = dns.resolver.query(domain, 'CNAME') #結果將回應cname後的目標信息 for i in cname.response.answer: for j in i.items: print (j.to_text())