Как удалить поисковый домен по имени из распознавателя в днс python? - PullRequest
1 голос
/ 17 апреля 2020

Я использую днс python для проведения DNS-запросов. Поскольку мой компьютер присоединен к домену моей компании, корпоративный домен является частью моих поисковых доменов. Однако я NEVER хочу, чтобы этот домен добавлялся, когда я выполняю прямой поиск по именам хостов.

Подход, который я использовал для удаления нежелательных серверов имен по значению, заключается в следующем:

import dns.resolver

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

К сожалению, я не могу использовать тот же подход (или не знаю как) с для my_resolver.search, потому что его элементы являются <class 'dns.name.Name'> экземплярами, а не строками.

Поскольку мой корпоративный домен кажется последним элементом в my_resolver.search, я удаляю его так: del my_resolver.search[-1]. Но я хочу удалить его по значению, как я могу это сделать, желательно без итерации по my_resolver.search.

1 Ответ

0 голосов
/ 18 апреля 2020

Но я хочу удалить его по значению, как я могу это сделать, желательно без перебора 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(). Затем, если вам действительно нужны имена для поиска, вы можете вручную добавить любые имена для поиска, например, для l oop. Именно так они и делают в классе Resolver (см. https://github.com/rthalley/dnspython/blob/57d38840f3cb59b838e49fe65caa6062a0904832/dns/resolver.py#L892).

...