重型转换跑在 Web Worker 中
哈希、正则求值、Diff、编码与流处理都在专用 Web Worker 中运行,这些 Worker 由 scripts/build-tool-workers.mjs 从 TypeScript 编译。Worker 是来自本站的同源脚本,即使数 MB 的输入在后台运转,标签页依然保持响应。
04 / DATA BOUNDARY
103 个可用的 Toolars 工具都带有类型化运行时清单,声明输入在哪里处理。本页呈现这些清单、站点可能建立的外部连接、实际下发的安全响应头,以及内部检查方法的说明。
数字在构建时从运行时注册表推导——没有任何手写数字。
这些计数在站点构建时由目录和运行时隐私契约计算得出。如果两者出现分歧,相关工具会被列在这里,而不是被悄悄隐藏。
一个工具只有在清单写明 processingLocation browser、inputLeavesDevice false、retention none 时才计为本地——标签由契约生成,从来不是文案。
一份刻意保持精简的清单。工具工作区不加载任何第三方脚本;重型运行时以同源 Web Worker、WASM 和静态资产形式提供。以下是站点框架自身可能触达的全部内容。
| 服务 / 域名 | 类型 | 用途 | 数据边界 |
|---|---|---|---|
track.toolars.com | 分析 | 通过 PostHog 托管的首次方反向代理接收生产环境分析事件,经由 Cloudflare 提供服务。 | 仅无 Cookie 的允许清单事件:净化后的页面浏览、十六个指定产品事件、Web Vitals 与异常。绝不包含工具输入、输出、文件名或搜索词。SDK 仅在生产域名上懒加载。 |
us.posthog.com | 分析 | 标识托管的 PostHog 应用,用于界面链接与配置。 | 事件不流向该域名;采集走上方代理一行所列的主机。 |
project ref .supabase.co (NEXT_PUBLIC_SUPABASE_URL) | 账号后端 | 身份验证、收藏同步、Newsletter 订阅与反馈存储。 | 只在你采取明确操作时才会连接:登录、订阅或提交表单。工作区从不调用它,浏览器包内也只有 publishable key。 |
avatars.githubusercontent.com | 头像图片 | 通过 GitHub 登录的账号头像。 | 经由严格的图片优化器白名单加载,且只在已登录的顶部菜单中渲染。 |
lh3.googleusercontent.com | 头像图片 | 通过 Google 登录的账号头像。 | 同样严格的图片白名单;登录前不会加载任何内容。 |
buymeacoffee.com | 外跳链接 | 页脚可选的创作者支持链接。 | 纯外跳链接,无嵌入、无脚本;它不会收到任何关于你工具使用情况的数据。 |
chromewebstore.google.com | 外跳链接 | 扩展安装与商店列表链接。 | 仅外跳、新标签页打开;商店只会看到一次普通访问,永远不会看到工作区内容。 |
fonts.googleapis.com / fonts.gstatic.com | 构建期获取 | 通过 next/font 在构建期下载 Barlow 字体文件。 | 运行时字体由本站自有静态路径提供;使用 Toolars 期间你的浏览器不会向 Google Fonts 发起请求。 |
vercel.app (hosting platform) | 基础设施 | 托管平台,承载 Toolars 的每一个响应。 | 只看到任何主机都会看到的请求元数据(IP、请求头);工具输入与输出不会经过它。 |
cloudflare.com (DNS + proxy layer) | 基础设施 | toolars.com 的 DNS,以及分析域名背后的代理层。 | 处理与托管层相同的请求元数据;工作区内容不会流经它。 |
清单于 2026-09-19 从已部署源码审计得出:全树外部域名搜索、next.config.ts 中的图片白名单,以及 ADR 007 中的分析契约。
这些是每一个 Toolars 页面上的响应头,读取自同一份生成配置的声明——此表不可能与实际下发的内容产生漂移。
| 响应头 | 值 | 含义 |
|---|---|---|
Strict-Transport-Security | max-age=63072000; includeSubDomains | 浏览器在两年内仅通过 HTTPS 连接 toolars.com,并包含子域名。 |
X-Content-Type-Options | nosniff | 浏览器拒绝猜测内容类型,阻断一种常见的偷渡式下载手法。 |
Referrer-Policy | strict-origin-when-cross-origin | 完整 Referrer 只发给同源;跨源请求最多暴露裸主机名。 |
Toolars 目前不发送全站 Content-Security-Policy 响应头,本页也不会假装已设置。一个屏蔽错源的策略会破坏账号同步或已批准的分析代理,因此该控制正按 ADR 010 先针对真实路由与浏览器行为设计。上方的响应头今日生效,此处列出的每个网络边界都在代码中强制执行并有测试覆盖。 docs/adr/010-local-processing-evidence.md
除了浏览器不需要任何工具。请使用无害的合成文件或示例文本——绝不要用真实敏感数据,也不要公开包含它的截图或 HAR。
同样的流程我们已经替你跑过。下面每张卡片都由 scripts/capture-privacy-proof.mjs 驱动真实无头浏览器、针对生产构建生成;实测请求数作为类型化数据入库,一旦出现上传、跨域请求或金丝雀泄漏,脚本会直接报错失败。
一次完整的 PNG → JPEG 转换加下载,测试文件中藏有金丝雀标记:实测窗口内 0 个请求、0 个上传、0 次标记泄漏。
一次 HEIC → JPEG 转换加下载:约 3.3 MB 的 libheif 懒加载解码器首次使用时只从本站路径加载;实测的第二次转换产生 0 个请求、0 次上传、0 次金丝雀泄漏,带金丝雀文件名的照片从未离开设备。
/generated/runtime/7879e1c92e1bdb08/libheif.js/generated/runtime/e4aa8333fbe55ec7/libheif.wasm/generated/runtime/6c728441042ea88c/heic-decode-worker.js首次使用时,引擎、worker 和所选语言包(共 13 种,每个 0.4–2 MB)仅从本站路径加载(/generated/runtime/775a35df6f2ae100/tesseract-core-lstm.wasm.js · /generated/runtime/89456b34c2769c9a/chi_sim.traineddata.gz · /generated/runtime/d8438d6a4fba7bc3/eng.traineddata.gz · /generated/runtime/e4d26dedc913c87f/worker.min.js);英语和简体中文的重复识别各产生 3 个请求、0 次上传。
GET /generated/runtime/e4d26dedc913c87f/worker.min.jsGET /generated/runtime/775a35df6f2ae100/tesseract-core-lstm.wasm.jsGET /generated/runtime/d8438d6a4fba7bc3/eng.traineddata.gz加载内置示例、旋转并下载结果:实测窗口内 0 个请求、0 个上传、0 次标记泄漏。
登录仅通过 Supabase 同步收藏(仅工具名)和账号状态,并有行级安全保护。工具工作区从不调用账号后端:处理无需账号,也不会向账号发送任何内容。
上方清单由对部署源码的全树搜索生成。这些域名没有一个可从工具工作区触达:它们在工作区加载零脚本、接收零工具数据。
track.toolars.com分析us.posthog.com分析project ref .supabase.co (NEXT_PUBLIC_SUPABASE_URL)账号后端avatars.githubusercontent.com头像图片lh3.googleusercontent.com头像图片buymeacoffee.com外跳链接chromewebstore.google.com外跳链接fonts.googleapis.com / fonts.gstatic.com构建期获取vercel.app (hosting platform)基础设施cloudflare.com (DNS + proxy layer)基础设施更强的做法:预热后断网再跑一次。文本与图片工具仍可工作;PDF 工具需要预热时已见过的同源 Worker 资产,这正是我们没有宣称 PDF 可离线使用的原因。
本地优先在这里是架构,而不是口号。三种机制让你的数据留在标签页内。
哈希、正则求值、Diff、编码与流处理都在专用 Web Worker 中运行,这些 Worker 由 scripts/build-tool-workers.mjs 从 TypeScript 编译。Worker 是来自本站的同源脚本,即使数 MB 的输入在后台运转,标签页依然保持响应。
OCR 引擎(约 4 MB)和每个 0.4–2 MB 的语言包,以及 PDF 运行时,仅在你打开工具后从本站静态路径加载。识别与解析均在本地执行,不会上传任何内容进行处理。
工具的执行包只在你打开该工具时下载——目录页和首页绝不加载。浏览目录只传输元数据,你可以在同一个 Network 面板里轻松确认。
下面列出的检查中,有一项已经公开:隐私实证采集脚本以 MIT 许可证发布在 https://github.com/aixtral/toolars-open,你可以自己针对线上站点重新运行它。其余命令仍在私有仓库中运行,使用锁定的 Node 和 pnpm 版本,其方法在本页概述。
机器可读的验证回执——命令、测量结果,以及它不能证明什么: 回执 JSON。
| 脚本 | 命令 | 它验证什么 |
|---|---|---|
本地处理验证套件scripts/verify-local-processing.mjs | corepack pnpm verify:local-processing | 重新构建站点,在全新浏览器上下文中阻断网络,用合成金丝雀重跑代表性 Workflow,并把源码与构建指纹比对生成回执。任何重试、跳过或漂移都会使运行失败。 |
开放核心依赖审计scripts/audit-local-core.mjs | corepack pnpm audit:local-core | 绘制开放面候选的执行依赖图,记录源码 SHA-256 哈希、已安装依赖版本与许可证文本。 |
Worker 构建scripts/build-tool-workers.mjs | corepack pnpm worker:build | 把每个浏览器 Web Worker 从 TypeScript 源码编译为 public/generated 下带内容哈希的文件,保证所服务的 Worker 正是被审查过的源码。 |
基准测试套件scripts/benchmark-tools.mjs | node scripts/benchmark-tools.mjs | 测量每个工具可接受的最大输入、运行时间中位数与零泄漏网络隔离,然后写入基准页背后的类型化数据。 |
隐私实证采集脚本scripts/capture-privacy-proof.mjs | node scripts/capture-privacy-proof.mjs | 在无头 Chromium 中驱动一次图片转换、OCR 引擎和一次 PDF 旋转,同时记录每个请求(包括 Web Worker 发出的请求),随后写出本页渲染的实证 JSON。一旦出现上传、跨域请求或金丝雀泄漏即判失败。 |
基准页呈现真实无头浏览器中产出的数据,包括证明输入留在设备上的金丝雀运行。
本地优先不等于零网络。以下功能会发送数据,因为它们本就依赖网络,而每一项都写明了什么会离开设备。
登录会通过 Supabase Auth 和带行级安全策略的 Postgres 同步收藏与账号状态。工具输入与输出从不属于该同步——每个工作区在未登录状态下都可使用。
页脚表单只把你输入的邮箱地址发送给 Supabase RPC。关于订阅的分析事件绝不携带该地址,遵守 ADR 007 允许清单。
这些表单通过带身份验证的服务端动作提交你撰写的文字与表单元数据,每个表单在发送前都会说明确切载荷。工作区内容绝不附加。
首次使用时,OCR 工具会从本站 /ocr 路径下载约 4 MB 引擎文件和每个所选语言 0.4–2 MB 的语言包。下载均为同源;图片与识别文字留在当前标签页,已下载的语言包仅保存在浏览器的离线缓存中。
PDF 导入与导出会重启 PDF.js Worker,它会重新获取预热阶段已见过的同源静态资产。这正是我们没有为 PDF 工具宣称完整离线可用的原因。
扩展安装链接指向 Chrome Web Store,可选的支持按钮指向 Buy Me a Coffee。两者均为普通外跳链接;都不会把第三方脚本嵌入 Toolars 页面。
没有第三方安全审计,也没有合规认证。单独发布的隐私实证采集脚本和两个本地 Node 包以 MIT 许可证发布;网站自身的源代码并未发布,也不授予任何许可证。本页只展示今天可验证的内容。
第三方声明——本站再分发的组件及其完整许可证文本: 声明与许可证文本。
对每个可用工具而言,是的:每个工具都有类型化运行时清单,声明在浏览器中处理、输入不离开设备、无保留。本页标签由这些清单生成。任何未来的云端或混合工具必须先披露边界才能上线。
设计不当的 CSP 会破坏账号同步或已批准的分析代理,因此该控制正按 ADR 010 先针对真实路由构建。在此之前,本页如实披露已生效的响应头和可能存在的外部连接,网络边界由代码强制执行并有测试覆盖。
不会。PostHog 以无 Cookie 方式运行,自动捕获、会话录制、持久化与人员画像全部禁用。允许清单只包含净化后的页面浏览、十六个指定产品事件、Web Vitals 与异常——绝不包含输入、输出、文件名或搜索词——事件只通过首次方代理域名发出。
它们在构建时从运行时注册表与目录推导,基准页则展示其数据背后的实测运行。如果目录标签与运行时清单出现分歧,分歧会直接印在本页,而不是被平均掉。
基准页呈现真实无头浏览器中产出的数据,包括证明输入留在设备上的金丝雀运行。