dnspython是在python下的dns解析文件。它支持幾乎所有的記錄類型,可以用于查詢、傳輸并動態更新ZONE信息,同時支持TSIG(事務簽名)驗證消息和EDNS0(擴展DNS)。小編這里給大家帶來windows和linux版本兩種版本,需要的下!
dnspython是什么
dnspython是Python的一個DNS工具包。它支持幾乎所有的記錄類型。它可以用于查詢、區域轉移和動態更新。它支持TSIG驗證消息和EDNS0。
dnspython提供了高和低水平訪問DNS。高水平類執行查詢數據給定的名稱、類型和類,并返回一組回答。低水平類允許DNS區域的直接操縱,信息,名字,和記錄。
看到幾個dnspython可用的方法,訪問頁面的示例。
dnspython起源在Nominum那里發達促進DNS軟件的測試。Nominum慷慨地允許它在bsd風格的開源許可證,并幫助支持其未來發展通過繼續采用作者:)。
dnspython安裝使用方法
這里采用源碼的安裝方式,最新版本為1.12.0,如下:
# http://www.dnspython.org/kits/1.12.0/dnspython-1.12.0.tar.gz
# tar -zxvf dnspython-1.12.0.tar.gz
# cd dnspython-1.12.0
# python setup.py install
對域名進行操作
域名是 DNS 系統中最基本的對象。
dnspython 通過類 dns.name.Name 提供了對域名信息進行封裝。
對于類 dns.name.Name 的實例,我們可以進行一些操作。
請看下面的例子(已經準備好了交互式 Python 環境了嗎):
>>> import dns.name
>>> n1 = dns.name.from_text('google.com')
>>> print type(n1)
<class 'dns.name.Name'>
首先,我們導入模塊 dns.name。
通過函數 dns.name.from_text(),我們很方便的從字符串 google.com 創建了一個類 dns.name.Name 的實例。
隨后,我們通過 type() 函數證實了這一點。
讓我們再創建幾個類 dns.name.Name 的實例。
>>> n0 = dns.name.from_text('com')
>>> n2 = dns.name.from_text('www.google.com')
>>> n3 = dns.name.from_text('www.google.cn')
類 dns.name.Name 的方法 is_subdomain() 和 is_superdomain 可以幫助我們判讀一個域名是否是另一個域名的子域或者超域。
>>> n0.is_superdomain(n2)
True
>>> n0.is_superdomain(n3)
False
>>> n2.is_subdomain(n1)
True
>>> n3.is_subdomain(n1)
False
>>> n1.is_subdomain(n1)
True
>>> n1.is_superdomain(n1)
True
通過上面的例子我們看到,com 是 www.google.com 的 super domain,不是 www.google.cn 的 super domain。反過來說,www.google.com是 com 的 subdoamin 成立,而 www.google.cn 是 com 的 subdomain 不成立。
我們還意識到一個 dns.name.Name 總是自己的 super domain 和 subdomain。
讓我們看看如何處理域名間的相對關系:
>>> r1 = n2.relativize(n1)
>>> print r1
www
>>> r2 = n2 - n1
>>> r1 == r2
True
我們看到,通過 relativize() 方法可以獲得一個域名相對其 superdomain 的部分,例如 n2 相對 n1 的部分是 www。
我們也可以使用減(-)操作得到等價結果。那么,是否可以使用加(+)操作處理域名呢?
>>> r1 + n1 == n2
True
答案是肯定的。
dnspython 增刪改查記錄
操作
dic.clear() 清除字典
dic.keys() 獲取鍵的列表
dic.values() 獲取值的列表
dic.copy() 復制字典
dic.pop(k) 刪除鍵k
dic.get(k) 得到鍵k的值
dic.update() 更新成員,若成員不在,相當于添加
dic.items() 獲得由鍵和值組成的列表
dic.popitem() 隨機刪除一個鍵值對,并將其返回
實例
d = {'name':'LBJ','age':23,'addr':'BeiJing'}
print 'd=',d #顯示結果:d= {'age': 23, 'name': 'LBJ', 'addr': 'BeiJing'}
d.clear() ;
print 'd=',d #顯示結果:d= {}
d.update({'name':'LBJ','age':23,'addr':'BeiJing'})
print 'd=',d #顯示結果:d= {'age': 23, 'name': 'LBJ', 'addr': 'BeiJing'}
print 'd.keys()=',d.keys() #顯示結果:d.keys()= ['age', 'name', 'addr']
print 'd.values()=',d.values() #顯示結果:d.values()= [23, 'LBJ', 'BeiJing']
d2 = d.copy()
print 'd2=',d2 #顯示結果:d2= {'age': 23, 'name': 'LBJ', 'addr': 'BeiJing'}
print 'd.popitem()=',d.popitem() #顯示結果:d.popitem()= ('age', 23)
print 'd=',d #顯示結果:d= {'name': 'LBJ', 'addr': 'BeiJing'}
- PC官方版
- 安卓官方手機版
- IOS官方手機版