J'utilise dns.resolver
de dnspython .
Est-il possible de définir l'adresse IP du serveur à utiliser pour les requêtes?
Bien que ce soit un peu un vieux fil, je vais me lancer. Je me suis heurté au même défi et je pensais partager la solution. Donc, fondamentalement, le fichier de configuration renseignerait la variable d'instance 'nameservers' du fichier dns.resolver.Resolver que vous utilisez. Par conséquent, si vous voulez contraindre votre résolveur à utiliser un serveur de noms particulier, vous pouvez le faire directement comme ceci:
import dns.resolver
my_resolver = dns.resolver.Resolver()
# 8.8.8.8 is Google's public DNS server
my_resolver.nameservers = ['8.8.8.8']
answer = my_resolver.query('google.com')
J'espère que quelqu'un le trouvera utile.
Oui, ça l'est.
Si vous utilisez la fonction pratique dns.resolver.query()
comme ceci
import dns.resolver
r = dns.resolver.query('example.org', 'a')
vous pouvez réinitialiser le résolveur par défaut tel qu'un serveur de noms spécifique (ou une liste) est utilisé, par exemple:
import dns.resolver
dns.resolver.default_resolver = dns.resolver.Resolver(configure=False)
dns.resolver.default_resolver.nameservers = ['8.8.8.8', '2001:4860:4860::8888',
'8.8.4.4', '2001:4860:4860::8844' ]
r = dns.resolver.query('example.org', 'a')
Ou vous pouvez utiliser un objet résolveur distinct uniquement pour certaines requêtes:
import dns.resolver
res = dns.resolver.Resolver(configure=False)
res.nameservers = [ '8.8.8.8', '2001:4860:4860::8888',
'8.8.4.4', '2001:4860:4860::8844' ]
r = res.query('example.org', 'a')
Vous ne spécifiez pas dans votre question, mais en supposant que vous utilisez le résolveur de dnspython.org , la documentation indique que vous souhaitez définir l'attribut nameservers
sur l'objet Resolver.
Bien qu’il soit peut-être plus facile de fournir un fichier /etc/resolv.conf-style à transmettre à l’argument argument filename
du constructeur .