Spaces:
Sleeping
Sleeping
| 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) | |