暂停开发
引言
闲着无聊写一款能实时查询(视奸)博主状态的小玩意,开发这个小软件是看到“锦木祈杰”博客里的“视奸祈杰”的网站,看起来还挺好玩的,就花了几天时间研究一下怎么写。监听端是采用Python,本来想用C++,奈何太菜了。目前只开发了监听端,Web端还在想怎么设计。本程序纯属娱乐,后面可能会开源,反正写的很烂~
介绍
SG7Z-Peek 是一个 Windows 平台的应用使用时长监控工具,能够自动记录前台应用程序的使用时间,并将数据上传到 MySQL 数据库。支持系统工具监控、隐私保护模式、硬件信息采集、虚拟机检测等高级功能
已开发
- 新项目“ShiJian”开发
- [ShiJian] 已完成的模块 - 260111
- [ShiJian] 已完成的模块 - 260112-01
- [ShiJian] 已完成的模块 - 260112-02
- [ShiJian] 已完成的模块 - 260115
- [ShiJian] 今日已完成 - 260116
待开发
- Linux 端
- C++ 端
功能特性
- 前台应用监控:实时检测并记录前台应用程序的使用时间
- 鼠标活动检测:智能判断用户是否活跃,避免长时间空闲被记录
- 键盘活动检测:监听键盘按键,判断用户是否活跃
- 长时间无操作检测:当鼠标和键盘都长时间无操作时,自动中断记录并上传
- 系统工具监控:支持 notepad.exe、cmd.exe、powershell.exe 等系统工具的记录
- 数据库自动上传:使用连接池管理,支持网络故障自动重连
- 应用状态恢复:程序重启后恢复上次运行的应用状态
- 隐私保护模式:支持数据加密和敏感信息脱敏
- 硬件信息采集:自动采集 CPU ID、主板序列号、BIOS 序列号
- 设备指纹生成:使用 SHA256 算法生成唯一设备标识
- 虚拟机检测:多维度检测虚拟机环境
- 看门狗机制:系统资源监控和进程健康检查
- 连接池管理:数据库连接池,支持自动重连和健康检查
项目结构
ShiJian/
├── Main.py # 主程序入口
├── Config.py # 配置文件
├── DBPool.py # 数据库连接池
├── Watchdog.py # 看门狗和虚拟机检测
├── Privacy.py # 隐私保护模块
├── hardware_info.py # 硬件信息采集
├── requirements.txt # 依赖列表
├── README.md # 项目说明
├── dist/ # 打包输出目录
│ └── ShiJian.exe
└── .venv/ # 虚拟环境环境要求
开发环境:
- 语言:Python 3.14.0
- 系统:Windows 11
- 软件:Visual Studio Code
运行环境:
- 语言:Python 3.14.0
- 系统:Windows 11
- 数据库:8.0+安装步骤
1. 克隆项目
git clone 2. 创建&激活虚拟环境
创建:python -m venv .venv
激活:.venv\Scripts\activate3. 安装依赖
# requirements.txt 安装
pip install -r requirements.txt
# 手动命令安装:
pip install pywin32 wmi pymysql psutil pyinstaller配置数据库
编辑 `Config.py` 文件,配置数据库连接信息:
DB_CONFIG = {
'host': 'localhost',
'port': 3306,
'user': 'your_username',
'password': 'your_password',
'database': 'your_database'
}创建数据表
程序会自动创建数据表,无需手动创建,只需要准备数据库即可,表结构如下:
CREATE TABLE IF NOT EXISTS `{table_name}` (
id INT AUTO_INCREMENT PRIMARY KEY,
device_id CHAR(64) NOT NULL,
app_name VARCHAR(255) NOT NULL,
exe_path VARCHAR(512) NOT NULL,
pid INT,
start_time DATETIME NOT NULL,
end_time DATETIME NOT NULL,
duration INT NOT NULL,
created_date DATE NOT NULL,
INDEX idx_exe_path (exe_path),
INDEX idx_created_date (created_date),
INDEX idx_device_id (device_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4配置说明
# Config.py 主要配置项
```python
# 数据库配置
DB_CONFIG = {
'host': 'localhost',
'port': 3306,
'user': 'root',
'password': 'password',
'database': 'app_usage'
}
# 鼠标空闲阈值(秒)
MOUSE_IDLE_THRESHOLD = 30
# 长时间无操作超时时间(秒)
# 当鼠标和键盘都长时间无操作时,将中断当前记录并上传已记录的时长
# 默认300秒(5分钟),可根据需要调整
IDLE_TIMEOUT_SECONDS = 300
# 隐私保护模式配置
PRIVACY_CONFIG = {
'enabled': False,
'level': 0,
'encryption_enabled': False,
'masking_rules': {
'app_name': False,
'exe_path': False
}
}
# 系统工具白名单
SYSTEM_TOOLS_WHITELIST = [
'notepad.exe',
'cmd.exe',
'powershell.exe',
'windowsterminal.exe'
]
# 看门狗配置
WATCHDOG_CONFIG = {
'enabled': True,
'cpu_threshold': 90,
'memory_threshold': 90,
'check_interval': 60
}打包步骤
已配置一键打包脚本,无需手动。只需进入虚拟环境后执行一键打包脚本脚本即可!
# 激活虚拟环境:
.\.venv\Scripts\Activate.ps1
# 一键打包脚本:
python modules/Build.py# 一键打包脚本输出的内容:
======================================================================
ShiJian 一键打包工具
======================================================================
[1/5] 清理旧的打包文件...
已删除 build 目录
已删除 dist 目录
[2/5] 检查配置文件...
配置文件存在: ShiJian.spec
[3/5] 开始打包...
这可能需要几分钟时间,请耐心等待...
打包完成! 耗时: 9.32 秒
[4/5] 检查打包结果...
可执行文件已生成: ShiJian.exe
文件大小: 13.25 MB
文件路径: C:\Users\30658\Desktop\shijian\dist\ShiJian.exe
[5/5] 打包总结...
打包成功!
运行命令:
C:\Users\30658\Desktop\shijian\client\python\dist\ShiJian.exe
或者直接双击运行可执行文件
======================================================================使用说明
# 直接运行 Python 脚本
python Main.py
# 运行打包后的 exe 文件
.\dist\AppUsageAgent.exe
# 停止程序
按 `Ctrl+C` 或关闭命令窗口日志输出
程序会在命令窗口中显示实时日志,包括:
[CONFIG]:配置加载信息
[TICK]:应用切换和记录上传信息
[TICK]:长时间无操作超时,鼠标和键盘都长时间无操作时的中断记录信息
[MAIN]: 程序启动和关闭信息
[STATE RECOVERY]:状态恢复信息
[WATCHDOG]:看门狗监控信息长时无操作检测
程序会同时监听鼠标和键盘活动,当两者都长时间无操作时,会自动中断当前应用的使用记录并上传已记录的时长。
工作原理:
- 每秒检测一次鼠标位置变化
- 每秒检测一次键盘按键状态
- 取两者中较长的静止时间作为判断依据
- 当静止时间超过 `IDLE_TIMEOUT_SECONDS`(默认5分钟)时,中断记录
配置调整:
在 `Config.py` 中修改 `IDLE_TIMEOUT_SECONDS` 值:
# 改为 180 秒(3分钟)
IDLE_TIMEOUT_SECONDS = 180
# 改为 600 秒(10分钟)
IDLE_TIMEOUT_SECONDS = 600
参数调整
默认超时时间: 300 秒(5分钟)
检测对象: 鼠标和键盘
判断逻辑: 取两者中较长的静止时间
日志示例:
[TICK] 长时间无操作超时(305秒),中断记录并上传: QQ.exe, 时长: 180秒
[TICK] 长时间无操作超时(305秒),时长太短不上传: Notepad.exe, 时长: 2秒单元测试
还没写完
常见问题
Q1: 程序无法连接数据库
解决方案:
1. 检查 `Config.py` 中的数据库配置是否正确
2. 确认 MySQL 服务正在运行
3. 检查防火墙设置
4. 验证数据库用户权限Q2: 系统工具没有被记录
解决方案:
1. 检查 `SYSTEM_TOOLS_WHITELIST` 配置
2. 确认系统工具的完整路径
3. 查看日志中的 `[VALID]` 信息Q3: 鼠标空闲时间不准确
解决方案:
1. 调整 `MOUSE_IDLE_THRESHOLD` 配置值
2. 确认鼠标设备正常工作
3. 检查是否有其他程序干扰鼠标事件Q4: 硬件信息采集失败
解决方案:
1. 确认以管理员权限运行程序
2. 检查 WMI 服务是否正常运行
3. 查看日志中的错误信息Q5: 虚拟机检测不准确
解决方案:
1. 默认禁止虚拟机
2. 虚拟机检测使用多种方法,可能存在误判
3. 可以在 `Watchdog.py` 中调整检测方法
4. 查看日志中的检测详情Q6: 长时间无操作检测不生效
解决方案:
1. 检查 `IDLE_TIMEOUT_SECONDS` 配置值是否正确
2. 确认鼠标和键盘设备正常工作
3. 查看日志中的 `[TICK]` 信息,确认是否触发超时
4. 如果需要更短的检测时间,可以调整 `IDLE_TIMEOUT_SECONDS` 值性能优化
# 数据库连接池
- 默认连接池大小: 5
- 最大重试次数: 3
- 连接超时时间: 30 秒
- 健康检查间隔: 60 秒
# 看门狗监控
- CPU 使用率阈值: 90%
- 内存使用率阈值: 90%
- 检查间隔: 60 秒
# 鼠标检测
- 默认空闲阈值: 30 秒
- 检测频率: 1 秒
# 键盘检测
- 检测频率: 1 秒
- 检测方法: 使用 GetAsyncKeyState 监听按键状态更新日志
### v1.2.0 (2026-01-19)
- 新增网络连接检查功能(互联网、DNS、数据库)
- 新增本地 SQLite 存储支持
- 支持数据库存储模式切换(本地/云端)
- 新增安装程序排除功能
- 完善日志系统(同时输出到控制台和文件)
- 修复 SQLite 模式下应用切换报错问题
- 优化数据表结构,确保本地和云端一致
### v1.1.0 (2026-01-15)
- 新增键盘活动检测功能
- 新增长时间无操作检测功能(鼠标和键盘同时监听)
- 支持自定义长时间无操作超时时间
- 优化睡眠/休眠恢复后的时间戳处理
### v1.0.0 (2026-01-12)
- 初始版本发布
- 前台应用监控
- 数据库自动上传
- 系统工具监控
- 隐私保护模式
- 硬件信息采集
- 虚拟机检测
- 看门狗机制效果浏览
- Web端还没开始写
许可证
- 没想好,待定

