如何在一次 DNS 查询中获取多条记录
How to get multiple records in one DNS query
这个简单的代码片段使用 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
你不能。查看 code,尤其是 query()
函数中的参数 rdtype
。
first = myResolver.query("google.com", "A")
second = myResolver.query("google.com", "MX")
third = myResolver.query("google.com", "NS")
我认为没有 "any" 选项。这可能是因为 DNS 反射攻击和通过 UDP 的 DNS 查询的安全隐患。可能最好使用如下 'types' 这样的列表:
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('whosebug.com')
由于 DNS 反射 DDoS 攻击的激增,现在 DNS 查询有很多安全措施,因此您可能希望对代码进行速率限制。特别是如果您 运行 针对多个域
这个简单的代码片段使用 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
你不能。查看 code,尤其是 query()
函数中的参数 rdtype
。
first = myResolver.query("google.com", "A")
second = myResolver.query("google.com", "MX")
third = myResolver.query("google.com", "NS")
我认为没有 "any" 选项。这可能是因为 DNS 反射攻击和通过 UDP 的 DNS 查询的安全隐患。可能最好使用如下 'types' 这样的列表:
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('whosebug.com')
由于 DNS 反射 DDoS 攻击的激增,现在 DNS 查询有很多安全措施,因此您可能希望对代码进行速率限制。特别是如果您 运行 针对多个域