43 lines
950 B
Python
43 lines
950 B
Python
#!/usr/bin/env python3
|
|
|
|
# Using Discovery of Designated Resolvers (synchronous I/O)
|
|
|
|
import dns.resolver
|
|
|
|
res = dns.resolver.Resolver(configure=False)
|
|
res.nameservers = ["1.1.1.1"]
|
|
# Invoke try_ddr() to attempt to upgrade the connection via DDR
|
|
res.try_ddr()
|
|
# Do a sample resolution
|
|
for rr in res.resolve("www.google.com", "A"):
|
|
print(rr.address)
|
|
# Note that the nameservers have been upgraded
|
|
print(res.nameservers)
|
|
|
|
|
|
# Using Discovery of Designated Resolvers (asynchronous I/O)
|
|
|
|
# We show using asyncio, but if you comment out asyncio lines
|
|
# and uncomment the trio lines, it will work with trio too.
|
|
|
|
import asyncio
|
|
|
|
# import trio
|
|
|
|
import dns.asyncresolver
|
|
|
|
|
|
async def amain():
|
|
res = dns.asyncresolver.Resolver(configure=False)
|
|
res.nameservers = ["8.8.8.8"]
|
|
await res.try_ddr()
|
|
|
|
for rr in await res.resolve("www.google.com", "A"):
|
|
print(rr.address)
|
|
|
|
print(res.nameservers)
|
|
|
|
|
|
asyncio.run(amain())
|
|
# trio.run(amain)
|