Snapzy敏感信息打码功能揭秘:自动识别+手动模糊双重保护的隐私截图方案
【免费下载链接】SnapzyAn open-source native macOS screenshot and screen recording app. A CleanShot X alternative.项目地址: https://gitcode.com/gh_mirrors/sn/Snapzy
Snapzy 是一款开源的 macOS 原生截图与录屏应用(CleanShot X 的开源替代品),它的敏感信息打码功能可以自动识别截图里的邮箱、手机号、银行卡号、API 密钥等隐私内容,并用一键模糊把它们盖住。本文带你完整了解这套「自动识别 + 手动模糊」双重保护的隐私截图方案。
为什么分享截图前要做敏感信息打码?🔐
我们每天都在分享截图:发工单、发客服、发群聊。但截图里常常藏着不该暴露的内容——
- 📧 邮箱、手机号、个人主页链接
- 💳 银行卡号、有效期、持卡人姓名
- 🔑 API Key、Access Token、密码、Bearer 令牌
手动一个个框选打码既慢又容易漏。Snapzy 的思路是:机器先把能识别的隐私全部标出来,人工只需复查和补充。
一键自动打码:本地 OCR + 规则引擎自动识别
在标注编辑器的快捷属性栏中,有一个盾牌图标按钮——Auto Redact(自动遮蔽),对应 AnnotateQuickPropertiesBar.swift 中的QuickAutoRedactControl。点击后:
- 按钮变成沙漏图标,顶部出现「正在扫描」的提示;
- Snapzy 在后台线程完成识别(界面不卡顿);
- 完成后弹出提示:「已自动遮蔽 N 处敏感信息」,或提醒「未检测到敏感信息」。
触发逻辑位于 AnnotateState.swift 的autoRedactSensitiveData(),核心检测服务是 AnnotateSensitiveRedactionService.swift。
能自动识别哪些敏感数据?
服务内置了 8 类敏感数据检测器(见 AnnotateSensitiveRedactionService.swift):
| 类型 | 识别方式 |
|---|---|
| 📧 邮箱 | 正则 + 系统链接检测 |
| 📱 手机号 | 系统文本检测器(NSDataDetector) |
| 🔗 网址链接 | 系统链接检测 |
| 💳 银行卡号 | 正则 +Luhn 校验算法+ 真实卡组织前缀(Visa/MC/Amex/Discover 等) |
| ⏳ 卡有效期 | 识别「VALID / THRU / EXP」标签附近的 MM/YY 格式 |
| 👤 持卡人姓名 | 识别卡号下方、左对齐的姓名行 |
| 🔑 凭证 | api_key=...、password: ...、client_secret等键值对 |
| 🎫 Access Token | Bearer 令牌、AWSAKIA...、JWT(eyJ...)、sk-/ghp_等典型格式 |
一个细节值得注意:卡号识别不是简单匹配一串数字,而是会校验前缀 + Luhn 校验位,甚至能处理 OCR 把卡号拆成4111 1111 1111 1111多段的情况(多行拼接检测),大幅降低误报。
从「认出文字」到「盖住文字」
整个流程分三步,全部发生在你的 Mac 本地:
- 本地 OCR:调用系统 Vision 框架(
VNRecognizeTextRequest,高精度模式、自动检测语言)识别图中文字及坐标; - 规则匹配:对上述 8 类规则逐一匹配,重叠结果按置信度择优合并;
- 坐标回填:把文字匹配区间映射回图像像素位置,向外做适度 padding、合并重叠区域,最后自动生成打码标注(applySensitiveRedactionRegions),并自动选中这些区域方便你调整。
手动模糊:8 种打码效果随心选 🎨
自动识别之外,Snapzy 提供8 种模糊打码效果,定义在 AnnotateAnnotationItem.swift 的BlurType中:
| 效果 | 效果 | 效果 | 效果 |
|---|---|---|---|
| 马赛克 | 高斯模糊 | 六边形 | 晶体化 |
| 点彩 | 半调 | 胶带 | 和纸胶带 |
使用方法很简单:
- 按快捷键
B或直接点击工具栏的Blur(模糊)工具; - 在快捷属性栏中切换 8 种效果(如用「和纸胶带」遮盖更美观);
- 在图中拖出矩形区域即可完成打码。
值得一提的是渲染顺序:模糊层始终位于图形/箭头/文字之下(见 docs/ANNOTATE.md 的 z-order 说明),所以你在打码区域上画的箭头和标注不会被打码盖住。
自动 + 手动双重保护:推荐工作流
- 用 Snapzy 截取区域 / 窗口 / 全屏(或先录屏再截图);
- 进入标注编辑器,点击快捷属性栏的盾牌按钮「自动遮蔽」;
- 查看提示,确认自动打码的区域数量;
- 用**选择工具(V)**微调位置——自动生成的区域默认处于选中状态,可直接拖动、缩放或删除;
- 对漏网的内容(如人脸、地址)手动补一个模糊框;
- 保存或复制。打码是真正烧录进导出图像的(由统一的导出器渲染),分享出去的就是已脱敏的图片,而不是一个可被撤销的图层。
隐私友好:数据不出本机 🛡️
这套方案最让人安心的一点是:OCR 识别与规则匹配全部在设备端完成,扫描在后台线程异步执行、支持中途取消(切换图像或新任务时旧结果会被丢弃),截图内容不会上传到任何服务器。对于客服、开发、财务等经常需要「截图前先脱敏」的场景,这套本地隐私截图方案既快又安全。
相关源码与文档 📚
- 自动打码核心服务:AnnotateSensitiveRedactionService.swift
- 触发与区域应用逻辑:AnnotateState.swift
- 8 种模糊效果定义:AnnotateAnnotationItem.swift
- 自动遮蔽按钮 UI:AnnotateQuickPropertiesBar.swift
- 编辑器架构说明:docs/ANNOTATE.md
- 打码效果回归测试:AnnotateBackgroundRedactionTests.swift
【免费下载链接】SnapzyAn open-source native macOS screenshot and screen recording app. A CleanShot X alternative.项目地址: https://gitcode.com/gh_mirrors/sn/Snapzy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考