MExplorer 从你的 Mac 发出些什么
简短的回答:使用统计、崩溃报告和更新检查。没有文件名,没有文件内容,也没有任何形式的路径。
永远不会离开你 Mac 的东西
- 文件名、路径、文件内容。永远不会,没有例外。
- 你安装的 app、扫描结果、清理日志。它们存放在 app 自己支持文件夹里的一个 SQLite 数据库中,就在你的机器上。
- 你的工作内容。任何扫描结果、app 清单或清理日志都不会离开这台机器——即使在一次授权激活的调用里也不会。
这不只是一句承诺。允许发送的事件列表在源码里是一个封闭类型:每个参数要么是枚举,要么是计数,要么是容量档位。没有任何字段接受自由文本,所以根本没有地方能塞进一条路径。每次构建都会跑的一道关卡,只要有人加了字符串参数,或者遥测模块碰了文件系统,就会变红。
确实会离开你 Mac 的东西
1. 使用统计(Firebase Analytics)
| 事件 |
随之发送 |
| 打开 app |
界面语言代码 |
| 打开某个界面 |
哪个界面(清理、重复文件、磁盘分析…) |
| 清理完成 |
扫描深度、勾选了几组、释放空间的档位 |
| 权限步骤的结果 |
已授予或已跳过 |
| 关闭功能导览 |
看完了,或者停在第几页 |
| 授权已激活 |
什么都不带 |
容量按档位发送(“小于 1 GB”“1–10 GB”“大于 10 GB”),而不是真实数字。一个精确数字在多次会话中反复出现,就开始成为某一台具体机器的指纹;档位则不会。
Firebase 会自行附加更多内容,这不在我们的控制之内:app 版本、macOS 版本、机型、由你的 IP 地址推断的国家/地区,以及每次安装一个标识符。
2. 崩溃报告(Firebase Crashlytics)
当 app 崩溃时:调用栈、app 版本、macOS 版本、机器架构、界面语言。不含你当时打开的文件名——报告根本不走那条路。
3. 更新检查(Sparkle)
下载一个列出各版本的 XML 文件;若有更新版本,再下载更新包。服务器看到的就是任何网页服务器都能看到的:IP 地址、时间、macOS 版本和 MExplorer 版本。安装前会用 EdDSA 签名验证这个包。可在「设置 → 更新」里关闭。
4. 授权激活(自 1.0.3 起)
只有当你主动在这台 Mac 上激活密钥,或者打开使用你密钥的 Mac 列表时才会发生。没有心跳:app 从不按计划呼叫授权服务器,首次激活之后更是完全不再呼叫。
- 你的授权密钥——用来查到你的授权。
- 一个机器码——用来数你套餐里的 Mac。它是硬件标识的单向哈希,不是序列号:服务器从不保存你 Mac 的真实标识,这个码也无法和任何其他人的记录相互比对。
- 你 Mac 的名称(“Công 的 MacBook Pro”)——好让你分辨该移除哪一台。这是唯一新增的个人字段,没有它,那份列表就只是一行行哈希。
- macOS 版本和 app 版本——用于支持和兼容性统计。
保留期限:激活记录和事件日志在 24 个月后删除。授权和订单记录保留更久,因为它们是购买凭证。
离线时不会有任何功能被锁住。你 Mac 上的授权是永久的,并且离线校验——就算授权服务器永久关闭,一台已激活的 Mac 也不会察觉。
如何关闭
使用统计和崩溃报告默认开启,目前没有关闭开关。这是一个商业决定,而且与我们自己规范里定下的「opt-in」要求相违背。我们把它写在这里,而不是闭口不谈。
- 在防火墙上拦截:MExplorer 只与
*.google-analytics.com、*.crashlytics.com、firebaselogging.googleapis.com、MOBILUCK 的更新服务器通信,以及在你激活授权时与 licence.code247.ai 通信。
- 使用一个没有 Firebase 配置的构建。缺少配置文件的构建什么都不会发送——这是代码的默认行为,不是隐藏选项。
完全磁盘访问权限是用来做什么的
macOS 要求这项权限才能读取 ~/Library,各个 app 的数据都放在那里。没有它,三项主要功能——按 app 统计占用、已删除 app 的残留、缓存清理——都无法工作,因为操作系统在门口就把它们拦下了。
这项权限只让 MExplorer 读取。它不会用来收集任何要发送的东西:从你磁盘上读到的一切,永远不会进入上面那些事件。
自己动手查证
你不必听信这一页。Firebase 会把事件攒在本地数据库里,按它自己的节奏发送,所以看一次网络连接通常什么都看不到——这并不表示 app 什么都没发。想看排队中的内容,就在你自己的机器上打开这个队列:
sqlite3 ~/Library/Application\ Support/Google/Measurement/google-app-measurement.sql \
"SELECT name, count(*) FROM events GROUP BY name"
你会看到的正是上表里的那些事件,外加 Firebase 自己的几个自动事件。你不会看到任何文件名或路径,因为它们根本没有到那里去的路。
更新于 2026 年 9 月 1 日。在那天之前,MExplorer 除了更新检查什么都不发,这一页当时也是这么写的。我们在同一天改了软件,也改了这一页,而不是让旧的承诺继续挂着。
本文件以 MExplorer 网站所使用的每一种语言发布。提供译文是为了让你能用自己的语言读懂条款;当译文与英文在含义上有出入时,以英文版本为准。这不影响你在居住国依法享有的权利。