macshot隐私与安全深度解析:零遥测、零服务器,沙盒与权限机制一次讲清
【免费下载链接】macshotFeature-packed native macOS screenshot & recording tool: annotate, auto-redact PII, record GIFs, OCR + translate, scroll capture, beautify, and more. No Electron, no subscription.项目地址: https://gitcode.com/gh_mirrors/mac/macshot
macshot 是一款免费开源的原生 macOS 截图与录屏工具,主打零遥测、零服务器:所有截图、录像和设置都只存在你自己的 Mac 上,开发者不运营任何服务器,也不收集任何使用数据。本文将带你拆解它的沙盒机制、屏幕录制权限模型、本地数据存储与可选的第三方上传服务,搞清楚"零遥测"到底是怎么做到的 🔒。
一、零遥测、零服务器:它明确"不做"什么
很多工具打着"本地运行"的旗号,却在后台悄悄回传使用数据。macshot 在 PRIVACY.md 中用一整节"macshot does NOT do"直接划清边界:
- 无遥测或分析:不会"打电话回家",不追踪使用行为,不向开发者发送任何数据;
- 无数据收集:不收集个人信息、使用统计、崩溃报告;
- 无服务端存储:开发者不运营服务器,截图、录像、设置全部保存在本地;
- 不碰你的上传内容:上传到 Google Drive 的文件直达你自己的 Drive 账户,开发者无法查看或下载。
这意味着你无需为"后台进程"担心——macshot 的每一次网络请求,都来自你明确触发的动作。
二、macOS 沙盒:权限被锁在最小范围里
macshot 通过 macshot.entitlements 启用了完整的App Sandbox(com.apple.security.app-sandbox为true)。沙盒是 macOS 的安全边界,应用只能在授权清单声明的能力内活动。这份清单可以逐项读出它"被允许做什么":
| 沙盒能力 | 用途 |
|---|---|
network.client | 仅用于你主动发起的上传与更新检查 |
files.user-selected.read-write | 只能读写你亲自选择的文件 |
files.bookmarks.app-scope | 通过安全作用域书签跨启动记住保存目录 |
device.audio-input/device.camera | 录屏时采集麦克风、摄像头画中画 |
注意清单中没有"读取整个用户目录"这类宽泛权限。以保存目录为例,macshot 在 SaveDirectoryAccess.swift 中实现了"安全作用域书签"机制:你在系统面板中选择一个文件夹后,macshot 保存一个带作用域的书签(security-scoped bookmark),每次写入前startAccessingSecurityScopedResource()申请、写入后stopAccessing()释放。换句话说,它每次只能碰到你授权的那个文件夹,碰不到旁边任何东西。
三、屏幕录制权限:由系统掌控,你随时可收回
macshot 需要Screen Recording(屏幕录制)权限来截取屏幕——这是 macOS 对"能看到你屏幕的一切像素"的严格管控。关键在于:
- 权限由macOS 本身授予和监管,而非应用自证清白;
- 你可以随时在"系统设置 → 隐私与安全性 → 屏幕与系统音频录制"中关闭它(如上图所示);
- 使用元素吸附(Tab 键选中按钮/输入框)、按键或点击高亮等功能时,macOS 还会分别要求辅助功能(Accessibility)或输入监控(Input Monitoring)权限,每一项都独立授权、独立可撤。
沙盒 + 系统级权限开关形成了双重保险:即使应用代码出了问题,它也无法越过 macOS 划定的围栏。
四、本地数据清单:你的 Mac 上存了什么
macshot 在本地保存的数据非常克制,完整清单见 PRIVACY.md:
- 截图与录像— 存到你自选的文件夹(默认"图片");
- 截图历史— 存放在
~/Library/Application Support/com.sw33tlie.macshot/history/,大小可在偏好设置中控制,设为 0 即完全关闭; - 偏好设置— 存放在标准的 macOS UserDefaults;
- Google Drive 令牌— 仅当你主动登录时才会产生,存放在
gdrive_tokens.json,权限为0600(仅属主可读写),且在偏好设置中登出即删除。
没有任何一项数据会离开你的设备,除非你按下上传按钮。
五、可选服务全解析:每一次联网你都知情
macshot 唯一的"联网行为"来自三类**完全可选(opt-in)**的服务:
- Google Drive:仅当你主动登录,上传走 OAuth 2.0 流程。源码 GoogleDriveUploader.swift 中可见权限范围仅为
drive.file——它只能读写自己创建的 "macshot" 文件夹,读不到你 Drive 里的任何其它文件; - imgbb / S3:图片直传到相应服务器,macshot 作为通道,不中转、不留副本;
- Sparkle 自动更新:仅向 appcast.xml 发起版本检查请求,不含任何个人数据,下载的安装包带 EdDSA 签名校验(
sparkle:edSignature),防止更新通道被篡改。
如果你希望彻底"断网",macshot 还提供一个Offline 构建变体(BuildVariant.swift 通过编译开关区分):去掉全部上传功能,对应 appcast-offline.xml 独立分发,适合对网络行为零容忍的敏感环境。
六、隐私的另一面:本地自动脱敏(Auto-Redact)
隐私保护不只靠"不上传",macshot 还在本地帮你主动消除敏感信息。它的 PII 自动脱敏引擎(PIIRedactionPlanner.swift 与 AutoRedactor.swift)在 Mac 本地识别并打码:
- 邮箱、电话号码、IP 地址、SSN;
- 信用卡号、CVV、有效期;
- AWS 密钥、Secrets/Tokens、HEx Keys 等开发者凭证;
- 人脸(可开启 Faces 识别)。
全部识别在本地完成——这正是"零服务器"设计最实用的落点:最敏感的像素从未离开你的机器,也被模糊在最安全的时机。该功能是"尽力而为"的启发式匹配(见 SECURITY.md 的 Out of scope 说明),重要截图仍建议人工复查。
七、开源 + 漏洞响应:隐私承诺可被验证
"我们不收集数据"是一句承诺,而开源让它可以被验证。macshot 是 GPLv3 完全开源项目,任何人都能审计全部源码确认零遥测。安全方面,SECURITY.md 给出了专业规范的漏洞披露流程:
- 支持 GitHub 私有漏洞报告(PVR),优先响应;
- 目标48 小时内响应,高危问题数天内给出修复或方案;
- 仅支持各变体最新正式版(macOS 沙盒 + Sparkle 自动更新让绝大多数用户保持最新)。
总结:普通用户该如何看待 macshot 的隐私模型
| 维度 | macshot 的做法 |
|---|---|
| 数据收集 | 无遥测、无统计、无崩溃报告 |
| 服务器 | 开发者零服务器,文件不上云 |
| 系统权限 | 沙盒 + 系统级可撤销的屏幕录制/辅助功能权限 |
| 本地数据 | 截图、历史(可清零)、设置、可选的 0600 权限令牌 |
| 联网行为 | 仅限你触发的上传与带签名的更新检查 |
| 敏感信息 | 本地自动脱敏,最敏感像素不离开设备 |
一句话总结:macshot 把"隐私"做成了默认值而非选项——沙盒锁住能力边界,权限交给 macOS 监管,数据锚定在你自己的磁盘上。对于截图和录屏这类天然"高隐私风险"的工具,这套"零遥测、零服务器"的设计值得每一个 Mac 用户了解和借鉴 ✅。
【免费下载链接】macshotFeature-packed native macOS screenshot & recording tool: annotate, auto-redact PII, record GIFs, OCR + translate, scroll capture, beautify, and more. No Electron, no subscription.项目地址: https://gitcode.com/gh_mirrors/mac/macshot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考