Skip to content

Instantly share code, notes, and snippets.

@hzbd
Created January 11, 2022 13:22
Show Gist options
  • Select an option

  • Save hzbd/afa6f083c4988baada8b5eec144605c5 to your computer and use it in GitHub Desktop.

Select an option

Save hzbd/afa6f083c4988baada8b5eec144605c5 to your computer and use it in GitHub Desktop.
dns resolver kit.
# -*- coding:utf-8 -*-
import dns
import dns.query
import dns.resolver
import logging
logger = logging.getLogger(__name__)
class Digger(object):
def __init__(self, resolvers=["1.1.1.1"]):
self.mResolver = dns.resolver.Resolver()
self.mResolver.timeout = 1
self.mResolver.lifetime = 0.5
self.mResolver.nameservers = resolvers
def query(self, domain, query_type="A"):
try:
answer = self.mResolver.resolve(domain, query_type, raise_on_no_answer=False)
records = [data.address for data in answer]
return records
except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer,
dns.resolver.NoNameservers, dns.exception.Timeout) as error:
logger.warning("{} resolved error {}".format(domain, error))
return
def is_valid(self, domain, query_type="A"):
try:
self.mResolver.resolve(domain, query_type, raise_on_no_answer=False)
return True
except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer,
dns.resolver.NoNameservers, dns.exception.Timeout) as error:
logger.warning("{} resolved error {}".format(domain, error))
return
if __name__ == '__main__':
dig = Digger()
print(dig.query("google.com"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment