如何将密码及登录数据批量导入Firefox浏览器
Chrome导出CSV密码批量导入Firefox方案
完全可以实现批量导入,不需要逐条手动录入,两种稳定方案如下,优先推荐第一种官方原生方案,安全性和兼容性最高。
方案1:重新启用Firefox内置的CSV导入功能
该功能只是默认隐藏,没有被完全移除,手动开启即可使用:
- 打开Firefox,地址栏输入
about:config,确认风险提示后进入高级配置页 - 在配置搜索栏输入
signon.management.page.fileImport.enabled,双击该配置项,将值从false切换为true - 进入Firefox「设置-隐私与安全-已保存的登录信息」,点击右上角三点菜单,即可看到「从文件导入登录信息」选项,直接选择你从Chrome导出的CSV文件,等待数秒即可完成全量导入
导入完成后如果在意官方提到的性能问题,可以把上述配置项重新改回
false,不会影响已经导入完成的密码数据。
方案2:自定义脚本批量导入(适合有数据清洗需求的场景)
如果你需要过滤CSV里的无效条目、自定义字段映射,可以通过脚本直接操作Firefox的登录存储,操作前必须完全退出Firefox避免数据库锁定,且务必备份整个Firefox配置文件夹,防止数据损坏。
- 前置说明:Firefox的密码存储依赖本地NSS密钥加密,直接写存储文件的方式对版本兼容性要求较高,仅适合有一定脚本基础的用户使用
- 核心操作逻辑:
- 安装依赖:执行
pip install pycryptodome - 读取Chrome导出的CSV文件,Chrome导出的CSV默认字段为
name、url、username、password,和Firefox登录条目的字段一一对应 - 调用本地NSS接口对密码字段做符合Firefox规范的加密后,写入配置目录下的登录存储文件即可
- 安装依赖:执行
- 最简参考代码(仅适配未设置主密码的Firefox环境):
import csv import os import shutil import json # 路径请替换为本地实际路径 CHROME_CSV_PATH = "./chrome_passwords.csv" FIREFOX_PROFILE_PATH = "/home/xxx/.mozilla/firefox/xxxx.default-release" if __name__ == "__main__": # 先备份原有登录文件 for fname in ["logins.json", "key4.db", "key3.db"]: fpath = os.path.join(FIREFOX_PROFILE_PATH, fname) if os.path.exists(fpath): shutil.copy2(fpath, fpath + ".bak") logins = [] with open(CHROME_CSV_PATH, "r", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: if not row.get("url") or not row.get("password"): continue logins.append({ "hostname": row["url"], "formSubmitURL": row["url"], "httpRealm": None, "username": row.get("username", ""), "password": row["password"], "usernameField": "", "passwordField": "" }) # 注意:新版Firefox会对logins.json做签名校验,直接写入可能失效,优先使用方案1 with open(os.path.join(FIREFOX_PROFILE_PATH, "logins.json"), "w", encoding="utf-8") as f: json.dump({"logins": logins, "nextId": len(logins) + 1, "version": 2}, f, indent=2)
注意:如果你的Firefox设置了主密码,脚本方案需要额外处理主密码的密钥派生逻辑,复杂度较高,这种情况请直接使用方案1。
内容的提问来源于stack exchange,提问作者Glenn
相关产品推荐
相关产品推荐

