如何通过Chrome扩展删除Chrome密码管理器中关联我的网站的已保存密码?
如何通过Chrome扩展删除Chrome密码管理器中关联我的网站的已保存密码?
嘿,我明白你现在的需求啦——你想通过Chrome扩展删掉浏览器密码管理器里和你网站绑定的所有密码,但你之前写的代码其实找错地方了哦!
你之前用的chrome.storage.sync是用来管理扩展自身的数据的,和Chrome自带的密码管理器完全是两个独立的存储区域,所以那段代码删的只是扩展自己存的内容,根本碰不到浏览器里存的用户密码。
要操作Chrome的密码管理器,得用Chrome专门提供的chrome.passwords API,下面给你一步步说怎么弄:
第一步:配置扩展的权限
不管你用的是Manifest V3还是V2,都得先在manifest.json里声明对应的权限,不然浏览器会直接拒绝你的扩展访问密码管理器:
如果你用的是Manifest V3:
{ "manifest_version": 3, "name": "你的扩展名称", "version": "1.0", "permissions": ["passwords"], "host_permissions": ["*://www.example.com/*"] // 替换成你的网站域名 }
如果你用的是Manifest V2:
{ "manifest_version": 2, "name": "你的扩展名称", "version": "1.0", "permissions": [ "passwords", "*://www.example.com/*" // 替换成你的网站域名 ] }
第二步:编写删除密码的代码
你需要在扩展的后台脚本(Manifest V3用Service Worker,V2用背景页面)里执行以下代码,内容脚本是没法调用chrome.passwords API的:
// 搜索所有和你的网站绑定的已保存密码 chrome.passwords.search({ url: "https://www.example.com" }, (results) => { if (results.length === 0) { console.log("没有找到关联该网站的已保存密码"); return; } // 遍历每个找到的密码条目,逐一删除 results.forEach((passwordItem) => { chrome.passwords.remove( { url: passwordItem.url, username: passwordItem.username }, () => { if (chrome.runtime.lastError) { console.error("删除密码失败:", chrome.runtime.lastError.message); } else { console.log(`已成功删除账号 ${passwordItem.username} 对应的密码`); } } ); }); });
一些要注意的点
- 这个API的使用有严格的权限限制,必须确保你在manifest里声明了正确的
passwords权限和对应网站的主机权限 - 当用户安装你的扩展时,Chrome会弹出提示,告知用户这个扩展需要访问密码,所以你最好在扩展的描述里清晰说明用途,避免用户产生不信任感
- 如果你要删除的是所有子域名的密码,可以把
url参数改成"*://*.example.com"(记得在manifest的host_permissions里也对应改成这个)
备注:内容来源于stack exchange,提问作者ariferol01




