You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Manifest Version 3浏览器扩展中获取并操作Firefox页面信息中的网站权限

实现Firefox特定网站权限的操作(Manifest V3扩展)

是的,你完全可以通过Web Extension实现对Firefox页面信息中展示的特定域名网站权限的操作——核心是利用Firefox提供的非标准但官方支持的browser.sitePermissions API,这个API正是用来封装你找到的SitePermissions.sys.mjs内部模块的能力,专门针对单个网站的权限进行管理,完美匹配你的需求。

关键前提:Manifest配置

首先需要在你的manifest.json中声明必要的权限,确保扩展能访问相关API和当前页面信息:

{
  "manifest_version": 3,
  "name": "网站权限管理器",
  "version": "1.0",
  "permissions": ["sitePermissions", "activeTab"],
  "action": {
    "default_popup": "popup.html"
  }
}
  • sitePermissions:允许扩展使用网站权限管理API
  • activeTab:允许扩展获取当前活跃标签的URL(无需提前申请所有网站的主机权限)

核心操作示例

1. 获取当前网站的所有权限

先获取当前标签的域名,再查询该域名的所有权限(对应页面信息里展示的权限列表):

async function getCurrentSitePermissions() {
  // 获取当前活跃标签
  const [activeTab] = await browser.tabs.query({ active: true, currentWindow: true });
  // 解析出网站的origin(比如"https://example.com")
  const siteOrigin = new URL(activeTab.url).origin;

  // 获取该网站的全部权限
  const allPermissions = await browser.sitePermissions.getAll({ origin: siteOrigin });
  console.log("当前网站权限列表:", allPermissions);

  // 也可以单独查询某一项权限,比如摄像头权限
  const cameraPerm = await browser.sitePermissions.get({
    origin: siteOrigin,
    permission: "camera"
  });
  console.log("摄像头权限状态:", cameraPerm.value); // 输出: allow/block/prompt
}

2. 修改特定网站的权限

使用set方法修改目标权限的状态(支持allow/block/prompt三种值):

async function updateSitePermission(origin, permType, newStatus) {
  try {
    await browser.sitePermissions.set({
      origin: origin,
      permission: permType,
      value: newStatus
    });
    console.log(`已将${permType}权限设置为${newStatus}`);
  } catch (err) {
    console.error("修改权限失败:", err);
  }
}

// 调用示例:允许当前网站发送通知
async function allowCurrentSiteNotifications() {
  const [activeTab] = await browser.tabs.query({ active: true, currentWindow: true });
  const siteOrigin = new URL(activeTab.url).origin;
  await updateSitePermission(siteOrigin, "notifications", "allow");
}

你提到的其他API的区别

  • browser.privacy.websites/browser.privacy.network:这些是全局隐私设置,作用于所有网站,不符合你需要的细粒度域名权限需求;
  • browser.permissions:仅用于管理扩展自身的权限(比如申请新的主机权限),和网站本身的权限完全无关;
  • browser.tabs.query:只能获取标签的基础信息,确实不包含网站权限数据。

注意事项

  • 这个API是Firefox独有的,不属于标准Web Extension规范,所以无法在Chrome等其他浏览器中使用;
  • 权限状态的修改会直接同步到Firefox的页面信息面板中,和用户手动操作的效果一致。

内容的提问来源于stack exchange,提问作者Tiago Pimenta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 11:02:32