我需要一个dns查询功能来查询服务器上的各种记录。我找到了如何获取MX记录(大多数示例都显示了这一点)、记录和NS记录。如何获取TXT、CNAME和SOA记录?
示例代码段:
import dns.resolver
answer=dns.resolver.query("google.com", "A")
for data in answer:
print data.address
我尝试将查询类型替换为TXT,将data.address对象替换为data.text、data.data等,但最终出现了属性错误。我前面提到的数据类型的引用是什么?
使用前面的答案示例,使用以下命令创建dnsdig.py文件:
运行:
(回答如何计算返回的数据)
您可以以类似的方式获取TXT、CNAME和SOA记录,但您只需根据DNS响应对象获取正确的属性。
使用python dir()内置是您的朋友,也是了解DNS响应对象中存在哪些属性的一种方法-在API文档不可用时非常方便。
要找出适当的属性,请将for循环临时更改为以下内容:
另一个更快的方法是查看dnspython的API文档,这些页面列出了每个返回对象的属性。
最后,如果库在python中或者不在python中,那么可以查看源代码,如果C代码可用。
(回答你的问题:)
以下是TXT、CNAME和SOA查询的示例:
文本
http://www.dnspython.org/docs/1.15.0/dns.rdtypes.txtbase.TXTBase-class.html#section-InstanceVariables
CNAME公司
http://www.dnspython.org/docs/1.15.0/dns.rdtypes.ANY.CNAME.CNAME-class.html
SOA
http://www.dnspython.org/docs/1.15.0/dns.rdtypes.ANY.SOA.SOA-class.html#section-InstanceVariables
你可以尝试一些不同的东西。
不必每次查询每种记录类型,您可以对任何记录进行一次查询。 这样,如果该域同时具有TXT、CNAME等。。。你将得到一个包含所有数据的对象。
希望这对你有帮助。
相关问题 更多 >
编程相关推荐