[开发日志] 自制 Windows 剪贴板历史记录与监控工具
[开发日志] Windows 剪贴板记录工具
作者:阿尔的代码屋
项目地址:Clipboard Recorder
Clipboard Recorder 可以记录各种类型的剪贴板内容
背景思考
在我日常使用 Windows 自带的粘贴板的过程中,偶然间想到:
Windows 粘贴板安全性的缺失:Windows 系统的剪贴板是一个完全开放的系统资源,任何运行中的程序都可以自由访问。这就意味着,当我们复制了密码、私钥等敏感信息时,可能有恶意程序正在默默记录这些内容,存在较大的安全隐患。
日常使用过程中历史记录的需求:在日常工作中,我们经常需要找回之前复制过的内容。但 Windows 默认的剪贴板只能保存最新一条记录,虽然 Windows 10 引入了历史记录功能,但在使用上仍有诸多限制。
正是基于这两点思考,我开发了 Clipboard Recorder 工具。它不仅能帮助用户直观地了解剪贴板的安全风险,也提供了完整的历史记录查询功能。
功能特性
安全警示
- 实时监控剪贴板变化
- 记录所有类型的剪贴板内容(文本、图片、文件路径)
- 展示每条内容的详细格式信息
- 自动保存完整的操作历史
实用功能
- 按日期组织历史记录
- 支持图片的多种保存方式
- 智能去重避免重复记录
- 高度可配置的行为控制
技术实现
核心架构
项目采用模块化设计,主要包含以下组件:
1 | src/ |
关键技术点
剪贴板监控
1 | def _read_clipboard(self) -> Optional[ClipboardContent]: |
内容去重
1 | def _get_last_entry_hash(self, last_entry: Dict[str, Any]) -> Optional[str]: |
安全存储
1 | def _process_image_data(self, content: ClipboardContent, data_dict: dict) -> dict: |
开发过程中的思考
安全性考虑
- 避免在内存中长期保留敏感信息
- 提供配置选项控制内容存储方式
- 清晰的日志记录便于审计
性能优化
- 使用文件句柄缓存
- 智能的内容检测机制
- 异步写入避免阻塞
用户体验
- 友好的控制台输出
- 灵活的配置选项
- 直观的日志格式
使用方法
- 安装依赖
1 | pip install -r requirements.txt |
- 运行程序
1 | python main.py |
- 查看历史记录
- 日志文件位于
logs目录 - 图片文件位于
logs/images目录 - 每天的记录单独存储在一个 JSON 文件中
TODO 列表
功能增强计划
- [ ] 支持内容搜索功能,方便查找历史记录
- [ ] 添加内容分类功能,更好地组织历史记录
- [ ] 支持更多剪贴板格式的解析
- [ ] 提供数据导入导出功能
结语
开发这个工具的过程让我深入思考了很多关于安全性和隐私的问题。在便利性和安全性之间找到平衡点并不容易,但这正是我们作为开发者需要不断思考和改进的地方。
希望这个工具能够帮助更多人意识到剪贴板安全的重要性,同时也能在实际使用中带来便利。欢迎大家在 GitHub 上提出建议和贡献代码。
也欢迎关注我的微信公众号【阿尔的代码屋】,获取更多技术干货和编程心得。

扫描上方二维码即可关注,一起交流学习~