1

我正在使用dnspython进行 DNS 查询。由于我的机器加入了我公司的域,因此公司域是我的搜索域的一部分。但是,我NEVER希望在对主机名进行正向查找时附加该域。

我采取的一种按值删除不需要的名称服务器的方法如下:

import dns.resolver

my_resolver = dns.resolver.Resolver()
my_resolver.nameservers.remove('172.20.10.1')

不幸的是,我不能采用与 for 相同的方法(或者我不知道如何),my_resolver.search因为它的元素是<class 'dns.name.Name'>实例而不是字符串。

由于我的公司域似乎是my_resolver.search我删除它的最后一个元素,如下所示:del my_resolver.search[-1]. 但是我想按值删除它,我该怎么做,最好不要遍历my_resolver.search.

4

1 回答 1

0

但是我想按值删除它,我该怎么做,最好不要遍历 my_resolver.search

只需从您拥有的字符串创建一个dns.name.Name

例如:

import dns.name
import dns.resolver

my_resolver = dns.resolver.Resolver()

name_to_remove = 'example.com'
name = dns.name.from_text(name_to_remove)
my_resolver.search.remove(name)

您还可以使用dns.query.udp()和其他相关功能来代替dns.resolver.Resolver.query(). 然后,如果您确实需要搜索名称,例如,您可以在 for 循环中手动添加您想要的任何搜索名称。这正是他们在 Resolver 类中的做法(参见https://github.com/rthalley/dnspython/blob/57d38840f3cb59b838e49fe65caa6062a0904832/dns/resolver.py#L892)。

于 2020-04-18T01:59:57.667 回答