2015-08-31 2 views
1

Как мы делаем запрос DNS, прежде всего MX-запрос, в Python, не устанавливая какие-либо сторонние библиотеки.Как мы выполняем DNS-запрос в Python

Я хочу запросить запись MX о домене, однако кажется, что socket.getaddrinfo может запрашивать только запись A.

Я попытался это:

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 25 или telnet 123.125.114.144 25 или telnet 180.149.132.47 25.

+1

Вы можете показать, что Вы пробовали до сих пор. . :) .. Если бы не пробовал ничего, а затем попробовал посмотреть на эту конкретную ссылку http://www.dnspython.org/examples.html. Я надеюсь, что это поможет – csharpcoder

+0

@csharpcode, я обновил вопрос. Я искал эту dnspython lib. Тем не менее, я думаю, возможно, у 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 
Смежные вопросы