如何在一个DNS查询中获取多个记录

时间:2018-04-11 05:22:34

标签: python sockets dns dnspython

这个使用dnspython代码的简单代码段将名称解析为IP。

在此example中,域名为google.com,答案为A记录。如何在一个查询中获取多个记录(例如TXT,CNAME,..)?

from dns.resolver import dns

myResolver = dns.resolver.Resolver() #create a new instance named 'myResolver'
myAnswers = myResolver.query("google.com", "A") #Lookup the 'A' record(s) for google.com
for rdata in myAnswers: #for each response
    print (rdata) #print the data

2 个答案:

答案 0 :(得分:0)

你不能。请查看code,尤其是rdtype函数中的参数query()

first = myResolver.query("google.com", "A")
second = myResolver.query("google.com", "MX")
third = myResolver.query("google.com", "NS")

答案 1 :(得分:0)

我认为没有"任何"选项。这可能是因为DNS反射攻击和UDP上的DNS查询的安全隐患。可能最好使用类似'类型的列表。下面:

import dns.resolver

def get_domain():
    types=[
        'A',
        'TXT',
        'CNAME',
        'NS',
    ]
    for type in types:
        try: 
            reponse = dns.resolver.query('domain.com', type)
            for data in response:
                print (type, "-", data.to_text())
            except Exception as err:
                print(err)

if __name__ == '__main__':
    get_domain('stackoverflow.com')
由于DNS反射DDoS攻击的激增,现在DNS查询存在很多安全性,因此您可能希望对代码进行速率限制。特别是如果您针对多个域运行此操作