You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过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

火山引擎 最新活动