如何检查 PDF 工具是否会上传你的文件
一个浏览器标签页无法告诉你 PDF 去了哪里。无论你的文件是在本地内存中解析,还是被流式传输到一台你从未听说过的服务器,页面看起来都一样——同样的拖放框、同样的进度条、同样的“完成”提示。
“本地处理”是一种声明,而非证据。而且这个声明值得核实,因为基于云端的 PDF 合并工具通常要求你将文件上传到服务器,这虽然方便,却会带来数据处理风险。你的合同、你的发票、你的身份证扫描件离开了你的设备,而你在信任别人的保留策略、日志设置和备份计划。
本文要讲的,就是如何把这种声明变成你自己能在几分钟内、用现有工具验证的东西。我们将以 RSJ PdfMerge 作为本地处理工具的具体例子,但这个方法适用于任何基于浏览器的 PDF 工具。
本地处理的证据是什么样的
在你开始点击之前,先弄清楚你要找的是什么。
本地处理的工具会在你的浏览器内完成解析、页面重排、旋转、拆分和渲染。PDF 字节从文件选择器读取,保存在内存中,再作为下载写回。文件的任何副本都不会通过网络传输。
上传的工具则相反:它把你的文件发送到服务器,在那里处理,然后返回结果。那次传输是一个网络请求,而网络请求是可以观察到的。
所以证据很简单,而且可以被证伪:
- 本地处理的正面证据: 在整个操作过程中,没有任何请求携带你文件的字节。
- 上传的正面证据: 有一个请求的正文与你的文件匹配——大小大致相同、PDF 内容类型,以及一个暗示处理的 URL(
/upload、/convert、/process、/v1/merge)。
你不需要信任隐私页面、徽章或博客文章。你需要的是 Network(网络)面板。如果你想先了解概念背景——“本地”到底意味着什么、为什么重要——那是《什么是本地 PDF 处理,为什么你应该关心?》的主题,但简而言之:本地意味着你的字节从未离开,而这是可以测试的。
先说明一个前提:证据来自浏览器自带的开发者工具、导出的 HAR 文件或第三方审计。营销文案不是证据。锁形图标也不是。
分步操作:在浏览器中验证一个 PDF 工具
此流程适用于任何基于浏览器的 PDF 工具,包括 https://pdfmerge.rsj.de 上的那个。
1. 准备一个小测试文件。 用一个只有几页的一次性 PDF,而不是真实文档。这样后面的大小计算会一目了然,也避免把任何敏感内容放进一个你还在评估的会话中。
2. 打开工具。 在普通标签页中加载 https://pdfmerge.rsj.de。
3. 打开开发者工具。 按 F12,或在 Windows/Linux 上按 Ctrl+Shift+I,在 macOS 上按 Cmd+Option+I。切换到 Network 标签页。
4. 清空日志。 点击 🚫 图标(或在 DevTools 中按 Ctrl+L),让面板清空。从这里开始出现的任何内容,都是因为你的操作而发生的。
5. 执行操作。 把你的测试 PDF 拖进去,重排一页,旋转一页,然后导出。如果你想详细了解拆分工作流——把一个文档拆成多个文件——那在《如何在浏览器中把一个 PDF 拆分成多个文件》中有介绍;下面的验证步骤完全相同。
6. 观察请求列表。 按 Size 排序,寻找任何携带请求正文的内容。文件上传并不隐蔽:一个 2 MB 的 PDF 会产生大约 2 MB 的请求正文。
7. 保持页面打开并断开网络。 这是低成本的确认测试。在应用完全加载后,关掉 Wi-Fi 或拔掉网线,再次执行合并或拆分。真正本地处理的工具仍然能完成,因为没有什么需要发送。
8. 如果需要记录,导出 HAR 文件。 在 Network 面板中任意位置右键,选择 Save all as HAR with content。这样你就得到一份会话日志,之后可以搜索,或交给安全审查人员。
# Search an exported HAR for anything that carries a request body.
jq -r '.log.entries[]
| select(.request.postData != null)
| "\(.request.method) \(.request.url) body=\(.request.postData.text // "" | length)"' pdf-tool-session.har
# Or a blunter check: any non-GET request at all.
jq -r '.log.entries[] | select(.request.method != "GET") | "\(.request.method) \(.request.url)"' pdf-tool-session.har
对于托管式、无需终端的流程,RSJ PdfMerge 以更简单的方式给你完全相同的证据:打开应用,把文件拖进缩略图侧边栏,重排或旋转它们,然后导出——同时让 Network 面板开着并保持安静。没有需要审计的上传步骤,因为根本没有上传步骤。
解读结果与边缘情况
并非每个请求都是危险信号。页面必须加载自己的“家具”:HTML、脚本、样式表、字体、图标。这些都是正常的,与你的文件无关。
下面是良性资源加载和文件上传在网络传输上的区别:
# Normal page furniture: a GET, no request body
GET /assets/app.bundle.js HTTP/1.1
Host: some-pdf-tool.example
Accept: */*
# Looks like an upload: non-GET, multipart body, filename in the payload
POST /api/v1/convert HTTP/1.1
Host: some-cloud-pdf-tool.example
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary9xQ
------WebKitFormBoundary9xQ
Content-Disposition: form-data; name="file"; filename="lease-agreement.pdf"
Content-Type: application/pdf
当结果不明确时,要检查这些事项:
- 请求方法和正文。 对静态资源的
GET请求没问题。带正文的POST或PUT请求,值得仔细看看大小和端点名称。 - 载荷大小。 把请求正文大小与你的测试文件比较。multipart 编码会增加一点开销,所以正文大小大致等于你的文件——或更大——那就是你的文件。
- WebSocket 和其他通道。 有些工具通过持久连接推送数据,而不是普通的 POST。用 WS 过滤 Network 面板,确认处理期间没有任何内容被流式传出。
- Service Worker。 它们可以在请求出现在列表中之前拦截请求。如果一个工具声称本地处理,但离线时行为异常,检查 Application → Service Workers。
- 第三方调用。 分析或错误跟踪请求透露的是你的访问,而不是你的文档。它们本身是一个隐私问题,但不是上传的证据。
如果日志显示没有任何东西携带你的字节——而且断网后操作仍然完成——那么这个工具就是本地处理的。如果你看到一个向 /upload 发送的大 POST,你就有了答案,应该认真考虑那份文档是否该放在那里。更广泛的风险图景在《把 PDF 上传到云端合并工具的数据处理风险》中有介绍。
还有一个通道需要考虑:浏览器扩展。扩展能以网站无法做到的方式读取页面数据,所以它值得同样的审视。RSJ PDF Merge, Sort & Split Chrome 扩展从 https://pdfmerge.rsj.de 打开 Web 应用,而该扩展使用的 Web 应用 URL 可以在其选项页中配置——所以你可以把它指向你控制的部署,或验证它使用的目标地址。Web 应用本身才是工作发生的地方,而那正是你刚刚审计过的部分。
RSJ PdfMerge 如何保持本地处理
RSJ PdfMerge 是一个基于浏览器的 PDF 工具。你可以把多个 PDF 合并成一个文档,通过拖放缩略图侧边栏重排、旋转和删除页面,插入自定义文本页,把一个文档拆分成多个文件,并把结果导出为单个 PDF 或各个 PDF 的 ZIP。
与本文相关的部分:PDF 文件完全在浏览器中处理,从不上传到服务器。没有处理后端可供泄露、错误配置或保留副本。
实用细节:
- 免费版: 文档最多 100 页。
- 付费许可证(Basic 和 Pro): 解除页数限制并解锁 ZIP 功能——合并包含 PDF 的 ZIP 归档,以及把结果下载为各个 PDF 的 ZIP。
- Pro 版具体包含: 基于 ZIP 的合并和 ZIP 导出。
- 企业版: 白标集成到你自己的网站或产品中。
你不需要凭信念接受这一切。对 https://pdfmerge.rsj.de 运行上面的八个步骤,然后拔掉网络再合并一次。关于在标签页中运行工具与安装软件之间更广泛的取舍,参见《基于浏览器的 PDF 合并工具 vs 桌面软件:哪个更好?》。
本地处理何时最重要
并非每个 PDF 都需要这种程度的谨慎。一份公开的宣传册去哪里都行。但这些文档不同:
- 合同和法律草稿,在签署前是保密的。
- 财务记录——工资单、发票、银行对账单、税务申报。
- 个人身份证明——护照、身份证、保险文件。
- 任何受 NDA 或数据处理协议约束的内容。
GDPR 等监管框架也可能限制在没有合法依据和合同的情况下把个人数据发送给第三方。一次你未曾留意的上传,事后很难记录在案。
PdfMerge 位于这两个选项之间。它给你基于浏览器的便利,却没有典型云端合并工具的上传步骤。你不需要安装任何东西,而且可以自己检查网络行为。这种组合——便利加上可验证的本地性——正是全部意义所在。
常见问题
没有技术技能,我能检查 PDF 工具是否上传我的文件吗?
可以。打开浏览器的开发者工具,进入 Network 标签页,清空它,然后正常使用该工具。如果没有请求携带你文件的数据,文件就留在了你的设备上。RSJ PdfMerge 的设计就是不上传,你可以用这种方式自己确认。离线测试——断开网络并重复操作——是同一检查更简单的版本。
如果 PDF 工具使用 Chrome 扩展怎么办?
扩展可以捕获数据,所以值得检查它们做什么、指向哪里。RSJ PDF Merge, Sort & Split Chrome 扩展从 https://pdfmerge.rsj.de 打开 Web 应用,而 Web 应用 URL 可以在其选项页中配置。Web 应用本身在本地处理文件,这正是你用 Network 面板验证的部分。
RSJ PdfMerge 会把我的 PDF 上传到服务器吗?
不会。RSJ PdfMerge 完全在你的浏览器中处理 PDF 文件,从不上传到服务器。你可以通过上文所述检查网络流量来验证,或者在页面加载后断开网络,运行一次合并或拆分。
RSJ PdfMerge 的页数限制是什么?
免费版支持最多 100 页的文档。付费许可证(Basic 和 Pro)解除页数限制,并解锁额外功能,例如合并包含 PDF 的 ZIP 归档,以及下载结果 PDF 的 ZIP。
结论
信任一个“本地处理”徽章不是安全控制。盯着 Network 面板才是。整个检查大约需要两分钟,不需要特殊软件,并给你一个直接的答案:要么有请求携带了你的文件,要么没有。
对你使用的每个工具,用一次性 PDF 做一次,你就会知道哪些工具可以放心地交给它一份合同。如果你想走捷径,打开应用,保持 DevTools 开着,把文件拖进侧边栏,然后导出。在 pdfmerge.rsj.de 试试——文档最多 100 页免费,当你的文件更大或需要 ZIP 工作流时,可以购买 Basic 和 Pro 许可证。
相关文章
- 把 PDF 上传到云端合并工具的数据处理风险
- PDF 合并工具定价:免费 vs 付费的页数限制和 ZIP
- 面向小微企业文档的 PDF 合并工具:实用指南