如何验证在线工具没有上传你的文件
将回执作为当前版本的证据前,请核对测量日期、运行环境及发版绑定状态。
为什么要验证而不是相信
处理方式是可检验的。任何工具都可以说你的文件不会离开设备;只有当真实任务中的网络流量可以观察、可以复现时,这个主张才成为证据。本指南教你一个方法——在工具工作时观察浏览器发出了什么——然后展示同样的方法如何作为长期公开的工件运转,让关于 Toolars 的主张可以被核查,而不是被相信。
- 承诺与证据标签是承诺,抓包是证据;区别在于抓包可以重放、检查和质疑。
- 一个方法,任何工具方法与工具无关:它在浏览器自带的网络面板中运行,大约需要一分钟,适用于你想测试的任何网站。
- 先在自己身上验证本指南不点名任何其他服务,也不对任何其他网站的行为做任何断言;它教你检查方法,然后用 Toolars 自己公开的证据做示范。
六十秒的 DevTools 检查
网络面板可以帮助检查测试期间的请求。证据只覆盖实际捕获的浏览器上下文、网络通道和时间窗口。
处理和下载期间持续记录,并注明版本、浏览器状态和捕获范围。仅凭一份 DevTools 日志,不能保证所有可能的网络通道都已被捕获。
- 先打开并清空先打开工具的页面和网络面板——开发者工具,然后 Network 标签——清空日志并保持记录。加载页面总会产生 HTML、脚本和样式的请求;这种页面壳流量是预期之内的。
- 使用测试文件使用专门准备的测试文件,只执行待检查的任务。期间仍可能出现后台请求,应检查载荷后再判断它是否来自这次操作。
- 观察操作按下工具的操作并观察列表。本地工具可能在首次使用时获取代码、字体或引擎资源——而在预热运行之后,理想情况下什么都不发生。
读日志:页面壳的流量不是你的文件
关键技能是区分页面流量和数据流量。页面壳流量把应用送到你的浏览器;数据流量把内容运走。知道要看什么之后,两者在面板里看起来非常不同。
- 页面壳请求脚本、样式、字体和引擎属于正常的页面资源。但熟悉的路径、扩展名或较小的请求体,并不能证明请求不含用户数据;还要检查目的地和载荷。
- 上传的特征文件数据可以通过同源或跨源请求离开设备。检查 POST、PUT、multipart 正文及其他数据通道;仅凭请求方法、目的地或体积,不能判定是否上传了文件。
- 打开查看体积本身在两个方向上都不构成证明:压缩分块、可断点续传的会话和 WebSocket 都可能把一次传输拆开。证据在请求的方法、目的地和载荷里——打开它,看。
缓存和 Service Worker 会改变你看到的东西
网络日志只反映当前浏览器状态下的这次运行。缓存和 Service Worker 会改变资源的获取方式,因此检查时需要记录并控制这些状态。
- 预热是正常的重复访问时,已预热的网站会从磁盘或 Service Worker 提供页面壳,面板显示的请求远少于第一次。预热后请求变少是健康的本地工具的样子——它本身不是任何事的证明。
- 从干净状态开始为了读得干净,请从新的浏览器配置文件或无痕窗口开始,启用面板的禁用缓存选项,并记住无痕模式并非在每个浏览器都会拦截 Service Worker。
- 拦截 Worker公开验证脚本为每个场景创建新的浏览器上下文,并禁用 Service Worker,以减少历史状态干扰。仍需记录哪些资源经过预热,以及测量窗口从何时开始。
金丝雀检查:给文件做记号,再搜索
在测试文件中嵌入唯一标记,再搜索捕获的请求。没有精确匹配,只能说明没有找到该标记;编码、压缩、加密、部分传输或捕获不完整都可能导致未命中。
将标记检查与载荷检查、明确的捕获范围结合起来。说明本次运行观察到了什么,以及仍无法排除什么。
- 做记号制作一个专用测试文件,嵌入你自己生成、从未公开的记号:文本图层、图片注释、PDF 便签里的随机 UUID。唯一性让一次命中才有意义。
- 搜索流量检查已捕获的 URL、查询字符串和正文。命中表示在记录到的出站请求中发现了该标记,还应核对请求状态;这不证明整个文件已传输。未命中也不能证明没有文件数据离开设备。
- 重复检查金丝雀只覆盖你观察到的会话——这就是为什么定期、重复的抓取比一次细致的手工检查更重要。
Toolars 公开的关于自己的证据
Toolars 把同样的方法作为长期公开的工件运行:每个工具的带类型处理声明、带抓取流量的信任中心页面,以及一份机器可读的回执——它陈述自己的局限和陈述结果一样坦率。
- 已披露的主机信任中心页面列出了站点页面壳可达的每个外部主机、随响应提供的安全标头,以及可以在同一个网络面板中手工执行的自我验证步骤。
- 机器可读回执/privacy-proof/verification-receipt.json 的机器可读验证回执公开了验证命令、各场景的实测结果、已披露的外部主机,以及用于与站点 X-Toolars-Release 响应标头比对的发版修订号。
- 坦白的局限这份回执说它不能证明什么和它证明了什么一样清楚:被测量的窗口只覆盖那一次运行,而不是对服务未来一切行为的审计。
公开验证脚本配置的 6 个场景
开放仓库提供可针对线上站点运行的验证脚本。检查仅覆盖脚本记录的请求和测试窗口;每次运行的结果与局限应以对应回执为准。
harness 位于公开仓库 https://github.com/aixtral/toolars-open 的 evidence-harness/ 目录下。它以 MIT 许可证发布,验证的是已部署的站点——主张真正所指的对象——而不是私有的暂存副本。
- 6 个已配置场景脚本配置了 6 个场景:图片转换与下载、HEIC 转换、OCR、PDF 旋转、CSV 数据转交、自定义工具链。配置了场景不等于通过测试;须核对回执中的各场景状态、测量窗口和发版修订号。
- 三条不变量检查会标记检测到的上传、命中的金丝雀标记和意外跨源请求;已披露的第一方分析代理单独计数。通过只表示测量窗口内这些检查通过,不代表排除了所有可能的数据传输。
- 核对版本仓库配置了定时运行的线上采集工作流。请检查最近完成的运行、结果与发版修订号。网站回执是存档样本,不会被该工作流自动刷新。采集失败或未完成本身不能证明隐私泄露。
自己重跑证明
回执的价值与它的可复现性相当。harness 的构建目标是让任何人都能以线上站点为目标运行它,并把结果写入一个可以逐行检查的文件。
零请求表示记录器在该测量窗口内没有观察到请求;单独记录的预热流量不在此范围内。它不能证明捕获通道、版本或本次会话之外的行为。
- 克隆并验证克隆仓库,进入 evidence-harness/,安装它的依赖和 Playwright 的 Chromium,然后以线上站点为目标源运行 verify 脚本。
- 退出码就是裁决运行会写出 privacy-proof-receipt.json;如果有任何意外跨越边界——带正文的请求、URL 中的金丝雀、或者不在站点公开名单上的主机——就以非零码退出。
- 只有元数据回执只记录请求元数据——方法、主机、路径、资源类型、是否带正文——绝不记录文件内容、请求正文或响应正文。
这个方法不能证明什么
诚实的验证包含它自己的边界。知道这些边界,可以避免把一条干净的网络轨迹误读为它从来都不是的保证。
- 一个窗口干净的轨迹覆盖被观察的会话——那一次运行、那个浏览器、那个文件。它不审计提供商的服务器、人员或未来的代码。
- 你的设备很重要从你的设备离开什么,也取决于你的设备:被攻陷的浏览器、恶意扩展或共享配置文件,都可能脱离任何工具架构独立地搬运数据。
- 常设证据把每个隐私主张——包括本站的主张——都当作会被重复采集的常设证据,而不是终身保证。这正是 harness 按计划重跑、而不是躺在一次漂亮抓取上的原因。
常见问题
如何检查网站工具是否上传我的文件?
什么是金丝雀字符串?
干净的网络跟踪能保证工具注重隐私吗?
查看常设证据。
将回执作为当前版本的证据前,请核对测量日期、运行环境及发版绑定状态。