(回答如何确定返回的数据)
你可以以类似的方式获取TXT、CNAME和SOA记录,但是你必须根据DNS响应对象获取正确的属性。
使用Python内置的dir()方法可以帮助你找出DNS响应对象中存在的属性 - 当API文档不可用时非常方便。为了找出合适的属性,暂时将你的for循环更改为以下内容:
for data in answer:
print dir(data)
另一种更快的方法是查看dnspython的API文档,这些页面列出了每个返回对象的属性。
最后,如果库是Python编写的,或者C代码可用,您可以查看源代码。
(回答您的问题)
以下是TXT、CNAME和SOA查询的示例:
TXT
http://www.dnspython.org/docs/1.15.0/dns.rdtypes.txtbase.TXTBase-class.html#section-InstanceVariables
answers = dns.resolver.query('google.com', 'TXT')
print ' query qname:', answers.qname, ' num ans.', len(answers)
for rdata in answers:
for txt_string in rdata.strings:
print ' TXT:', txt_string
CNAME
http://www.dnspython.org/docs/1.15.0/dns.rdtypes.ANY.CNAME.CNAME-class.html
answers = dns.resolver.query('mail.google.com', 'CNAME')
print ' query qname:', answers.qname, ' num ans.', len(answers)
for rdata in answers:
print ' cname target address:', rdata.target
SOA
http://www.dnspython.org/docs/1.15.0/dns.rdtypes.ANY.SOA.SOA-class.html#section-InstanceVariables
answers = dns.resolver.query('google.com', 'SOA')
print 'query qname:', answers.qname, ' num ans.', len(answers)
for rdata in answers:
print ' serial: %s tech: %s' % (rdata.serial, rdata.rname)
print ' refresh: %s retry: %s' % (rdata.refresh, rdata.retry)
print ' expire: %s minimum: %s' % (rdata.expire, rdata.minimum)
print ' mname: %s' % (rdata.mname)