打开浏览器的开发者工具,切到“网络”面板,清空列表,然后选一个文件并处理:列表里不应该出现带着你文件的新请求,也不应该有发往其他网站的请求。你会看到的请求只来自三处:页面加载、你主动要求的辅助组件(来自本站的模型和 WebAssembly 文件),以及 Cloudflare 的统计信标。
为什么要检查
本站每个页面都说文件在你的浏览器里处理、不会上传。这是一句声明,而关于隐私的声明,说出来不费什么力气。本站的源代码没有公开,所以这一页不请你去读代码,而是教你看页面实际做了什么。浏览器会记录页面发出的每一个网络请求,并且让任何人都能查看这份记录。
在 Chrome 或 Edge 里检查
- 打开要测试的工具页面,比如清除照片元数据的那个工具。
- 按 F12 打开开发者工具(也可以用快捷键:Mac 上是 Cmd+Option+I,Windows 和 Linux 上是 Ctrl+Shift+I),点“网络”(Network)标签。
- 勾选“保留日志”(Preserve log),这样页面变化时列表不会被清掉;再点清除按钮(一个带斜线的圆圈),把列表清空。
- 在工具里选一个文件,等它处理完。点工具要求的按钮,比如“开始”或“导出这张图片”,然后下载结果。
- 看列表。在过滤框里输入
method:POST,只显示发送数据的请求;再输入-domain:startprivate.com,只显示发往其他网站的请求。在文件处理期间,这两个过滤条件下都不应该出现任何东西。
在 Firefox 里检查
- 打开工具页面。
- 在 Windows 和 Linux 上按 Ctrl+Shift+E,在 Mac 上按 Cmd+Option+E,直接打开网络监视器。
- 在面板的设置菜单(齿轮图标)里,打开“持续记录”(Persist Logs),再点垃圾桶图标清空列表。
- 选一个文件并处理,然后下载结果。
- 读一遍列表。过滤框接受同一类过滤条件,比如
method:POST;点任意一行,就能看到它发往哪里、带了什么。
在 Mac 上的 Safari 里检查
- 选取“Safari 浏览器”>“设置”,打开“高级”,勾选“显示网页开发者功能”。菜单栏里会出现“开发”菜单。
- 打开工具页面,再选取“开发”>“显示网页检查器”(Option-Command-I),点“网络”标签。
- 用垃圾桶按钮清空列表。
- 选一个文件并处理,然后下载结果。
- 看看有没有新出现的行;如果有,点一下,查看它的地址和方法。
在 iPhone 或 iPad 上,Safari 自己没有“网络”面板。可以在手机 Safari 设置的“高级”里打开“网页检查器”,用数据线把手机连到 Mac,再从 Mac 的“开发”菜单检查手机上的标签页。安卓上的 Chrome 也能用同样的方式检查,从电脑版 Chrome 打开 chrome://inspect 即可。
你会看到什么,代表什么
页面加载时:页面本身、一个样式表、/assets/ 下的几个脚本文件,有时还有一个小的语言文件,以及图标和应用清单。这些都来自 startprivate.com。另外还有一个统计脚本,地址是 static.cloudflareinsights.com。
点了需要辅助组件的按钮时:一批发往 startprivate.com 的 GET 请求,取回程序文件和模型,比如 /v/ 和 /assets/ 下面的文件。这是在下载人脸识别模型(约 1 MB)、文字识别程序、内容凭证(C2PA)读取器(约 8.6 MB)、Office 处理库或者密码词表。这些是发到你这边来的文件,不是你的文件发出去。点开其中一个,会看到它是一个请求正文为空的 GET 请求。
选好文件并处理时:没有任何离开你设备的新请求。你可能会看到地址以 blob: 或 data: 开头的条目。这些是你浏览器内部的地址,用于预览和下载,不会发到网络上。
统计信标:Cloudflare 的网站统计服务(Web Analytics)在页面加载时发送一份小报告,页面被隐藏或关闭时再发一次,所以切到别的标签页也可能多出一行。根据本站的提供方式,它发往本站的 /cdn-cgi/rum,或者发往 cloudflareinsights.com。点开它,查看请求载荷:里面是页面计时数据和页面地址,没有文件内容。如果你用内容拦截器挡掉它,工具照样完全正常。
一个有意的例外:在密码强度页面上,勾选“检查已知数据泄露”会向 api.pwnedpasswords.com 发一个 GET 请求,里面是哈希值的 5 个字符。这个选项默认关闭;除此以外,任何页面都只允许连接本站和统计地址。
第二道防线:安全策略
每个页面发出时都带着一个 Content-Security-Policy(内容安全策略)响应头。它告诉浏览器的事情里有这几条:页面只能连接本站和 Cloudflare 的统计地址,只能加载本站的脚本和那个统计脚本。如果页面上有任何代码想把数据发到别处,浏览器自己就会拦下来,并记录一条错误。你可以在“网络”面板里看到这条策略:点第一行(页面本身),在“响应标头”下面找 content-security-policy。在密码强度页面上,你会在里面看到多出来的一个地址,也就是泄露列表。
每个页面里的脚本和样式还带着子资源完整性(Subresource Integrity)哈希值,所以文件和页面预期的版本对不上时,浏览器会拒绝运行它。
每类工具怎样工作
照片(JPEG、PNG、WebP、HEIC)。 元数据在字节层面删除。工具逐个走过文件的段、块或盒子,丢掉装着 EXIF、GPS、XMP、IPTC、厂商注释、内容凭证、注释和内嵌缩略图的那些,图像数据原封不动地复制过去。图片从不解码,也不重新编码,所以和原图逐像素相同。旋转标记和色彩配置文件会保留,照片才能正确显示。色彩配置文件原样保留,连同里面的短文字(说明、版权行,有时还有某台设备的名字或制作这份配置文件的人的名字):结果会把它列在剩下的内容里,EXIF 查看器会显示这些文字。在“只清除定位”模式下,EXIF 块就地编辑,而且只在工具能把它完整读完时才这样做:固定清单上的条目(日期、相机、拍摄参数、序列号、所有者和作者姓名)如果装的是这类条目该装的东西,就留下;其他条目一律删除;清单上的条目如果写成了清单预期以外的类型或数量,或者某个保留下来的数字拼出了一个名字里的三个字母,也删除;读不到底的块整个拿掉。对数字的这项检查只涉及数值字段,也就是这个模式保留的 EXIF 数字,以及色彩配置文件里的数字(两种模式都保留色彩配置文件);相机和手机不会在那里写名字,只有故意构造的文件才会。它能发现以普通字节、UTF-8 或 16 位字符写成的拉丁、希腊和西里尔字母,包括写成单独附加符号的重音;以单个字节存放的带重音字母,以及其他文字(中文也在其中),没法和数字区分开。在色彩配置文件里,配置文件的大小和曲线的点数,只要和配置文件的结构一致、又没有超出真实配置文件的用量(1 MB、64 个标签、4096 个曲线点),就不会被当作字母;超出这个范围的配置文件,会被列为含有标准配置文件不带的数据。作者、版权这类文本字段是另一回事,见下文“限制”里“只清除定位模式下的相机和姓名”一条。JPEG 存在主画面后面的数据,比如 Ultra HDR 增益图或动态照片里的视频,一律删掉。工具无法从头走到尾的文件会直接拒绝,它不涵盖的类型也一样:算术编码和分层模式的 JPEG、HEIC 图像序列、动态 AVIF,以及带有陌生盒子的 HEIC。
视频(MP4、MOV)。 所有轨道里只保留画面和声音。其他轨道(GPS 和传感器遥测、时间码、相机专用数据,以及字幕轨,除非你选择保留)的数据用零填满并标为空闲空间,udta、meta 和 uuid 这类元数据盒被清空,创建和修改时间设为零。有一个 uuid 盒会保留:360° 视频轨道里 Google 的球面视频盒,里面写着投影方式和拼接软件的名称,播放器要靠它才能以 360° 显示视频;结果会把它列为保留项。在保留下来的轨道的编码参数中,画面轨编码为 H.264、H.265 或 ProRes 时,有一个字段会被清空:描述里编码器写自己名字的那个位置(GoPro 文件在那里写着“GoPro AVC encoder”),除非那里只写着编码格式的名称。其他编码格式保留这个字段。其余部分不作编辑,仍可能写着编码器的名字,结果会把每个这样的名字连同它的原文列出。文件长度不变,画面和声音不重新编码,输出是由原文件的一个个切片加上一些小补丁组装起来的,所以几 GB 的文件也不需要整个装进内存就能处理。
Office 文件(DOCX、XLSX、PPTX)。 这些是装着 XML 文件的 zip 压缩包,在后台线程里解压,分两个互不相干的步骤处理。清理程序先上场。它删除作者和公司属性、批注及其作者、自定义属性、隐藏文字、编辑会话编号、共同创作记录、加载项标记、邮件合并和网页发布设置,以及敏感度标签数据;修订则按你的选择处理,要么全部接受,要么隐藏修订人。凡是能确定一个值就是某个文件所在位置的地方,文件夹路径都缩短成文件名:链接的目标、只由路径组成的图片说明、Word 域要插入的文件(不包括域代码里的其他文字),以及 Excel 公式里指名另一个工作簿的位置(不包括引号之间输入的文字)。在其他地方找到的路径照原样保留,并在结果里列出。有一种情况两头都落空:公式用几段文字拼出来的位置,认不出是路径,只有本身就像路径的那一段会列出。有些东西是有意保留的:数字签名、正文里显示作者或文件名的域、数据连接、加载项数据、链接背后的邮箱地址,以及指向内部网络地址的链接。第二步是对生成文件的独立检查。它和清理程序不共用任何清单,按部件、按属性把输出和公开发布的格式定义(微软 Open XML SDK 附带的架构数据)逐一比较。一个部件、元素或属性,只有定义认得它,而且检查下来是干净的,才算已检查。除此之外的一切,包括有意保留的项目,以及工具不认识的部件或标记,都会连同所在部件的名称列在结果顶部,取代“文件已清理干净”这类说法。最后一步,从原文件读出的姓名、姓名缩写和账号标识,会在清理后文件的每个部件里查找,找到的也会列出。如果文件属性里记录的姓名(作者、最后保存的人、批注的作者等)也出现在文档自己的文字里,不论那段文字显示还是隐藏,都会列在警告里;名字留不留,由你检查后决定。有几种情况只给一条不显眼的说明,而不是警告:内容里有读起来像文件夹路径、内部地址或账号的文字(见下文的限制);以及没能查找的记录姓名,原因要么是它只有一两个字母或数字,要么是原文件里装着它的那个部件读不了。一个部件被符合规范的 XML 读取器拒绝时,即使在里面找到了姓名,也算没读;带有文档类型声明的部件,或者声明的编码不在 UTF-8、UTF-16、windows-1252、ISO-8859-1 和 US-ASCII 之列的部件,也一样。“User”这类少数几个默认词根本不查找,下文“限制”一节列出了它们。部件逐个解压,并有固定上限(单个部件或单张图片 64 MB;所有文本部件合计 256 MB;包里的全部内容合计 512 MB,图片和没打开的部件都算在内;一个部件里一百万个 XML 节点,每个元素、每条注释和标签之间的每段文字各算一个;嵌套 512 层,一遍读完的部件 2048 层;一个元素 2000 个属性;包里 10000 个条目),所以专门做来耗尽内存的文件会被拒绝,而不是被处理。清除前后对照表列出改动了什么。内嵌的照片(JPEG、PNG、WebP、HEIC)交给照片清理程序;其他内嵌图片、媒体文件或对象不打开,并报告为仍留在文件里。
内容凭证查看器。 页面先在本地查看文件里到底有没有 C2PA 数据。只有有的时候,才加载读取器,并且设置成不获取远程清单、吊销状态或信任列表。所以它报告的是签名是否完好,而不是签名者是否可信。
打码。 编辑器在画布上画一份工作副本,每边上限约 2048 像素,框的位置按原图坐标记录。导出时,后台线程用原尺寸图片重新绘制并盖上遮挡,再编码成一个新文件,所以不会带出任何元数据。如果浏览器无法以原尺寸编码,会改用 4096 像素再试一次。人脸识别用的是在 TensorFlow.js Web 上运行的 YuNet 模型;文字识别用的是 Tesseract OCR 引擎,加上规则匹配和 ZXing 条码读取器。
密码和密码短语。 所有随机数都来自浏览器的 crypto.getRandomValues,并用拒绝采样保证每个字符或单词出现的概率都相同。生成的任何内容都不保存、不发送。
文件哈希。 文件在后台线程里按 8 MiB 一片读取,交给 hash-wasm 里的 SHA-2、SHA-1 和 MD5 实现计算。
文本加密。 使用浏览器 Web Crypto API 提供的 AES-256-GCM,密钥由 hash-wasm 的 Argon2id 从密码派生(64 MiB、3 轮)。
密码强度。 zxcvbn-ts 在页面里给密码评分;上面说的泄露检查,是唯一可能发出请求的部分。
限制
这些工具删除它们认得的东西,并列出它们保留的东西。所以,结果什么都没列出,意思是“没有找到本工具检查的任何内容”,并不等于“这个文件没有透露任何关于你的信息”。下面是这些工具做不到的事。
- 公式拼出来的路径。 Excel 公式可以用几个独立的字符串拼出一个地址或文件夹路径,比如
="D:\Team\" & B2 & "\plan.xlsx"。要看出结果是一条路径,就得把公式算出来,而工具只读公式。单独一段看起来像路径的(这里是"D:\Team\")仍会列出。 - 常见默认词充当的名字。 如果 Office 文件属性里记录的姓名或公司恰好是“user”“admin”“administrator”“owner”“author”“guest”“unknown”“test”或“microsoft”之一,不论大写小写,这个属性照常删除,但不会在文件其余部分查找这个词。普通文件的字体、主题和样式名里就有这些词,几乎每次找到的都会是误报。只有一两个拉丁字母或数字的记录姓名、公司或账号(“HP”“Jo”)也不查找,不含任何字母或数字的值和全由零组成的标识也一样;遇到这些情况,结果会针对那个文件说明。用其他文字写的名字,比如中文或阿拉伯文,不论多长都会查找。Word 和 PowerPoint 存在批注作者旁边的姓名缩写,是这条说明的唯一例外:缩写只有一两个字母或数字时不查找,也不作说明,因为会被查找的作者全名就紧挨着它。三个字符及以上的缩写,和姓名一样查找。
- 写成编码的名字。 清理后,工具会在文件里查找原文件记录的每个姓名、每组缩写和每个账号。每段文字先按原样比较一遍,再在还原一份固定的写法清单之后比较一遍,清单一共十项:XML 字符引用(
J);Excel 用的_x004A_形式;百分号转义(%4A);字母大小写、字符全角半角以及不显示的字符上的差别;公式里写了两次的引号;带引号的工作表名或工作簿名里写了两次的撇号('O''Brien'!A1);Excel 页眉页脚里表示“&”的&&;链接地址?之后表示空格的+;Word 域代码里的\"和\\;以及文献管理软件存进域代码的 JSON 文字转义(\u004A)。每一项只在格式用到它的那类位置上起作用。除此之外一概不解码:存成 base64 的名字、xn--形式的国际化域名,或者用数字格式的反斜杠拼出来的名字(\J\a\n\e),只有在别处也以普通形式出现时才找得到。 - 文档自己内容里的路径和内部地址。 文档的正文、工作簿的单元格和幻灯片上的文字都是你的,工具不改。不过,如果那里有文字读起来像带盘符的文件夹路径、网络共享、个人文件夹(
~、/Users/…、/home/…)或%USERPROFILE%这样的变量,像内部网络里的地址(http://intranet/…),或者像账号标识,工具会在结果下方的“补充说明”里指出来。说明写的是这段文字看起来像什么,并不断定它就是。其他形似路径的文字不会提示:网址里的路径部分(/v1.0/teams)、XPath、以//开头的一行示例代码、localhost、写在花括号里的占位主机名。同样的值如果出现在读者看不到的地方(属性、定义的名称、链接目标、域代码),照旧列在文件里还有的内容那一栏。 - 按写法判断网页链接。 每个指向公开网页的链接都会列出,因为链接背后的地址不显示在页面上。以 Word、Excel 和 PowerPoint 常规写法挂在文字、单元格或图片上的链接,列为“补充说明”里一条不显眼的说明。以其他方式写下的链接(在页眉或批注里、在鼠标悬停动作上、在被合并覆盖或看似空白的单元格上、在数学公式里、在幻灯片没有显示的版式下面),不论看不看得见,都列为文件里仍有的链接,因为工具不去推算这种链接显示在哪里。这里说的链接,指点击时程序会打开的那种:挂在文字、单元格、形状或图片背后的超链接,Word 的 HYPERLINK 域,以及地址完整写出的 Excel HYPERLINK 公式。只是写下来的网址,不论在正文里、图片的替代文字里还是链接的屏幕提示里,都当作文字处理,适用上面关于内容和文件记录文字的规则。
- 显示着、却很难看到的文字。 Office 文件可以用自己的开关隐藏内容:“隐藏”字体效果、设为隐藏的对象、隐藏的行、列、工作表或幻灯片、设为不显示的数学公式部分。工具会读这些开关。对于开着的文字,它不判断格式让文字变成了什么样:白底白字、1 磅的字号、压在段落上面的形状、拖到幻灯片或页面外的对象。这样的文字当作普通内容处理,请自己查找;各个 Office 页面写了该去哪里找。
- 显示着的对象的名称和替代文字。 显示出来的图片、形状或控件,名称和替代文字都是文件的一部分,不会报告为隐藏内容;只有隐藏的或不绘制的对象,才会把它们列出来。只是一条文件夹路径的名称或替代文字,会像其他路径一样缩短。较长的名称或替代文字里如果夹着路径、内部地址或账号,会报告出来,文件属性里记录的姓名也一样。
- 接受和拒绝混在一起的修订。 Word 文档保留着修订时,打开它的人可以对每一处单独接受或拒绝。由这些单独选择产生的各种组合,不会逐一检查;检查的是每个人原本输入的内容,按他们输入时的样子。
- 图片画面里的东西。 图片的压缩数据和调色板照搬过去,没有人去看。人脸、车牌、房子正面、拍进或画进图片里的字,全都留着。盖住这些东西是打码工具(英文)的事。
- Office 文件里图片被裁掉的部分。 在 Word、Excel 或 PowerPoint 里裁剪图片,只是把边缘藏起来;整张图片仍在文件里,收到文件的人都能撤销裁剪。工具清理图片的元数据,但不碰像素,所以清理后裁掉的部分还在。要去掉它,在 Office 里选中图片,点“图片格式”选项卡上的“压缩图片”,再勾选“删除图片的裁剪区域”;或者把裁好的图片另存为一个新的图片文件,插入那个文件。
- Office 文件里二进制值编码的内容。 这些格式把少数值存成编码后的二进制数据:保护工作表或文档的那个密码的哈希值和盐值、墨迹的笔画。这种值是格式正确、长度符合其类型要求的二进制数据时,工具不试图从中读出含义。这类位置上格式不对的值,会和其他文字一样检查并报告;墨迹总是按部件逐个列出。
- “只清除定位”模式下的相机和姓名。 这个模式的定义就是去掉地点、留下这次拍摄的其他信息。相机品牌和型号、软件和镜头字段保留,所有者、拍摄者和版权字段也保留。这类姓名字段里有内容时,结果会把它显示在剩下的内容里。相机机身和镜头的序列号在这个模式下也保留,有内容的同样会显示在剩下的内容里,因为它在那台设备拍出的所有照片里都一模一样。
- 色彩配置文件。 配置文件会保留,因为删掉它会改变颜色,结果会把它列出来。超出标准配置文件通常包含的文字(说明、版权行、设备名称)的其他文字,会单独列成一项,并由 EXIF 查看器显示;工具不改写它。
- 长段文字里少见写法的文件夹路径。 能识别的:从第一个字符到最后一个字符都是路径的值,或者域代码里一整个带引号的参数。也就是一个根(后面带或不带斜杠的盘符、网络共享、
/、~、小写的file:地址、环境变量、旧式 Mac 的Macintosh HD:),后面跟着两个或更多名称;不需要文件扩展名。在盘符、共享、个人主文件夹或环境变量之后,两种分隔符可以混着用(C:\Users\Alice/Documents/a.docx,为多个系统编写的程序会写出这种路径);在单独的/之后,各个名称必须用同一种分隔符隔开。有两种根要求更多,即使整个值只有这条路径也是如此。自己命名的旧式 Mac 磁盘上的路径,只有一直写到带扩展名的文件名才算:Work Disk:Profiles:Alice:secret.docx这样的写法会被认出,Work Disk:Profiles:Alice:plan不能,因为IT:Applications:Support这类用冒号分隔的标签也是这样写的。首字母大写的File:,只有冒号后面跟着斜杠或盘符才算:File:Users不识别,因为File:Flag_of_Japan.svg这样的维基页面标题就长这个样子。在较长的文字里,能识别常见写法:盘符后跟斜杠(C:\或C:/)、网络共享(\\server\share)、file:地址、/Users、/home和其他常见系统文件夹、~/、%USERPROFILE%\Documents这样的环境变量路径,以及旧式 Mac 的Macintosh HD:Users:…。可能识别不了的,是长段文字中间写法较少见的路径。一个例子是“见 C:x\Alice\notes”里这种相对于驱动器的写法。另一个是句子中间后面什么都没有的根,比如“稍后去 ~jane/ 找”或“稍后去 \\fs01\ 找”:这时根里写出的账号或机器名不会被挑出来。这种光秃秃的根,只有在它是域代码里一整个带引号的参数时才能识别。识别出的每条路径,要么被缩短,要么被列出。 - 视频里的编码器名称。 轨道编码为 H.264、H.265 或 ProRes 时,描述里的编码器名称字段会被清空(GoPro 片段里写着“GoPro AVC encoder”,用 FFmpeg 导出的文件里写着“Lavc61.19.101 libx264”),除非它的整个值就只是一个编码格式名(“H.264”“AVC Coding”“HEVC”“HEVC Coding”),这样的保留、也不列出。其他编码格式保留这个字段,并把它列出:有的解码器要读它(FFmpeg 按它选择未压缩视频的像素布局)。编码器或相机软件写名字的其他位置,在清理后的视频里都留着,不论哪种模式:轨道描述和处理器里四个字母的厂商代码、其他编码参数里的文字,以及有些编码器放在画面或声音数据最开头的签名,这些都是解码器要读的部分。改写它们还没有证明对播放是安全的,所以不动。结果会把在文件里找到的名称按原样列出:显示前五个,其余只计数,每个文件最多收集 32 个,太长的在 100 个字符处截断。这样的名称一般说明录制用的是什么程序或什么相机型号。不过,工具不判断文字的意思,编码器的签名里可能不止有名字,比如还有编码这段视频的那台电脑上的文件夹路径。
- HEIC 里的预览图。 HEIC 作为独立数据项存放的预览图会保留,结果会列出它。以 JPEG 数据项存放、自带元数据的预览图会被清理。在手机上裁剪或编辑过的照片,可能带着一张较早的预览图,显示的仍是改动之前的样子。
- 一段特别长的文字。 在单个元素里,检查最多保留 4194304 个字符的文字,约 400 万个。含有更长文字的部件照样清理,但列为未检查,不会列为干净。在工具测试用的真实文件里,单个元素最长的一段文字有 39540 个字符。
- 少见布局里的计数。 在一些少见的布局里,某个姓名或别的项目,计数可能比实际出现的次数多或少,或者在它其实并不存在的地方被列为可能的匹配;不会因此漏掉任何东西。
- 专门做来躲过检查的文件。 故意构造、想把数据偷偷带过这些工具的文件,可能带着几种工具识别不了或删不掉的形式:没有任何 Office 程序会写出的拼写、填充或编码;互相矛盾或违反格式规则的部件;藏在照片 Photoshop 设置数值里的值,这些数值不会逐项显示;超大的元数据字段,可能拖慢查看器。
本站怎样测试
每个版本发布之前,都要经过:
- 单元测试:针对解析和清理代码,用真实的相机文件和小型合成样本,每个已知的陷阱都有一项测试:JPEG 旋转、WebP 文件头标志、HEIC 数据项位置、视频的 64 位偏移、分段 MP4、多条 GoPro 数据轨、大疆的两种字幕格式、Office 的修订和批注,以及大图降级处理。Office 文件方面,手工构造的文档覆盖 Office 页面列出的每一种结构;只有输出里的识别信息已经消失,或者结果里列出了对应的项目,这个用例才算通过。还有一项测试:独立检查一旦导入清理程序的代码,就判为失败。
- 浏览器测试:在 Chromium、Firefox 和 WebKit 里,按电脑和手机两种尺寸运行。给每个工具喂样本文件;从选文件到出结果之间,只要出现 GET 以外的任何请求,或者任何发往其他网站的请求,或者控制台报告错误或违反安全策略,测试就失败。
- 对输出的独立检查:用 ExifTool、ffprobe 和 LibreOffice 检查:工具报告已删除的字段确实没了,文件能正常打开,清理后的照片解码出来和原图像素完全相同,清理后的视频音视频数据包完全一致。清理后的 Office 文件还必须通过微软 Open XML SDK 的验证器,不能出现原文件本来没有的错误。
- 大文件:在手机模拟环境里测试 4800 万像素的照片、一段 2 GB 的视频和一批 50 个文件。
浏览器自己会透露什么
这一页讲的是文件。你的浏览器光是连接网站,就会告诉每个网站一些关于你的事,比如 IP 地址、大致位置、语言和屏幕尺寸。想看看你的浏览器向网站透露了什么(英文),可以另外做一次检查。
资料来源(以下链接为英文)
2026-10-11 核对。
- Chrome 开发者工具:“网络”面板:记录、“保留日志”和过滤条件。
- Firefox 网络监视器:用 Ctrl+Shift+E 或 Cmd+Opt+E 打开。
- Apple:启用网页开发者功能:“显示网页开发者功能”这项设置。
- Cloudflare 文档:Web Analytics 的数据来源和收集:信标从哪里加载、向哪里报告。
- GitHub 上的 Open XML SDK:Office 检查用来比对文件的公开架构数据。
最后更新: