import asyncio import random import logging import config logger = logging.getLogger(__name__) async def micro_delay(action_type: str = "between_requests"): """ 提供细微的随机抖动延迟,以打破机器自动化死板均匀的请求间隔 """ if not config.STEALTH_MODE: return base_min = config.STEALTH_MIN_DELAY base_max = config.STEALTH_MAX_DELAY # 根据 action 稍微做一点权重偏移,避免全部都随机均匀分布 if action_type == "click": # 点击提交按钮/页面跳转,时间可以稍微短点 delay = random.uniform(base_min, base_max * 0.8) elif action_type == "typing": # 敲击回车等 delay = random.uniform(base_min * 0.5, base_max * 0.5) else: # between_requests # 网络连接/后台操作之间 delay = random.uniform(base_min, base_max) # 进一步加一点基于正态分布的抖动限制,使它表现更接近人的生理方差 # 这里通过限制下限来防低于0 final_delay = max(0.01, random.gauss(delay, (base_max - base_min) * 0.2)) logger.debug(f"Stealth jitter delay ({action_type}): {final_delay:.3f}s") await asyncio.sleep(final_delay)