0

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

在此示例中,域是google.comA 记录的答案。如何在一个查询中获取多条记录(例如 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
4

2 回答 2

0

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

first = myResolver.query("google.com", "A")
second = myResolver.query("google.com", "MX")
third = myResolver.query("google.com", "NS")
于 2018-04-11T05:42:31.470 回答
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 查询有很多安全性,因此您可能希望对代码进行速率限制。特别是如果您针对多个域运行此程序

于 2018-04-11T05:55:00.850 回答