需分别处理opie批量导出、browser.storage.local键值、extensions/子目录、prefs.js/user.js偏好项及indexeddb数据库五类数据,才能完整备份并迁移火狐扩展的深度个性化设置。

如果您希望在重装系统、更换设备或迁移环境后,完整保留火狐浏览器扩展插件中已配置的复杂参数(如uBlock Origin的自定义过滤规则、Dark Reader的站点级亮度设定、Stylus的用户样式代码、密码管理器的本地加密密钥等),但发现仅导出.xpi文件或启用Firefox Sync均无法还原这些深度个性化设置,则需针对不同存储机制分别提取结构化配置数据。以下是实现本地个性化完美无损转移的五类核心方法:
一、使用OPIE扩展批量导出全部扩展配置
OPIE专为解决扩展配置迁移痛点而设计,可自动识别所有已安装扩展并一次性导出其完整运行时配置,生成标准.oprefs文件,支持跨版本、跨平台导入,无需手动解析底层存储格式。
1、访问Firefox附加组件官网或可信源下载OPIE.xpi文件。
2、在地址栏输入about:debugging#/runtime/this-firefox,点击“此 Firefox”区域下的“临时加载附加组件”按钮。
3、选择已下载的OPIE.xpi文件完成加载。
4、打开OPIE选项页(右键工具栏图标→“选项”),点击“导出所有扩展设置”按钮。
5、系统将生成一个包含全部扩展ID、版本号与完整配置JSON的.oprefs文件,保存至指定路径(如D:\Firefox_Migration\all-exts.oprefs)。
二、导出browser.storage.local键值对为结构化JSON
多数现代扩展使用WebExtensions API的browser.storage.local保存用户配置,该数据独立于prefs.js且不随Firefox账户同步,必须通过调试界面手动提取原始键值对,确保JSON格式完整保留嵌套结构与特殊字符。
1、在地址栏输入about:debugging#/runtime/this-firefox并回车。
2、在“此 Firefox”列表中找到目标扩展,点击右侧“检查”按钮启动开发者工具。
3、切换到“存储”标签页,展开左侧“Local Storage”,选中对应moz-extension://[UUID]/条目。
4、右键任意键名→“复制键”,右键对应值→“复制值”,逐项整理为标准JSON对象格式。
5、将全部键值对封装为顶层对象,保存为extension-id-storage.json,注意保留原始引号、转义符及null/undefined语义。
三、提取extensions/子目录中扩展专属配置文件
部分扩展(如Stylus、Custom CSS for Websites)将用户脚本、样式表或配置清单以纯文本形式直接写入其ID命名的扩展子目录,该路径位于配置文件夹extensions/下,需整体复制而非仅提取单一文件,否则丢失相对路径引用关系。
1、关闭所有Firefox进程,在任务管理器中结束全部firefox.exe实例。
2、访问about:support页面,点击“配置文件夹”旁的“打开文件夹”按钮。
3、进入extensions/子目录,查找以扩展唯一ID命名的文件夹(如stylus@add0n.com/)。
4、进入该文件夹,定位data/、options.json、styles/或usercss/等子目录,全量复制整个ID命名的父文件夹至备份路径。
5、在目标设备新Profile中,将该文件夹粘贴回extensions/目录,重启Firefox使配置生效。
四、从prefs.js与user.js中精准剥离扩展偏好项
旧版或轻量级扩展常将配置固化在Firefox主配置文件prefs.js中,以user_pref("extensions.xxx")形式声明;若用户覆盖了默认值,则可能存在于user.js中。直接复制整份prefs.js存在冲突风险,必须精确提取相关行。
1、关闭Firefox,用记事本或VS Code打开Profile根目录下的prefs.js文件。
2、搜索关键词:extensions. + 扩展ID(如extensions.adguard-adblocker@adguard.com),同时检查是否含user_pref("extensions.webextensions.uuid.")等动态生成项。
3、复制所有匹配行(包括注释行#和空行),另存为ext-xxx-prefs.js。
4、在目标设备新建Profile中,创建空白user.js文件,首行添加// Auto-imported prefs,随后粘贴上述内容。
5、确保about:config中general.config.filename指向user.js且general.config.obscure_value=0。
五、导出IndexedDB数据库并转换为可读JSON
对于重度依赖IndexedDB存储结构化数据的扩展(如Raindrop.io、Memex),其配置分散在多个object store中,需借助SQLite工具导出为CSV或JSON,再人工映射字段含义,避免二进制blob数据丢失。
1、关闭Firefox,进入配置文件夹storage/default/目录。
2、查找以扩展ID命名的子目录(如raindropio@raindrop.io/),进入其中的idb/子目录。
3、使用DB Browser for SQLite打开*.sqlite文件,定位到"object_data"或"settings"等关键table。
4、执行“导出”→“导出表为JSON”,选择全部记录并勾选“包含列名”。
5、保存为raindrop-settings-export.json,导出前确认未启用加密或压缩选项,否则JSON内容不可读。











