Python的dnspython庫使用指南

2022-06-30 23:33:13 字數 3729 閱讀 8524

因為平時在測試dns的時候有些操作手動完成不方便,所以需要用到指令碼,而在python裡dnspython這個用於dns操作的庫十分強大,但是無奈網上大部分資料只列舉了少部分的用法,所以記錄一下我平時使用到的功能,基本上已經能應付大部分的使用場景了。想具體了解dnspython可以登入官方**閱讀使用文件.

最常用的用法是呼叫預設的resolver傳送解析請求,如

結果為

('

qname:

', )('

reclass:

', 1)('

rdtype:

', 1)('

rrset:

', )('

response:

', )

在這裡解析任務預設傳送給系統預設的dns伺服器,其中比較重要的是response,在dnspython的官方文件裡,response屬於類dns.message.message,這個類也是許多dns query請求的返回結果,下面詳細介紹下這個類。

類的主要成員變數有:

int flags   #

the dns flags of the message.

int id #

the query id; the default is a randomly chosen id.

list of rrset addictional

list of rrset answer

list of rrset authority

flags屬於返回dns報文的標誌位(詳見《tcp/ip詳解(卷一)》關於dns的部分),可以利用以下**列印dns報文的各個標誌位:

返回結果為:

flag: aa rd qr ra

另外乙個比較重要的類就是rrset,通常返回的三個section資訊都使用這個類封裝,常用的用法是使用類函式to_text()令解析結果以字串形式顯示。如:

結果為:

使用例項:

a記錄查詢

#

!/usr/bin/env python

import

dns.resolver

domain = raw_input('

please input an domain: ')

a = dns.resolver.query(domain, 'a'

)  for i in

a.response.answer:

for j in

i.items:

print j.address

mx記錄查詢(注意輸入網域名稱不包括www)

#

!/usr/bin/env python

import

dns.resolver

domain = raw_input('

please input an domain: ')

mx = dns.resolver.query(domain, 'mx'

)for i in

mx:  

print

'mx preference =

', i.preference, '

mail exchanger =

', i.exchange

ns記錄查詢

#

!/usr/bin/env python

import

dns.resolver

domain = raw_input('

please input an domain: ')

ns = dns.resolver.query(domain, 'ns'

)for i in

ns.response.answer:

for j in

i.items:

print j.to_text()

cname記錄查詢

#

!/usr/bin/env python

import

dns.resolver

domain = raw_input('

please input an domain: ')

cname = dns.resolver.query(domain, '

cname')

for i in

cname.response.answer:

for j in

i.items:

print j.to_text()

python的包 python的包

1.把解決一類問題的模組放在同乙個資料夾裡,這個資料夾就是包 2.通過import或是from.import匯入時必須遵循乙個原則 a 凡是在匯入時帶點的,點的左邊都必須是乙個包,否則非法 b 匯入後,使用時點的左邊可以是包,模組,類,函式 它們都可以用點的方式調節用自己的屬性 c from.imp...

python的語句 Python的語句

python中的兩種語句 1 if條件控制語句 格式 if a int input 請輸入第乙個數 b int input 請輸入第二個數 if a b print a比b小 if else a int input 請輸入第乙個數 b int input 請輸入第二個數 if a b print a...

Python(四)python的注釋

一 python單行注釋符號 python中單行注釋採用 開頭二 批量 多行注釋符號 多行注釋是用三引號 包含的,例如 三 python中文注釋方法 如果檔案裡有非ascii字元,需要在第一行或第二行指定編碼宣告。把chinesetest.py檔案的編碼重新改為ansi,並加上編碼宣告 一定要在第一...