如何使用 activeTab 避免 Chrome 网上应用店中的扩展发布延迟

How to use activeTab to avoid extension publishing delays in the Chrome Web Store

我有一个 chrome 扩展程序,用于抓取一些特定页面,然后在扩展程序内置的屏幕上使用该数据生成文档。它需要定期更新。当我去 Chrome 网上商店发布时,我不断收到下面的“发布将被延迟警告”。该消息建议我使用活动选项卡和更窄的主机权限,即使我的清单包含以下内容:

"permissions": ["storage",
                "declarativeContent",
                "activeTab",
                "downloads"],
"background": {
  "scripts": ["background.js"],
  "persistent": false
},

在 background.js 中,我有一个 chrome.declarativeContent.onPageChanged.addRules 语句,其中 chrome.declarativeContent.PageStateMatcher条件:

      pageUrl: {hostContains: ''}
      pageUrl: {hostContains: 'secure.vermont.gov'}
      pageUrl: {urlContains: 'chrome-extension://'}

我用 codeforbtv.org 替换了第一个(用于本地文件)所以没有通配符。尽管如此,我还是在商店收到了同样的警告。

我使用的唯一选项卡功能在以下代码中:

chrome.tabs.executeScript(null, { file: 'payload.js' });

Payload.js 是两行代码,它抓取一个大的 html 块并通过 chrome.runtime.sendMessage.

发送它

相关代码库可以在 extensionDirectory 文件夹中找到:https://github.com/codeforbtv/expunge-vt.

扩展可以处理 sampleDocketHTML 文件夹中的示例 HTML 文件。

警告是基于权限的,是一般性警告,如果您对扩展程序使用更敏感的权限,审核将需要更长时间。 有趣的是,我最近对已发布的扩展使用了通配符主机权限 (:///*),并收到了相同的警告。审核过程最终需要 3 天才能获得批准。

在使用敏感权限时,您通常应该期望更长的审核时间,因为 Google 手动审核扩展程序的带宽目前正在减少。

  1. hostContains: '' 匹配每个 URL 因为 '' 出现在每个字符串中所以它是一个广泛的主机权限。

    要匹配本地文件,您可以使用 schemes: ['file'],但这仍然是一个广泛的主机权限,所以我想您将不得不忘记文件。

  2. urlContains: 'chrome-extension://' 从网上商店的自动检测器的角度来看也是一个广泛的主机权限,因为显然脚本不分析模式,所以它被认为只是一个子字符串匹配。

    一个扩展不能在其他扩展的页面上正常工作,所以你可能不需要这个。

  3. hostContains: 'secure.vermont.gov' 也是广泛的主机权限,因为此模式未锚定到 TLD(顶级域),因此它可能出现在任何地方,因此匹配完全不相关的主机。

    使用 hostSuffix: '.secure.vermont.gov' 也可以匹配无点版本和任何子域或 hostEquals.