30 秒内判断一个 PDF 网站是否上传了你的文件
打开浏览器的 Network 面板,拖入一个 PDF,然后观察。30 秒内你就能看出一个 PDF 网站是把文件上传走了,还是把它留在你的设备上。
一个 PDF 网站告诉你,你的文件「100% 私密」、「绝不存储」。也许是真的,也许不是。问题在于,你不必只凭它们的一面之词。你的浏览器其实已经记录了一个网站发送和接收的每一个字节,而这份记录你自己就能读懂。整个过程大约只要 30 秒,而且你完全不需要会写代码。
下面就是这个测试,一步一步来,以及如何解读结果。
先打开 DevTools
每一个现代浏览器都自带一个开发者面板,叫 DevTools。其中的一部分,也就是 Network(网络)选项卡,会列出页面发出的每一个请求:图片、字体、脚本,以及网站向外发送的任何文件。
打开你想检查的那个 PDF 网站,但先不要急着把文件拖进去。然后打开 DevTools:
- Chrome、Edge、Brave 或 Firefox: 按 F12,或者在页面任意位置右键并选择检查。
- Safari: 先打开「开发」菜单(设置 → 高级 → 「显示网页开发者功能」),然后按 Option + Cmd + I。
点击面板顶部的 Network 选项卡。你会看到一个表格,列名包括 Name、Status、Type 和 Size。如果它是空的,没关系。找到那个小小的「Preserve log」(保留日志)复选框并勾选它,这样什么都不会被清掉,然后点击清除按钮(一个带斜杠的圆圈),让列表从干净的状态开始。
拖入一个 PDF 然后观察
现在去做这个网站本来要做的事。拖进一个 PDF,或者选一个文件,然后执行操作:合并、压缩、旋转,无论这个工具做什么。它工作的时候,把目光盯在 Network 选项卡上。
会发生两种情况。
网站上传了你的文件。 你会看到,就在你开始操作的那一刻,一个新的行出现了。它通常是一个 POST 请求(查看 Method 列,或者点击那一行)。最能说明问题的是 Size(大小)列:如果你的 PDF 有 4 MB,你会看到一个大小差不多的请求离开你的机器。点击那一行,打开里面的 Payload 或 Request 选项卡,你常常能看到你真实的文件数据就摆在那里。那就是你的文档正在被送往它们的服务器。
网站把它留在本地。 你拖入文件,工具完成工作,结果被下载下来,而 Network 选项卡显示……什么新东西都没有。没有大的 POST。没有跟你的 PDF 一样大的请求。唯一的流量是更早之前页面加载本身,加上也许一个几百字节的小小分析埋点,而不是几兆字节。你的文件从未离开过这个标签页。
这就是整个测试。Size 列承担了大部分的说明工作。几百字节是日常杂务。几兆字节而且大小跟你的文件吻合,那就是一次上传。
更直白的版本:拔掉网络
还有一个更简单的检查,而且它需要的技术知识为零。打开这个 PDF 网站,然后关掉你的 Wi-Fi。现在试着去用它。
一个在服务器上处理文件的工具,会在它够不到那个服务器的瞬间崩掉。它会一直转、会超时、或者抛出一个错误,因为它在物理上根本没法把你的文件发到任何地方。而一个在你浏览器里运行的工具,在 Wi-Fi 关掉的情况下照样工作,因为它需要的一切在页面加载时就已经下载好了。如果它在没有连接的情况下还能合并、还能压缩,那你的文件就是留在原地的。链路里根本没有一个服务器可以让它上传。
为什么 reader.me 显示没有上传
在 reader.me 上跑这个测试,Network 选项卡会一直安静。把一个文件拖进 合并 PDF,合并几份文档,你不会看到任何一个请求把你的 PDF 带去任何地方。压缩 PDF 也一样:文件被读进你浏览器的内存里,就在那里重新压缩,再保存回你的下载文件夹。在页面加载后关掉你的 Wi-Fi,两者都照样工作。
这不是一句隐私口号,而是这些工具被造出来的方式。PDF 引擎随网页一起送达,并在你的设备上运行。你的文件作为字节在内存里被打开、被修改,再作为一个新文件写出来供你下载。没有任何东西被送到我们这里,因为根本没有一个需要它的服务器环节。如果你想了解一个文件在不离开你机器的情况下是怎么变小的,压缩术语条目讲清了其中的机制。
你可以不再猜测的事
下一次一个 PDF 网站承诺隐私时,你不必再犯嘀咕。打开 Network 选项卡,拖入一个文件,盯着 Size 列。或者干脆掐断你的 Wi-Fi,看工具还能不能跑。无论哪种方式,浏览器都会告诉你真相,而且它花的时间比读那份本来要你信任的隐私政策还要短。
能被你检验的隐私,胜过只能靠你相信的隐私。现在你可以检验它了。