mirror of
https://github.com/shmilylty/OneForAll.git
synced 2026-08-26 04:47:48 +08:00
优化
This commit is contained in:
+13
-9
@@ -14,9 +14,10 @@ from config import settings
|
|||||||
|
|
||||||
def get_limit_conn():
|
def get_limit_conn():
|
||||||
limit_open_conn = settings.limit_open_conn
|
limit_open_conn = settings.limit_open_conn
|
||||||
if limit_open_conn is None: # 默认情况
|
if isinstance(limit_open_conn, int):
|
||||||
limit_open_conn = utils.get_semaphore()
|
return max(32, limit_open_conn)
|
||||||
return limit_open_conn
|
else:
|
||||||
|
return utils.get_coroutine_num()
|
||||||
|
|
||||||
|
|
||||||
def get_ports(port):
|
def get_ports(port):
|
||||||
@@ -42,8 +43,8 @@ def gen_req_data(data, ports):
|
|||||||
new_data = []
|
new_data = []
|
||||||
for data in data:
|
for data in data:
|
||||||
resolve = data.get('resolve')
|
resolve = data.get('resolve')
|
||||||
# 解析失败(0)的子域不进行http请求探测
|
# 解析不成功的子域不进行http请求探测
|
||||||
if resolve == 0:
|
if resolve != 1:
|
||||||
continue
|
continue
|
||||||
subdomain = data.get('subdomain')
|
subdomain = data.get('subdomain')
|
||||||
for port in ports:
|
for port in ports:
|
||||||
@@ -169,7 +170,8 @@ def request_callback(future, index, datas):
|
|||||||
else:
|
else:
|
||||||
datas[index]['alive'] = 1
|
datas[index]['alive'] = 1
|
||||||
headers = resp.headers
|
headers = resp.headers
|
||||||
# datas[index]['banner'] = utils.get_sample_banner(headers) 采用webanalyzer的指纹识别 原banner识别弃用
|
# 采用webanalyzer的指纹识别 原banner识别弃用
|
||||||
|
# datas[index]['banner'] = utils.get_sample_banner(headers)
|
||||||
datas[index]['header'] = json.dumps(dict(headers))
|
datas[index]['header'] = json.dumps(dict(headers))
|
||||||
if isinstance(text, str):
|
if isinstance(text, str):
|
||||||
title = get_title(text).strip()
|
title = get_title(text).strip()
|
||||||
@@ -216,11 +218,13 @@ async def bulk_request(data, port):
|
|||||||
headers = utils.get_random_header()
|
headers = utils.get_random_header()
|
||||||
async with ClientSession(connector=connector, headers=headers) as session:
|
async with ClientSession(connector=connector, headers=headers) as session:
|
||||||
tasks = []
|
tasks = []
|
||||||
for i, data in enumerate(to_req_data):
|
for num, data in enumerate(to_req_data):
|
||||||
url = data.get('url')
|
url = data.get('url')
|
||||||
task = asyncio.ensure_future(fetch(session, method, url))
|
task = asyncio.create_task(fetch(session, method, url))
|
||||||
|
task.set_name(f'RequestTask-{num}')
|
||||||
|
# logger.log('TRACE', f'RequestTask-{num} {url}')
|
||||||
task.add_done_callback(functools.partial(request_callback,
|
task.add_done_callback(functools.partial(request_callback,
|
||||||
index=i,
|
index=num,
|
||||||
datas=to_req_data))
|
datas=to_req_data))
|
||||||
tasks.append(task)
|
tasks.append(task)
|
||||||
if tasks:
|
if tasks:
|
||||||
|
|||||||
+16
-37
@@ -146,21 +146,6 @@ def get_domains(target):
|
|||||||
return domains
|
return domains
|
||||||
|
|
||||||
|
|
||||||
def get_semaphore():
|
|
||||||
"""
|
|
||||||
获取查询并发值
|
|
||||||
|
|
||||||
:return: 并发整型值
|
|
||||||
"""
|
|
||||||
system = platform.system()
|
|
||||||
if system == 'Windows':
|
|
||||||
return 800
|
|
||||||
elif system == 'Linux':
|
|
||||||
return 800
|
|
||||||
elif system == 'Darwin':
|
|
||||||
return 800
|
|
||||||
|
|
||||||
|
|
||||||
def check_dir(dir_path):
|
def check_dir(dir_path):
|
||||||
if not dir_path.exists():
|
if not dir_path.exists():
|
||||||
logger.log('INFOR', f'{dir_path} does not exist, directory will be created')
|
logger.log('INFOR', f'{dir_path} does not exist, directory will be created')
|
||||||
@@ -459,8 +444,8 @@ def set_id_none(data):
|
|||||||
def get_filtered_data(data):
|
def get_filtered_data(data):
|
||||||
filtered_data = []
|
filtered_data = []
|
||||||
for item in data:
|
for item in data:
|
||||||
valid = item.get('resolve')
|
resolve = item.get('resolve')
|
||||||
if valid == 0:
|
if resolve != 1:
|
||||||
filtered_data.append(item)
|
filtered_data.append(item)
|
||||||
return filtered_data
|
return filtered_data
|
||||||
|
|
||||||
@@ -504,27 +489,21 @@ def get_process_num():
|
|||||||
|
|
||||||
|
|
||||||
def get_coroutine_num():
|
def get_coroutine_num():
|
||||||
coroutine_num = settings.resolve_coroutine_num
|
mem = psutil.virtual_memory()
|
||||||
if isinstance(coroutine_num, int):
|
total_mem = mem.total
|
||||||
return max(64, coroutine_num)
|
g_size = 1024 * 1024 * 1024
|
||||||
elif coroutine_num is None:
|
if total_mem <= 1 * g_size:
|
||||||
mem = psutil.virtual_memory()
|
return 32
|
||||||
total_mem = mem.total
|
elif total_mem <= 2 * g_size:
|
||||||
g_size = 1024 * 1024 * 1024
|
|
||||||
if total_mem <= 1 * g_size:
|
|
||||||
return 64
|
|
||||||
elif total_mem <= 2 * g_size:
|
|
||||||
return 128
|
|
||||||
elif total_mem <= 4 * g_size:
|
|
||||||
return 256
|
|
||||||
elif total_mem <= 8 * g_size:
|
|
||||||
return 512
|
|
||||||
elif total_mem <= 16 * g_size:
|
|
||||||
return 1024
|
|
||||||
else:
|
|
||||||
return 2048
|
|
||||||
else:
|
|
||||||
return 64
|
return 64
|
||||||
|
elif total_mem <= 4 * g_size:
|
||||||
|
return 128
|
||||||
|
elif total_mem <= 8 * g_size:
|
||||||
|
return 256
|
||||||
|
elif total_mem <= 16 * g_size:
|
||||||
|
return 512
|
||||||
|
else:
|
||||||
|
return 1024
|
||||||
|
|
||||||
|
|
||||||
def uniq_dict_list(dict_list):
|
def uniq_dict_list(dict_list):
|
||||||
|
|||||||
+2
-3
@@ -105,7 +105,6 @@ enable_recursive_search = False # 递归搜索子域(默认False)
|
|||||||
search_recursive_times = 2 # 递归搜索层数(默认2)
|
search_recursive_times = 2 # 递归搜索层数(默认2)
|
||||||
|
|
||||||
# DNS解析设置
|
# DNS解析设置
|
||||||
resolve_coroutine_num = 64
|
|
||||||
resolver_nameservers = [
|
resolver_nameservers = [
|
||||||
'223.5.5.5', # AliDNS
|
'223.5.5.5', # AliDNS
|
||||||
'119.29.29.29', # DNSPod
|
'119.29.29.29', # DNSPod
|
||||||
@@ -151,8 +150,7 @@ allow_redirects = True # 允许请求跳转
|
|||||||
request_method = 'GET' # 使用请求方法,默认GET
|
request_method = 'GET' # 使用请求方法,默认GET
|
||||||
sockread_timeout = 6 # 每个请求socket读取超时时间,默认6秒
|
sockread_timeout = 6 # 每个请求socket读取超时时间,默认6秒
|
||||||
sockconn_timeout = 3 # 每个请求socket连接超时时间,默认3秒
|
sockconn_timeout = 3 # 每个请求socket连接超时时间,默认3秒
|
||||||
# 限制同一时间打开的连接总数
|
limit_open_conn = None # 限制同一时间打开的连接总数,默认None将根据系统内存大小自动设置
|
||||||
limit_open_conn = 800 # 默认800
|
|
||||||
# 限制同一时间在同一个端点((host, port, is_ssl) 3者都一样的情况)打开的连接数
|
# 限制同一时间在同一个端点((host, port, is_ssl) 3者都一样的情况)打开的连接数
|
||||||
limit_per_host = 10 # 0表示不限制,默认10
|
limit_per_host = 10 # 0表示不限制,默认10
|
||||||
|
|
||||||
@@ -169,6 +167,7 @@ headers = {
|
|||||||
'Accept-Encoding': 'gzip, deflate',
|
'Accept-Encoding': 'gzip, deflate',
|
||||||
'Accept-Language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7',
|
'Accept-Language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7',
|
||||||
'Cache-Control': 'max-age=0',
|
'Cache-Control': 'max-age=0',
|
||||||
|
'Connection': 'close',
|
||||||
'DNT': '1',
|
'DNT': '1',
|
||||||
'Referer': 'https://www.google.com/',
|
'Referer': 'https://www.google.com/',
|
||||||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
|
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
|
||||||
|
|||||||
+1
-2
@@ -97,7 +97,6 @@ aiohttp_proxy = None # 示例 proxy="http://user:pass@some.proxy.com"
|
|||||||
# 为了保证请求质量 请谨慎更改以下设置
|
# 为了保证请求质量 请谨慎更改以下设置
|
||||||
sockread_timeout = 6 # 每个请求socket读取超时时间,默认6秒
|
sockread_timeout = 6 # 每个请求socket读取超时时间,默认6秒
|
||||||
sockconn_timeout = 3 # 每个请求socket连接超时时间,默认3秒
|
sockconn_timeout = 3 # 每个请求socket连接超时时间,默认3秒
|
||||||
# 限制同一时间打开的连接总数
|
limit_open_conn = None # 限制同一时间打开的连接总数,默认None将根据系统内存大小自动设置
|
||||||
limit_open_conn = 800 # 默认800
|
|
||||||
# 限制同一时间在同一个端点((host, port, is_ssl) 3者都一样的情况)打开的连接数
|
# 限制同一时间在同一个端点((host, port, is_ssl) 3者都一样的情况)打开的连接数
|
||||||
limit_per_host = 10 # 0表示不限制,默认10
|
limit_per_host = 10 # 0表示不限制,默认10
|
||||||
|
|||||||
Reference in New Issue
Block a user