GuillaumeBlais/activity-tracker

GitHub: GuillaumeBlais/activity-tracker

一款 100% 离线运行的本地鼠标与键盘活动追踪器,通过交互式 Web 仪表板提供详尽的个人电脑使用行为分析与可视化。

Stars: 1 | Forks: 0

# 🖱️⌨️ 活动追踪器与仪表板 ![Python](https://img.shields.io/badge/Python-3.10+-blue?logo=python&logoColor=white) ![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS-lightgrey) ![License](https://img.shields.io/badge/License-MIT-green) ![Status](https://img.shields.io/badge/Status-Active-brightgreen) ## ⚠️ 隐私警告 本项目会**持续**捕捉你的鼠标点击、键盘按键、输入的单词以及你正在使用的应用程序。 - ✅ **所有数据均保留在本地**:无任何外部网络请求,无任何遥测数据。 - ✅ 数据存储在项目根目录下的两个 JSON 文件中。 - 🔴 **切勿分享 `mouse_data.json` 或 `keyboard_data.json`** —— 它们包含了你完整的操作记录(如果在非隐藏字段中输入过,可能还包含密码)。 - ✅ 这些文件已包含在 `.gitignore` 中。 - 🎯 建议仅限个人严格使用。 ## ✨ 功能 ### 🖱️ 鼠标追踪 - 总移动距离(px → 米 → 千米) - 左键 / 右键 / 中键点击 + **双击**检测 - **拖放**检测,包含距离和持续时间 - 滚动(上 / 下 / 对应的像素距离) - 点击之间的平均间隔 - **多屏幕热力图**(每个显示器一个 canvas,通过按钮分隔) - 带方向箭头的拖拽轨迹图 ### ⌨️ 键盘追踪 - 总按键计数 + 分类统计(字母、数字、空格、修饰键、导航键、符号、功能键等) - **输入单词**计数,带有智能检测(缓存 + 退格 + 导航) - **实时 WPM**(1小时滑动平均值) - **高频词**,带有 **双语 FR/EN 词干提取**(通过 NLTK SnowballStemmer)→ 对变体进行分组(`travailler`, `travaille`, `travaillé` → 1 个词干) - 自动过滤 FR + EN 的 **停用词**(排除 200+ 个单词) - **快捷键**检测:Ctrl+C、Ctrl+V、Ctrl+Z、Alt+Tab、Win+D……(识别 25+ 种组合) - 使用频率最高的前 24 个键 ### 📊 Web 仪表板 打开 `http://localhost:5000` —— 包含 5 个标签页: | 标签页 | 内容 | |---|---| | 🖱️ **鼠标** | 点击 KPI、热力图、拖拽图、距离,以及**趣味对比**(埃菲尔铁塔、长颈鹿、大披萨、救世基督像、泰坦尼克号、波音 747 等) | | ⌨️ **键盘** | 按键 KPI、WPM、高频键、高频词、快捷键、独立词汇量 | | 📈 **分析** | GitHub 风格的日历图(52 周)、生产力得分、每小时鼠标/键盘相关性、**异常**检测(z-score)、“你 vs 你”对比 | | 🪟 **应用程序** | 根据当前活动应用(Chrome、VSCode、Excel 等)划分的点击和按键分布 | | 🏆 **记录** | 单日最高点击/按键/拖拽/滚动次数、最常输入的单词、连续打卡天数、移动距离对比 300+ 参考物体(从 CD 到太阳直径 ☀️) | ### 🎨 额外功能 - 🪟 **基于应用程序的追踪**(Windows):你最常用哪个应用? - ⏸️ **休息检测**:自动记录超过 5 分钟的非活动时段 - 📅 **全局时间过滤器**:今天、昨天、7 天、30 天、本周、本月、本年、12 个月、全部、**自定义时间段**、**对比模式** - 🚀 **Windows 开机自启**(通过注册表 `HKCU\Run`) - 🍔 **系统托盘图标**(通过 pystray) - 🎯 **置顶悬浮小组件**(通过 tkinter) - 🖥️ **动态多屏幕检测**(每 5 秒热插拔检测) ## 🛠️ 技术栈 - **后端**:Python 3.10+(`pynput`、`http.server`、`threading`) - **前端**:原生 HTML / CSS / JS + **Chart.js 4.4**(通过 CDN) - **NLP**:NLTK Snowball Stemmer(FR + EN) - **系统 UI**:`pystray` + `Pillow`(托盘),`tkinter`(小组件),`ctypes`(Windows API) - **持久化**:两个 JSON 文件(无数据库) ## 📦 安装 ``` # 克隆 repo git clone https://github.com/GuillaumeBlais/activity-tracker.git cd activity-tracker # (推荐)创建虚拟环境 python -m venv .venv # Windows: .venv\Scripts\activate # Linux/macOS: source .venv/bin/activate # 安装依赖 pip install -r requirements.txt # (可选)下载 NLTK 数据用于 stemming python -c "import nltk; nltk.download('punkt')" ``` ## ▶️ 运行 ``` python tracker.py ``` 然后在浏览器中打开 **http://localhost:5000**。 追踪器将会: 1. 自动检测你的屏幕 2. 启动鼠标和键盘的 hook(在 Windows 上有时需要管理员权限) 3. 在 5000 端口启动本地 HTTP 服务器 4. 每 10 秒将数据保存到 JSON 文件中 若要停止:在终端中按 `Ctrl+C`,或右键点击托盘图标 → *退出*。 ## 📁 项目结构 ``` activity-tracker/ ├── tracker.py # Backend : capture + serveur HTTP ├── dashboard.html # Frontend : dashboard 5 onglets ├── mouse_data.json # 🔒 Données souris (généré, gitignoré) ├── keyboard_data.json # 🔒 Données clavier (généré, gitignoré) ├── requirements.txt # Dépendances Python ├── .gitignore └── README.md ``` ## 🔒 隐私 - 🚫 **无任何外部网络请求** —— 如果愿意,你可以用 Wireshark 进行检查。 - 🏠 HTTP 服务器仅在 `127.0.0.1` (localhost) 上监听。 - 🗄️ 数据保存在你的机器上,位于你的项目文件夹中。 - 🙈 `.json` 文件已被 git 忽略 —— 你不会意外提交它们。 - ⚠️ 仍请保持谨慎:这些文件包含**大量个人隐私信息**。请加密你的磁盘,不要分享这些文件。 ## 📝 许可证 MIT © Guillaume Blais ## 🤝 贡献 最初只是个人项目 —— 但欢迎提交 PR(新增距离参考对象、改进仪表板、为 Linux/macOS 提供应用程序追踪支持等)。 *用 ☕ 和无数次点击制作。*
标签:Python, 后端开发, 多模态安全, 数据可视化, 无后门, 本地离线, 桌面行为追踪, 逆向工具, 键鼠分析