「清除历史记录」删掉的是浏览器历史数据库里那张页面清单。它只是众多记录中的一种,而且在现代浏览器上它甚至不是最能出卖你的那一种——缓存下来的网站图标、站点存储、自动填充条目和 DNS 缓存,每一样都能各自独立地显示你去过哪里。

如果目标是让别人用你的设备时什么都找不到,你就得把整套都清掉,而且得知道哪些东西根本不在浏览器里。如果目标是让世界上任何人都不知道,那删除就是用错了工具:最要紧的那些记录,写在别人的服务器上。

你的设备实际上存了些什么?

比那张历史清单多,而且分布在更多地方。

存储位置 它暴露什么 「清除历史记录」会清掉吗?
历史数据库 网址、标题、时间戳
缓存 页面资源、图片、视频分片 只有勾选了才会
Cookie 和站点数据 登录状态、各站点的标识符 只有勾选了才会
localStorage / IndexedDB 应用数据,有时包括观看记录 通常跟着「Cookie 和站点数据」一起
Service Worker 缓存 页面完整的离线副本 通常跟着站点数据;有时会留下来
自动填充和表单数据 搜索词、用户名、地址 独立的一个勾选项
保存的密码 你持有的账号 不会——从来不包含在内
下载列表 文件名和来源网址 只有勾选了才会
下载下来的文件 文件本身 不会——要另外删
站点权限 你给哪些站点开了摄像头、通知 不会——在设置里清
网站图标数据库 每一个设过图标的域名 不会
DNS 缓存(操作系统) 最近解析过的域名 不会
同步副本 全部,在厂商的服务器上 取决于同步状态
系统缩略图和预览 你打开过的文件里的图像 不会

其中两项反复让人栽跟头。网站图标数据库会为每个域名留一行,不管对应的历史条目有没有被删掉。而 Service Worker 缓存可以保存一份能用的页面离线副本,有些浏览器会把它留着,除非你明确清除那个源的站点数据。

正确的清理顺序是什么?

顺序会改变结果,主要是因为同步。

  1. 先决定同步怎么办。 如果你是登录状态,就在还登录着、同步还开着的时候删,让删除动作传播到服务器上那份副本。先退出登录,远端那份就动都不会动。
  2. 勾全部类别,不要用默认那一组。 浏览器默认只勾很窄的几项,时间范围也很短。把范围设成「全部时间」,并勾上缓存、Cookie 和站点数据、表单数据以及下载记录。
  3. 单独清站点权限。 通知、摄像头、麦克风和位置的授权待在站点设置里,不属于任何一种历史删除。已授权的通知权限同时也是一个正在生效的安全隐患。
  4. 把下载的文件删掉。 清空下载列表并不会让文件从硬盘上消失,删完还要清空回收站。
  5. 在操作系统层面清空 DNS 缓存
系统 命令
macOS sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Windows ipconfig /flushdns
Linux(systemd-resolved) resolvectl flush-caches
  1. 去浏览器的账号后台看看。 如果浏览器厂商在服务器那一侧留了一份和你账号绑定的活动记录,那份记录在那里管理,不在浏览器里。

有哪些东西在你的设备上根本清不掉?

连接另一头写下的一切,以及中间的网络写下的一切。

记录 由谁持有 你能不能碰
连接日志 你的宽带运营商 碰不到
DNS 查询日志 你用的那个解析服务商 碰不到
代理和过滤日志 雇主、学校、受管网络 碰不到
路由器日志 路由器的所有者 只有路由器是你的才行
账号活动 你登录过的每一个站点 有时可以,通过账号设置
服务器访问日志 你访问过的每一个站点 碰不到
支付记录 你的银行和卡组织 碰不到

这条界线决定了清除记录能不能解决你的问题。面对共用一台笔记本电脑的家人,它管用。面对网络管理员或宽带运营商,它一点用都没有,因为你从来就没有在删他们那份。

为什么少存比多删更好?

因为删除是回溯性的,而且永远只删掉一部分,而不写下这条记录这两个毛病都没有。

能减少积累的几种实用配置:

设置 效果
「关闭所有窗口时清除 Cookie 和站点数据」 每次会话结束自动清空站点存储
为不同用途开不同的浏览器配置文件 把历史、Cookie 和权限分装在不同的容器里
专门关掉历史记录同步 本地历史不再上传,密码同步可以继续
关掉表单和搜索的自动填充 拿掉最容易被人原样引用的那一样东西
关掉「预加载页面」/预测功能 让浏览器不再去解析和抓取你从没访问过的页面

关于删除,有一个诚实的但书。在 SSD 上,覆写一个文件并不可靠地覆写物理块,而数据库文件在被压缩整理之前会一直留着已删除的行。普通的删除足以应付普通的好奇心,它本来就不是为了扛住取证检查而设计的。如果你的威胁模型里包括有人会给硬盘做镜像,答案是全盘加密加一个独立账号——而不是一套更彻底的清理流程。

相关问题