From 1463e8bfa657c7db3d83b3c81f0e36711bce00a4 Mon Sep 17 00:00:00 2001 From: ValdikSS Date: Sat, 30 Jul 2022 15:25:16 +0300 Subject: [PATCH] Filter out expired and parked domains in domain resolver --- scripts/resolve-dns-nxdomain.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/resolve-dns-nxdomain.py b/scripts/resolve-dns-nxdomain.py index b00ad8f..b947d91 100755 --- a/scripts/resolve-dns-nxdomain.py +++ b/scripts/resolve-dns-nxdomain.py @@ -4,6 +4,7 @@ import sys import os import asyncio import dns.resolver +import dns.rdatatype import dns.asyncresolver import dns.exception import dns._asyncio_backend @@ -19,6 +20,10 @@ FINAL_PASS_TIMEOUT = 10 FINAL_PASS_CONCURRENCY = 35 +NS_FILTER_SUBSTRINGS = ("parking", "expired", ".afternic.com", "parklogic", ".parktons.com", + ".above.com", ".ztomy.com", ".notneiron.com", ".ibspark.com", ".bodis.com", + ".example.com") + class AZResolver(dns.asyncresolver.Resolver): def __init__(self, *args, **kwargs): self.limitConcurrency(25) # default limit @@ -31,7 +36,11 @@ class AZResolver(dns.asyncresolver.Resolver): async with self.limitingsemaphore: try: #print(domain, file=sys.stderr) - await self.resolve(domain) + domain_nses = await self.resolve(domain, dns.rdatatype.NS) + for ns in domain_nses: + # Filter out expired and parked domains + if any(filtered_substr in str(ns) for filtered_substr in NS_FILTER_SUBSTRINGS): + return domain except (dns.exception.Timeout, dns.resolver.NXDOMAIN, dns.resolver.YXDOMAIN, dns.resolver.NoNameservers):