-
Notifications
You must be signed in to change notification settings - Fork 318
Open
Description
功能描述
添加随机延迟功能以增强窗口同步的模拟真实性,减少检测风险。
需求详情
- 在同步功能中添加可配置的随机延迟选项
- 在设置界面添加延迟控制面板
- 支持启用/禁用延迟功能
- 允许用户设置延迟范围(毫秒)
- 配置需要保存到 settings.json
具体修改
- UI修改
# 在 ChromeManager 类的 __init__ 方法中添加配置变量
self.sync_delay_enabled = tk.BooleanVar(value=False)
self.min_delay = tk.StringVar(value="50")
self.max_delay = tk.StringVar(value="150")- 设置界面修改
# 在 show_settings_dialog 方法中添加延迟设置面板
delay_frame = ttk.LabelFrame(function_frame, text="同步延迟设置", padding=10)
delay_frame.pack(fill=tk.X, pady=5)
# 启用延迟复选框
delay_check = ttk.Checkbutton(
delay_frame,
text="启用随机延迟",
variable=self.sync_delay_enabled
)
delay_check.pack(anchor=tk.W)
# 延迟范围设置
delay_range_frame = ttk.Frame(delay_frame)
delay_range_frame.pack(fill=tk.X, pady=5)
ttk.Label(delay_range_frame, text="延迟范围(毫秒):").pack(side=tk.LEFT)
ttk.Entry(delay_range_frame, width=8, textvariable=self.min_delay).pack(side=tk.LEFT, padx=5)
ttk.Label(delay_range_frame, text="至").pack(side=tk.LEFT, padx=5)
ttk.Entry(delay_range_frame, width=8, textvariable=self.max_delay).pack(side=tk.LEFT, padx=5)- 事件处理修改
# 在 on_keyboard_event 和 on_mouse_event 方法中添加延迟处理
if self.sync_delay_enabled.get():
try:
min_delay = int(self.min_delay.get()) / 1000 # 转换为秒
max_delay = int(self.max_delay.get()) / 1000
if min_delay > 0 and max_delay >= min_delay:
time.sleep(random.uniform(min_delay, max_delay))
except ValueError:
pass # 忽略转换错误- 配置保存修改
# 在 save_settings 方法中添加
settings['sync_delay_enabled'] = self.sync_delay_enabled.get()
settings['min_delay'] = self.min_delay.get()
settings['max_delay'] = self.max_delay.get()
# 在 load_settings 方法中添加
if 'sync_delay_enabled' in settings:
self.sync_delay_enabled.set(settings['sync_delay_enabled'])
if 'min_delay' in settings:
self.min_delay.set(settings['min_delay'])
if 'max_delay' in settings:
self.max_delay.set(settings['max_delay'])测试步骤
- 验证设置界面正确显示延迟控制选项
- 确认可以正常启用/禁用延迟功能
- 验证延迟范围设置的有效性
- 测试同步过程中的延迟效果
- 确认设置能正确保存和加载
注意事项
- 延迟范围需要限制在合理区间(建议50-1000ms)
- 需要处理无效的延迟输入值
- 确保不影响现有的同步功能正常使用
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels