浏览器不支持(未启用)JavaScript,本页面的某些功能无法正常使用

Brave 数据复活记:重装系统后如何不丢标签页与扩展数据

Brave 数据复活记:重装系统后如何不丢标签页与扩展数据

重装 Windows 后,把浏览器数据从备份里拷回去,打开 Brave 却发现"因安全原因"丢了打开的标签页、固定标签页和扩展程序数据。本文基于 2026-08-26 与 2026-08-31 两轮实战(Default 完整恢复 + Profile 3 "DL" 扩展全丢后完整救回),讲清楚 Chrome/Brave 的数据机制、正确的备份/恢复姿势,以及所有试错后验证出的唯一正道

一、先搞懂四个机制,你就成功了一半

机制 1:会话文件分两套,只有一套能救你

Chrome 系浏览器的标签页恢复依赖两类文件:

① 活动会话文件(会无辜失踪的那套) - User Data\Default\Current Session / Current Tabs - User Data\Default\Last Session / Last Tabs

这是"进行中会话"的实时快照。浏览器正常关闭时,会主动删掉它们——所以当你看到"备份里没有 Session 文件",不代表没救,而是浏览器最后一次是干净退出的(这恰恰是好事)。

② 会话恢复快照(真正救你命的那套) - User Data\Default\Sessions\Tabs_1389xxxxx(标签页状态,十几 MB) - User Data\Default\Sessions\Session_1389xxxxx(每个标签的数据) - User Data\Default\Session Storage\(表单、页面局部状态)

这套文件由"会话恢复系统"持续落盘,浏览器退出时不会删除,专门用于崩溃恢复和"继续上次会话"。备份时只要这套文件在,标签页就能救回来(含最后写盘时刻的状态)。多 profile 同理:Profile N\Sessions\ 也在。

机制 2:扩展注册在哪——Secure Preferences,不是 Preferences(实战修正)

扩展的注册(启用的扩展清单、安装时间、来源)在 Secure Preferences 文件的 extensions.settings 里,不在 Preferences 里。 这是最容易踩的认知误区:

文件 受保护? 扩展注册
Preferences ❌ 明文、可手改 只有 extensions.install_signature.ids(扩展 ID 的签名记录,不受 MAC 保护,可作恢复依据
Secure Preferences ✅ 有 MAC 防篡改(protection.super_mac + 字段级 macs) extensions.settings —— 扩展注册真正所在

Secure Preferences 的 MAC 用 Local State 里的 os_crypt 密钥计算。手改 Secure Preferences 任何一个受保护字段 → MAC 失效 → 浏览器丢弃整个受保护区(扩展注册清空,只剩内置扩展)→ 写回一份"干净"的文件。

机制 3:"安全原因"重置的真实触发条件(实战修正)

旧认知:"外部修改了 Preferences 文件 → 重置"。实测真正的触发条件是:Extensions\ 目录与 Secure Preferences 里的注册不一致

  • 目录里有"未注册"的扩展本体 = 疑似外部注入 → 整体重置(清空注册 + 删除整个 Extensions 目录内容
  • 注册了但本体目录缺失 = 疑似被破坏 → 同上

也就是说:把扩展本体拷进 Extensions\ 目录这个"标准操作",在注册已被清空的状态下反而会触发重置并删掉你刚拷进去的东西。 这是本次 DL 恢复中反复被重置删目录的根因。

它重置什么、保留什么:

被重置/删除 被保留
extensions.settings 注册(只剩内置 PDF/Brave/应用商店) 书签、历史、密码、Cookie(数据库文件,不受影响)
Extensions\ 目录全部内容(扩展本体) Local Extension Settings\(多数情况保留)
部分扩展的设置项 IndexedDB\(实测 93 条 fanbox/kemono 数据完好)
Sessions\ / Session Storage\(标签页快照)
⚠️ 注意:扩展被"卸载"时(比如从 chrome://extensions 移除,或强制安装策略被移除)会连带删除 Local Extension SettingsIndexedDB 里该扩展的数据——这与"安全重置"不同,重置通常保留数据目录,卸载会删。所以卸载类操作前务必先备份数据目录

机制 4:加密链——Local State 的密钥,重装后就换掉了

User Data\Local State 里保存着加密主密钥(os_crypt.encrypted_key,DPAPI 加密)。它保护: - Secure Preferences 的 MAC(防篡改校验) - 密码库 Login Data、Cookie 的解密

重装 Windows 后:DPAPI 上下文(用户 master key)随旧系统消失 → 备份里的 Local State 的 encrypted_key 解不开 → 浏览器静默生成新密钥并重写 Local State。后果:

  • 备份里所有 Secure Preferences(旧密钥 MAC)→ 全部校验失败 → 首次启动各 profile 的扩展注册被逐 profile 重置(哪个 profile 先被打开就先重置哪个)
  • 备份里的密码库/Cookie(旧密钥加密)→ 无法解密,视为空库(新密钥下重新登录)

所以:重装后"从备份整体回拷 User Data"必然经历一次"安全原因"重置,扩展注册必丢。这不是操作失误,是机制使然。 书签/历史/标签页(不加密的 SQLite/快照)不受影响。


二、备份的正确姿势(事前,最重要)

  1. 完全退出浏览器(关闭所有窗口 + 托盘图标退出,确认 brave.exe 无进程)。运行中备份会漏掉锁定的文件。
  2. 整体拷贝 User Data 目录(9~10GB),绝不只拷 Default%LOCALAPPDATA%\BraveSoftware\Brave-Browser\User Data\ ← 整个目录 里面包含:Local StateDefault\ 及所有 Profile N\、Sessions 快照、扩展本体与数据。
  3. 校验:拷贝后对比文件数与总大小(差 5% 以内正常,差 20% 以上有问题)。
  4. 不要修改任何文件,也不要做"精简"(例如裁剪备份时把 Brave 目录删掉——本次事故的伏笔就是裁剪备份时以为"已恢复"而删了 Brave 目录,事后只剩 36GB 原始 RAR 里的副本)。
一句话:关浏览器、全量拷 User Data、一个字节都不要改、备份别裁剪。

三、恢复的正确姿势(事后,实战验证版)

第 0 步:认清现实

重装系统后从备份回拷,扩展注册必丢(机制 4)。目标不是"整体回拷免重置",而是:

  1. 恢复数据(LES / IndexedDB / Local Storage / Sessions——都不受 MAC 保护,可从备份任意合并)
  2. 重新安装扩展本体(唯一正道:Chrome 商店,见下)

第 1 步:恢复数据目录(任意合并,安全)

关闭浏览器后,从备份把缺失的数据目录拷回(robocopy 合并,只补不删):

Local Extension Settings\   ← 扩展设置/chrome.storage(重置会删部分,卸载会删全部)
IndexedDB\                  ← 扩展数据库(fanbox/kemono/脚本数据等)
Local Storage\              ← 站点本地存储
Sessions\ + Session Storage\ ← 标签页快照(若当前已恢复会话可跳过)

不要碰 Secure Preferences(MAC 保护区)和 Extensions\(放未注册本体 = 触发重置)。

第 2 步:商店重装扩展(唯一正道)

扩展 ID 由 manifest 里的 key(公钥)派生(SHA256(key) 前 16 字节,每字节高低 nibble 映射 a-p,共 32 字符)。商店扩展的 ID 是稳定公开的 → 从商店重新安装,ID 必然与原来相同 → 已恢复的 Local Extension Settings / IndexedDB 数据自动挂载(Chrome 按 ID 找数据目录)。

操作(每个扩展): 1. 打开商店直链 https://chromewebstore.google.com/detail/<扩展ID> 2. 点「添加到 Brave」(或"添加至 Chrome") 3. 点 Brave 弹出的「添加扩展程序」确认框 ← 这一步只能手动点,任何自动化都点不了浏览器 UI 弹窗 4. 验证:打开扩展面板/设置页,没有欢迎页 = 数据完整挂载

商店安装 = 正常扩展(自动更新、无特殊状态)。ID 相同的商店版会直接挂载旧数据目录里的数据。

第 3 步:验证

  • chrome://extensions 列表里扩展齐全、无"已损坏"标记
  • 打开每个扩展的设置页:配置/脚本/数据在(无欢迎页、无空白)
  • 固定标签页:手动重新固定(防篡改保护区内,不值得硬碰)

四、本次实战的完整踩坑记录(DL profile 恢复全历程)

背景:8/28 恢复时 Default/WaNo/Ranose 三个 profile 的扩展本体拷回了,DL (Profile 3) 的 Extensions\ 漏拷(空目录)。8/31 第一次打开 DL → 注册 10 条 vs 本体 0 个 → 触发重置 → 注册清空(只剩 2 个内置)+ 删空目录。用户看到"扩展记录消失"。

以下方案全部实测失败,勿再尝试:

方案 失败原因
把本体拷回 Extensions\ 目录 目录里有未注册扩展 = 注入嫌疑 → 整体重置并删掉刚拷入的目录
从备份直接覆盖 Secure Preferences(含完整注册) 备份是旧系统密钥签的 MAC → 校验失败 → 注册被清(连内置之外全丢)
手改 Secure Preferences(删掉本体缺失的注册条目再写回) 同 MAC 问题:手改 → MAC 失效 → 被丢弃
--load-extension 命令行加载 会话级:写入的注册 state 字段缺失(loc=8 但 state=None),重启后运行时即失效,扩展全部消失
chrome://extensions 里"加载已解压的扩展程序" 可行但:① 文件选择器是原生对话框,CDP 无法自动化;② UNPACKED 状态带"开发者模式"标签、不自动更新;③ 商店版才是正常状态
ExtensionInstallForcelist 注册表策略静默安装 装上了,但移除策略 = 卸载扩展 + 连带删除该扩展的 LES/IndexedDB 数据目录(数据删了才发现)

最终成功路径:数据目录从 RAR 恢复(LES 10 个 + IndexedDB 93 条)→ 用户手动商店安装 5 个扩展 → 数据自动挂载(篡改猴 187 keys / 11.5MB 完整回归)。全程唯一需要用户动手的就是点确认弹窗。

其他实战细节: - 36GB 固实/非固实 RAR 提取单文件用 UnRAR.exe e -y -idq <rar> <精确路径> <dest>\,python subprocess 传参避免 shell 转义地狱;路径前缀匹配必须单反斜杠 - 验证运行时扩展状态用 CDP:brave.exe --profile-directory="Profile N" --remote-debugging-port=9333 --remote-allow-origins=*,然后在 chrome://extensions 页面上下文执行 chrome.management.getAll()商店页面等普通页面没有该权限,返回空不代表没装) - install_signature.ids(Preferences 里,不受保护)是扩展 ID 的可靠参照,可用于核对应恢复哪些扩展


五、常见的错误做法(避雷表·扩充版)

错误 后果
只拷 Default 不拷 Local State 加密链断裂 → 密码/扩展数据全军覆没
浏览器开着时备份/恢复 锁定的文件没拷全 → 恢复后档案残缺
手改 Preferences 想"开启恢复" Preferences 本身可改,但改动不会生效在受保护区;真正禁区是 Secure Preferences
手改 Secure Preferences MAC 失效 → 注册被清(只剩内置)
把扩展本体拷进 Extensions\(注册已丢时) 触发"注入"重置 → 目录被删
--load-extension 长期恢复 重启即失效
用 Forcelist 策略装完就移除 扩展 + 数据目录一起被卸载删除
恢复后立即删除备份 万一重置/卸载删了数据,没有后悔药(先确认扩展无欢迎页再删
备份裁剪时删掉浏览器目录 事后想恢复没有"原始快照"可用(保留原始 RAR)

六、一图流速查

备份:关浏览器 → 整体拷 User Data → 校验大小文件数 → 存档(别裁剪)
重装后恢复:
  1) 关浏览器 → 合并拷回数据目录(LES/IndexedDB/Local Storage/Sessions)
     ⚠️ 不要碰 Secure Preferences 和 Extensions\
  2) 打开浏览器(扩展注册已被重置,只剩内置 —— 正常现象)
  3) 逐个商店重装扩展(https://chromewebstore.google.com/detail/<扩展ID>)
     → 点「添加到 Brave」→ 点确认弹窗「添加扩展程序」(必须手动)
  4) 打开扩展设置页:无欢迎页、数据在 = 完成
确认一切正常 → 才删除备份

七、最后的碎碎念

浏览器数据是最珍贵的数字资产:书签是索引,密码是钥匙,标签页是"我还没读完的世界",扩展是生产力。重装系统前花十分钟按上面的姿势备份,重装后就不会经历"安全原因"四个字带来的心跳骤停。

记住四件事:Local State 必须一起拷;Secure Preferences 一个字节都别改;扩展注册必丢是机制使然,数据目录才是要救的;扩展本体用商店重装(ID 不变 → 数据自动挂载),确认弹窗手动点。

作者: Molen
日期:2026年09月01日

评论