使っています dns.resolver
from dnspython 。
クエリに使用するサーバーのIPアドレスを設定することは可能ですか?
これは多少古いスレッドですが、私は飛び込みます。同じ課題にぶつかったので、解決策を共有したいと思いました。したがって、基本的に設定ファイルは、使用しているdns.resolver.Resolverの「nameservers」インスタンス変数に値を設定します。したがって、特定のネームサーバーを使用するようにリゾルバーを強制したい場合は、次のように直接行うことができます。
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')
誰かがそれが便利だと思うことを願っています。
はい、そうです。
このように便利な関数dns.resolver.query()
を使うと
import dns.resolver
r = dns.resolver.query('example.org', 'a')
このような特定のネームサーバー(またはリスト)が使用されるように、デフォルトのリゾルバーを再初期化できます。例:
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')
または、いくつかのクエリに対してのみ別のリゾルバオブジェクトを使用できます。
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')
質問では指定していませんが、 dnspython.orgからのリゾルバー を使用していると仮定すると、ドキュメントは nameservers
を設定することを示していますResolverオブジェクトの属性。
コンストラクタのfilename
引数 に渡す/etc/resolv.confスタイルのファイルを提供する方が簡単かもしれませんが。