2015-08-31 55 views
1

我們如何做一個DNS查詢,expecially MX查詢,在Python DNS查詢。我們如何通過不安裝任何第三方庫做在Python

我想查詢有關域的MX記錄,但是,似乎socket.getaddrinfo只能查詢的記錄。

我已經試過這樣:

python -c "import socket; print socket.getaddrinfo('baidu.com', 25, socket.AF_INET, socket.SOCK_DGRAM)" 

這將打印

[(2, 2, 17, '', ('220.181.57.217', 25)), (2, 2, 17, '', ('123.125.114.144', 25)), (2, 2, 17, '', ('180.149.132.47', 25))] 

然而,我們不能telnet 220.181.57.217 25telnet 123.125.114.144 25telnet 180.149.132.47 25 telnet來訪問它。

+1

你能告訴你有什麼到目前爲止已經試過。 。:)如果沒有嘗試過任何東西,然後嘗試看看這個特定的鏈接http://www.dnspython.org/examples.html。我希望這可以幫助 – csharpcoder

+0

@csharpcode,我已經更新了這個問題。我搜索了dnspython庫。不過,我想也許python裏面有一些dns功能,即使它很差。 – andy

+0

沒有辦法,據我所知。 DNS解析很複雜,你需要一個專門的軟件包,比如dnspython。 'socket.getaddrinfo'實際上是一個包裝周圍的libc'getaddrinfo',這樣你就不會做DNS解析,但訪問OS解析器堆棧(可能包括DNS解析,但不是唯一的。) –

回答

1

首先安裝dnspython

import dns.resolver 

answers = dns.resolver.query('dnspython.org', 'MX') 
for rdata in answers: 
    print 'Host', rdata.exchange, 'has preference', rdata.preference 
相關問題