Как проверить значение записи DNS TXT для хоста?

Я хочу проверить право собственности на домен через скрипт, в частности скрипт Python, и хотел бы знать, как искать значение записи DNS TXT. Я знаю, что для этого есть службы и сайты, но я хотел бы сделать это со сценарием.

Это легко использовать dnspython . Вот пример:

import dns.resolver for txtrecord in dns.resolver.query('google.com', 'TXT').answer.response: print txtrecord.to_text() 

Это дает следующий результат:

 'google.com. 1700 IN TXT "v=spf1 include:_netblocks.google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all"' 

Другой вариант – использовать dig в подпроцессе:

 import subprocess print subprocess.Popen(['dig', '-t', 'TXT', 'google.com', '+short'], stdout=subprocess.PIPE).communicate()[0] 

Это может быть чрезмерно упрощено, но если все, что вам нужно, это быстрое чтение записи TXT и не против иметь дело с разбором результата отдельно:

 nslookup -q=txt somedomain.com 

Я нашел, что сделал то, что мне было нужно, короткое и сладкое.

Что-то вроде этого должно работать, по крайней мере, для получения значения для URL-адреса, я использовал google.com для примера.

 import pycurl import StringIO url = "whatsmyip.us/dns_txt.php?host=google.com" c = pycurl.Curl() c.setopt(pycurl.URL, url) c.setopt(pycurl.HTTPHEADER, ["Accept:"]) txtcurl = StringIO.StringIO() c.setopt(pycurl.WRITEFUNCTION, txtcurl.write) c.perform data = txtcurl.getvalue() data = data.replace("Done!", "") print data 

Я не тестировал это, но вытащил его из предыдущего проекта.

Удачи!