技术笔记
浏览器里的工具为什么大多不用联网
哈希、格式化和编解码可以停在页面里。DNS、证书和「我的 IP」不行。这篇把两条数据路径分开,并说明怎样自己确认输入有没有被发出去。
作者 Brook/更新于 2026-10-09/约 12 分钟
「在浏览器里运算」指的是哪一段代码
页面上的 JavaScript 跑在你的机器上。JSON.parse、TextEncoder、Web Crypto、Canvas、DOMParser 这些调用的输入和输出都在这个页面的内存里,函数本身不会打开网络连接。所谓本地工具,就是结果只来自这些调用,计算过程中没有把你粘贴的内容放进请求体。
这不等于「打开网站的时候没有任何请求」。HTML、脚本和样式仍然要从服务器下载,否则页面无法显示。下载的是程序,不是你的输入。界限要划在「输入是不是请求的一部分」上,而不是划在「这个标签页有没有用过网络」上。
本地工具的数据停在这三层
- 01输出留在页面上的结果你可以复制。站点不会因为你点了格式化就收到这份文本。
- 02运算浏览器里的 API解析、Web Crypto、Canvas、DOMParser。它们不发起业务请求。
- 03输入你粘贴的内容只进入这个页面的内存。刷新会丢掉,除非你自己打开了本机草稿。
草稿如果打开,写的是这台浏览器的 localStorage,键在本机,不会同步到账号,因为站点没有账号。分享链接则是另一条路:你主动点分享时,输入会被放进地址栏的 hash。hash 不会随 HTTP 请求发给服务器,但你如果把整段 URL 复制给别人,对方打开就能看到同样的输入。不点分享,就不会生成这段 hash。
有四类问题必须离开本机
浏览器不允许任意网页对任意主机发 DNS 查询、做 TCP 握手或读取「访问这个网站的公网地址是什么」。这些信息不在页面的权限里。要回答它们,只能由一台已经在网上的服务器代为询问,再把结果返回页面。代为询问的那一步,查询的域名、要查看的证书主机名、或者你的连接信息,会到达那台服务器。
停在本机
输入就是待处理的数据。
- JSON、YAML、XML 的解析和打印
- 哈希、HMAC、AES
- Base64、URL、JWT 解码
- 正则、diff、时间戳、图片处理
必须出去
要问的是这台浏览器外面的网络。
- DNS 解析结果
- TLS 证书链
- 某个 URL 的响应头
- 当前连接的公网 IP
这四类页面不应该假装自己也是纯本地的。输入框旁边需要写明查询会经过服务端。它们询问的是域名、主机名或连接本身,不是你在别的工具里粘贴的文档。不要把一份私钥或一份客户 JSON 拿去「顺便」做网络检测。
统计和广告脚本看得到什么
站点使用的测量和广告脚本能看到页面级的信息:你打开了哪个 URL、大致的设备和地区、它们自己设置的 Cookie。它们拿不到某个工具输入框里的字符串,除非那段字符串被放进了 URL。本地运算不会把输入变成请求参数。这个界限要靠请求列表来核对,而不是靠一句承诺。
广告脚本的存在是为了支撑站点,它不参与格式化或解码。拦截第三方脚本之后,工具按钮仍然应该能用,因为计算不依赖它们。如果某个工具在拦截之后突然不能运算,那才说明它错误地依赖了外部请求,值得当成缺陷来看。
怎样自己确认输入没有发出去
打开浏览器的开发者工具,切到网络面板,勾选保留日志。在一个本地工具里粘贴一段独特的文本,比如一串随机字符,然后点格式化或计算。在请求列表里搜索这串字符。本地工具的过程中,不应该出现包含这段字符的请求。脚本文件的下载、字体和统计请求可以存在,它们的内容里没有你的输入。
- 先清空网络记录,再粘贴,避免和页面加载的请求混在一起。
- 搜索的是你的输入,不是工具的名字。
- 分享按钮只有在你点击之后才会改地址栏,那一步是你主动把输入放进 hash。
- DNS、证书、响应头、IP 这四个页面相反:它们本来就会发出查询,页面上应有说明。
本站把这条界限写进工具页和隐私说明,并用上面的办法可以复核。技术笔记讲的是原理,工具页上的按钮负责做事。两边对不上时,以网络面板里的请求为准。