如何知道我的 Chrome 扩展程序需要哪些权限?

Jua*_*uan 4 google-chrome-extension

我刚刚编写了一个 chrome 扩展,它向 devtools 添加了一个选项卡,可以从任何页面上的示例元素生成 CSS 选择器。我已经设置了“<all_urls>”权限,因为我将在用户想要选择示例元素的任何页面中使用内容脚本注入 JS。我刚刚向 Google 支付了 5 美元,当我正在将扩展程序发布到 chrome 扩展程序商店时,Google 警告我,由于权限过于广泛,我的扩展程序可能需要几周的时间才能获得批准。

根据Google的说法,如果我声明了权限,我可能不需要声明任何主机权限activeTab。不确定这是否适用于我的情况,但最重要的是,我不知道我是否实际上需要额外的权限,因为解压我的扩展程序时不会显示任何警告(我理解这意味着不会显示警告并且扩展程序将无论是否缺少任何权限,都可以运行任何代码),这就是我测试它的方式。

然后,Google 建议打包已安装的扩展以便查看警告,但随后我将看不到任何警告,因为扩展将无法运行。因此,我似乎没有任何办法知道我是否真的需要“<all_urls>”权限,或者我是否需要任何其他权限,除了通过发布它并等待几周看看会发生什么来测试我的运气,然后重复此操作过程,直到我想出所需的最低权限,所以我想知道是否有人知道更好的选择。

wOx*_*xOm 6

在安装扩展之前,浏览器会显示权限警告。它们列出了 API 和主机权限。这些警告不会影响扩展的功能。

要查看这些警告,您可以在任何扩展页面(即不在内容脚本中)打开的开发工具控制台中运行以下命令:

fetch('/manifest.json').then(_ => _.text()).then(_ => chrome.management.getPermissionWarningsByManifest(_, console.log))

要查看任何已安装的扩展(无论是解压的还是来自商店的)的权限,请打开chrome://extensions页面并单击details该扩展卡上的按钮。

在此输入图像描述

圈出的部分是API权限。下面的站点访问列出了主机权限,当在网络商店中安装扩展时,这些权限会以简化的形式显示,例如<all_urls>“读取并更改您访问的网站上的所有数据”。

文档中还列出了每个权限警告的确切文本。

您的扩展程序使用<all_urls>这意味着广泛的访问和缓慢的手动审核队列。根据建议,您可以尝试使用activeTab权限而不是<all_urls>. 如果它不起作用,请在https://crbug.com上打开一份新报告,因为旧报告已被放弃。另外,尝试使用chrome.devtools.inspectedWindow API,它提供eval类似于 chrome.tabs.executeScript 的方法,并且可能适用于activeTab. 请注意,它与 JavaScript 无关eval