mirror of
https://github.com/shmilylty/OneForAll.git
synced 2026-08-26 04:47:48 +08:00
优化泛解析探测
This commit is contained in:
+7
-6
@@ -26,7 +26,7 @@ from common.module import Module
|
|||||||
from config import logger
|
from config import logger
|
||||||
|
|
||||||
|
|
||||||
@tenacity.retry(reraise=True, stop=tenacity.stop_after_attempt(3))
|
@tenacity.retry(stop=tenacity.stop_after_attempt(3))
|
||||||
def do_query_a(domain, resolver):
|
def do_query_a(domain, resolver):
|
||||||
try:
|
try:
|
||||||
answer = resolver.query(domain, 'A')
|
answer = resolver.query(domain, 'A')
|
||||||
@@ -75,9 +75,9 @@ def detect_wildcard(domain, authoritative_ns):
|
|||||||
resolver.cache = None
|
resolver.cache = None
|
||||||
try:
|
try:
|
||||||
wildcard = do_query_a(random_subdomain, resolver)
|
wildcard = do_query_a(random_subdomain, resolver)
|
||||||
except Timeout as e:
|
except Exception as e:
|
||||||
logger.log('DEBUG', e.args)
|
logger.log('DEBUG', e.args)
|
||||||
logger.log('ALERT', f'多次探测超时暂且认为{domain}没有使用泛解析')
|
logger.log('ALERT', f'多次探测出错暂且认为{domain}没有使用泛解析')
|
||||||
return False
|
return False
|
||||||
else:
|
else:
|
||||||
return wildcard
|
return wildcard
|
||||||
@@ -166,7 +166,7 @@ def query_domain_ns(domain):
|
|||||||
return ns
|
return ns
|
||||||
|
|
||||||
|
|
||||||
@tenacity.retry(reraise=True, stop=tenacity.stop_after_attempt(2))
|
@tenacity.retry(stop=tenacity.stop_after_attempt(2))
|
||||||
def get_wildcard_record(domain, resolver):
|
def get_wildcard_record(domain, resolver):
|
||||||
logger.log('INFOR', f'查询{domain}在权威DNS名称服务器的泛解析记录')
|
logger.log('INFOR', f'查询{domain}在权威DNS名称服务器的泛解析记录')
|
||||||
try:
|
try:
|
||||||
@@ -205,15 +205,16 @@ def collect_wildcard_record(domain, authoritative_ns):
|
|||||||
resolver.rotate = True
|
resolver.rotate = True
|
||||||
resolver.cache = None
|
resolver.cache = None
|
||||||
ips = set()
|
ips = set()
|
||||||
|
ttl = int()
|
||||||
ips_stat = dict()
|
ips_stat = dict()
|
||||||
while True:
|
while True:
|
||||||
token = secrets.token_hex(4)
|
token = secrets.token_hex(4)
|
||||||
random_subdomain = f'{token}.{domain}'
|
random_subdomain = f'{token}.{domain}'
|
||||||
try:
|
try:
|
||||||
ip, ttl = get_wildcard_record(random_subdomain, resolver)
|
ip, ttl = get_wildcard_record(random_subdomain, resolver)
|
||||||
except Timeout as e:
|
except Exception as e:
|
||||||
logger.log('DEBUG', e.args)
|
logger.log('DEBUG', e.args)
|
||||||
logger.log('ALERT', f'多次查询超时将尝试查询新的随机子域')
|
logger.log('ALERT', f'多次查询出错将尝试查询新的随机子域')
|
||||||
continue
|
continue
|
||||||
if ip is None:
|
if ip is None:
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user