chrome.declarativeNetRequest

说明

chrome.declarativeNetRequest API 用于通过指定声明式规则来屏蔽或修改网络请求。这样一来,扩展程序就能够修改网络请求,而不会拦截这类请求并查看其中的内容,从而更好地保护用户隐私。

权限

declarativeNetRequest
declarativeNetRequestWithHostAccess

declarativeNetRequest”和“declarativeNetRequestWithHostAccess”权限 它们的功能相同两者的区别在于 请求或同意。

"declarativeNetRequest"
在安装时触发权限警告,但提供对以下项目的隐式访问权限 allowallowAllRequestsblock 规则。请尽可能使用该功能 需要请求对主机的完整访问权限。
"declarativeNetRequestFeedback"
已解压的扩展程序(特别是 getMatchedRules()onRuleMatchedDebug)启用调试功能。
"declarativeNetRequestWithHostAccess"
安装时不会显示权限警告,但您必须请求托管 然后才能对主机执行任何操作。这个 如果您想在 该扩展程序已拥有主机权限,且不会生成额外的 警告。

可用性

Chrome 84 及更高版本

清单

除了之前介绍的权限之外,某些类型的规则集(具体而言,是静态规则集)还要求声明 "declarative_net_request" 清单键,而该清单键应该是具有一个名为 "rule_resources" 的键的字典。此键是一个包含 Ruleset 类型字典的数组,如下所示。(请注意,名称“Ruleset”不会显示在清单的 JSON 中,因为它只是一个数组。)本文档后面部分将介绍静态规则集

{
  "name": "My extension",
  ...

  "declarative_net_request" : {
    "rule_resources" : [{
      "id": "ruleset_1",
      "enabled": true,
      "path": "rules_1.json"
    }, {
      "id": "ruleset_2",
      "enabled": false,
      "path": "rules_2.json"
    }]
  },
  "permissions": [
    "declarativeNetRequest",
    "declarativeNetRequestFeedback",
  ],
  "host_permissions": [
    "http://www.blogger.com/*",
    "http://*.google.com/*"
  ],
  ...
}

规则和规则集

如需使用此 API,请指定一个或多个规则集。规则集包含一组规则。一条规则会执行以下某项操作:

  • 屏蔽网络请求。
  • 升级架构(从 http 升级到 https)。
  • 通过排除所有匹配的已屏蔽规则来防止请求被屏蔽。
  • 重定向网络请求。
  • 修改请求或响应标头。

规则集分为三种类型,管理方式略有不同。

动态
在浏览器会话和扩展程序升级之间保持不变,并在使用扩展程序期间通过 JavaScript 进行管理。
会话
当浏览器关闭以及安装新版本的扩展程序时被清除。在使用扩展程序时,通过 JavaScript 管理会话规则。
静态
在安装或升级扩展程序时打包、安装和更新。静态规则存储在 JSON 格式的规则文件中,并列在清单文件中。

动态和会话级范围的规则集

在使用扩展程序时,动态规则集和会话规则集可通过 JavaScript 进行管理。

  • 动态规则在浏览器会话和扩展程序升级后保持不变。
  • 当浏览器关闭或安装了扩展程序的新版本时,系统会清除会话规则。

这样的规则集类型只有一种。扩展程序可以通过调用 updateDynamicRules()updateSessionRules() 为规则动态添加或移除规则,只要不超过规则限制即可。如需了解规则限制,请参阅规则限制。您可以在代码示例下查看相关示例

静态规则集

与动态规则和会话规则不同,静态规则会在扩展程序安装或升级时打包、安装和更新。它们存储在 JSON 格式的规则文件中,并使用 "declarative_net_request""rule_resources" 键(如上所述)以及一个或多个 Ruleset 字典来指示扩展程序。Ruleset 字典包含规则文件的路径、文件中包含的规则集的 ID,以及规则集是已启用还是已停用。在以编程方式启用或停用规则集时,后两项非常重要。

{
  ...
  "declarative_net_request" : {
    "rule_resources" : [{
      "id": "ruleset_1",
      "enabled": true,
      "path": "rules_1.json"
    },
    ...
    ]
  }
  ...
}

要测试规则文件,请加载已解压的扩展程序。只有解压缩的扩展程序才可以显示有关无效静态规则的错误和警告。系统会忽略打包的扩展程序中的无效静态规则。

加急审核

对静态规则集所做的更改可能符合加急审核条件。请参阅 加快审核符合条件的更改的速度

启用和停用静态规则和规则集

单个静态规则和完整的静态规则集都可以在运行时启用或停用。

这组已启用的静态规则和规则集将跨浏览器会话保留。这两者在扩展程序更新后也不会保留,也就是说,只有您选择保留在规则文件中的规则在更新后才可用。

出于性能方面的原因,一次可以启用的规则和规则集的数量也有限制。调用 getAvailableStaticRuleCount() 以检查可能启用的其他规则的数量。如需了解规则限制,请参阅规则限制

如需启用或停用静态规则,请调用 updateStaticRules()。此方法接受 UpdateStaticRulesOptions 对象,该对象包含要启用或停用的规则 ID 数组。这些 ID 使用 Ruleset 字典的 "id" 键进行定义。停用的静态规则数量上限为 5,000 条。

如需启用或停用静态规则集,请调用 updateEnabledRulesets()。此方法接受 UpdateRulesetOptions 对象,该对象包含要启用或停用的规则集 ID 数组。这些 ID 使用 Ruleset 字典的 "id" 键进行定义。

构建规则

无论什么类型,规则都从四个字段开始,如下所示。虽然 "id""priority" 键接受数字,但 "action""condition" 键可能会提供多种屏蔽和重定向条件。以下规则会屏蔽从 "foo.com" 发送到以 "abc" 作为子字符串的任何网址的所有脚本请求。

{
  "id" : 1,
  "priority": 1,
  "action" : { "type" : "block" },
  "condition" : {
    "urlFilter" : "abc",
    "initiatorDomains" : ["foo.com"],
    "resourceTypes" : ["script"]
  }
}

网址匹配

声明式网络请求支持将网址与格式 匹配语法或正则表达式。

网址过滤器语法

规则的 "condition" 键允许使用 "urlFilter" 键对指定网域下的网址执行操作。您可以使用模式匹配令牌创建模式。以下是几个例子。

urlFilter 匹配 不匹配
"abc" https://abcd.com
https://example.com/abcd
https://ab.com
"abc*d" https://abcd.com
https://example.com/abcxyzd
https://abc.com
"||a.example.com" https://a.example.com/
https://b.a.example.com/xyz
https://a.example.company
https://example.com/
"|https*" https://example.com http://example.com/
http://https.com
"example*^123|" https://example.com/123
http://abc.com/example?123
https://example.com/1234
https://abc.com/example0123

正则表达式

条件也可以使用正则表达式。请参阅 "regexFilter" 键。要了解 适用于这些条件的限制,请参阅 使用正则表达式的规则

编写良好的网址条件

请务必谨慎编写规则,确保规则始终匹配整个网域。否则,您的 出现意外情况时可能会匹配。例如,使用 模式匹配语法:

  • google.com 错误地与 https://example.com/?param=google.com 匹配
  • ||google.com 错误地与 https://google.company 匹配
  • https://www.google.com 错误地与 https://example.com/?param=https://www.google.com 匹配

您可以考虑使用:

  • ||google.com/ - 匹配所有路径和所有子网域。
  • |https://www.google.com/(匹配所有路径,而不匹配任何子网域)。

同样,使用 ^/ 字符来锚定正则表达式。对于 例如,^https:\/\/www\.google\.com\/ 会匹配 https://www.google.com.

规则评估

DNR 规则由浏览器跨网络请求生命周期的各个阶段应用。

请求前

在发出请求之前,扩展程序可以使用匹配规则阻止或重定向(包括将架构从 HTTP 升级到 HTTPS)。

对于每个扩展程序,浏览器会确定一系列匹配规则。此处不包括具有 modifyHeaders 操作的规则,因为稍后会对其进行处理。此外,具有 responseHeaders 条件的规则将在以后(当响应标头可用时)纳入考虑范围,不会包含在内。

然后,对于每个扩展程序,Chrome 针对每个请求至多会选择 1 个候选扩展程序。Chrome 会按优先级对所有匹配规则进行排序,从而找出匹配的规则。优先级相同的规则按操作排序(allowallowAllRequests > block > upgradeScheme > redirect)。

如果候选项是 allowallowAllRequests 规则,或者请求所在的帧之前与此扩展中优先级更高或相同的 allowAllRequests 规则匹配,则“允许”该请求并且该扩展程序不会对请求产生任何影响

如果多个扩展程序想要屏蔽或重定向此请求,系统会选择一项操作。为此,Chrome 会按照 block > 的顺序对规则进行排序。redirectupgradeScheme >allowallowAllRequests。如果两条规则属于同一类型,Chrome 会从最近安装的扩展程序中选择规则。

发送请求标头之前

在 Chrome 向服务器发送请求标头之前,系统会根据匹配的 modifyHeaders 规则更新这些标头。

在单个扩展程序中,Chrome 通过查找所有匹配的 modifyHeaders 规则来构建要执行的修改列表。与之前类似,仅包含优先级高于任何匹配的 allowallowAllRequests 规则的规则。

Chrome 应用这些规则的顺序会始终是先评估安装时间较近的扩展程序的规则,然后再评估较旧扩展程序的规则。此外,一条附加信息中较高优先级的规则始终优先于同一附加信息中较低优先级的规则。值得注意的是,即使在不同的扩展程序中也是如此:

  • 如果规则附加到标头,则优先级较低的规则只能附加到该标头。不允许执行“设置”和“移除”操作。
  • 如果规则设置了标头,则只有同一扩展程序中优先级较低的规则可以附加到该标头。不允许进行其他修改。
  • 如果某条规则移除了某个标头,那么优先级较低的规则将无法进一步修改该标头。

收到响应后

收到响应标头后,Chrome 会使用 responseHeaders 条件评估规则。

actionpriority 对这些规则进行排序,并排除被匹配的 allowallowAllRequests 规则删除的任何规则(这与“请求之前”中的步骤完全相同)后,Chrome 可能会代表扩展程序屏蔽或重定向请求。

请注意,如果请求到达此阶段,则请求已发送到服务器,服务器已收到请求正文等数据。包含响应标头条件的屏蔽或重定向规则仍会运行,但实际上无法屏蔽或重定向请求。

如果是屏蔽规则,这一情况将由发出请求的网页在收到被屏蔽响应时进行处理,并且 Chrome 会提前终止该请求。如果设置了重定向规则,Chrome 会向重定向的网址发出新请求。请务必考虑这些行为是否符合扩展程序在隐私保护方面的预期。

如果请求未被屏蔽或重定向,Chrome 会应用所有 modifyHeaders 规则。对响应标头应用修改的方式与“发送请求标头之前”中所述的方式相同。对请求标头应用修改不会执行任何操作,因为请求已经发出。

安全规则

安全规则是指操作为 blockallowallowAllRequestsupgradeScheme。此类规则适用 动态规则配额

规则限制

在浏览器中加载和评估规则会产生性能开销, 因此在使用 API 时有一些限制具体限制取决于 您使用的规则

静态规则

静态规则是在清单文件中声明的规则文件中指定的规则。一个扩展程序最多可以指定 100 个静态规则集作为 "rule_resources" 清单键的一部分,但一次只能启用 50 个规则集。后者称为 MAX_NUMBER_OF_ENABLED_STATIC_RULESETS。这些规则集总共保证至少 30,000 条规则。这称为 GUARANTEED_MINIMUM_STATIC_RULES

之后可用的规则数量取决于用户浏览器中安装的所有扩展程序启用的规则数量。您可以在运行时通过调用 getAvailableStaticRuleCount() 找到此数字。您可以在代码示例下查看相关示例

会话规则

一个扩展程序最多可以有 5,000 条会话规则。这作为 MAX_NUMBER_OF_SESSION_RULES

在 Chrome 120 之前,动态规则和会话规则的总和不得超过 5, 000 条。

动态规则

一个附加信息可以有至少 5,000 条动态规则。这作为 MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES

从 Chrome 121 开始,适用于安全的动态规则的规则增加了 3 万条, 显示为 MAX_NUMBER_OF_DYNAMIC_RULES。不限 数量不超过 5,000 条的不安全规则也会计入此限制。

在 Chrome 120 之前,动态规则和会话规则的总数上限为 5, 000。

使用正则表达式的规则

所有类型的规则都可以使用正则表达式;不过,每种类型的正则表达式规则的总数不能超过 1000 个。这称为 MAX_NUMBER_OF_REGEX_RULES

此外,每条规则在编译后必须小于 2KB。这与规则的复杂程度大致相关。如果您尝试加载的规则超过此限制,则会看到如下所示的警告,并忽略该规则。

rules_1.json: Rule with id 1 specified a more complex regex than allowed
as part of the "regexFilter" key.

与 Service Worker 的交互

declarativeNetRequest 仅适用于到达网络堆栈的请求。这包括来自 HTTP 缓存的响应,但可能不包括经过 Service Worker 的 onfetch 处理程序的响应。declarativeNetRequest 不会影响 Service Worker 生成或从 CacheStorage 检索到的响应,但会影响 Service Worker 中对 fetch() 的调用。

可通过网络访问的资源

declarativeNetRequest 规则无法从公开资源请求重定向到不可网络访问的资源。这样做会触发错误。即使指定的 Web 可访问资源归重定向扩展程序所有,也是如此。如需为 declarativeNetRequest 声明资源,请使用清单的 "web_accessible_resources" 数组。

标头修改

仅对以下标头支持附加操作:acceptaccept-encodingaccept-languageaccess-control-request-headerscache-controlconnectioncontent-languagecookieforwardedif-matchif-none-matchkeep-aliverangetetrailertransfer-encodingupgradeuser-agentviawant-digestx-forwarded-for

示例

代码示例

更新动态规则

以下示例展示了如何调用 updateDynamicRules()updateSessionRules() 的过程是相同的。

// Get arrays containing new and old rules
const newRules = await getNewRules();
const oldRules = await chrome.declarativeNetRequest.getDynamicRules();
const oldRuleIds = oldRules.map(rule => rule.id);

// Use the arrays to update the dynamic rules
await chrome.declarativeNetRequest.updateDynamicRules({
  removeRuleIds: oldRuleIds,
  addRules: newRules
});

更新静态规则集

以下示例展示了如何在考虑可用规则集数量和已启用的静态规则集数量上限的情况下启用和停用规则集。当您所需的静态规则数量超出允许的数量时,您就应该执行此操作。为此,在安装部分规则集时应停用部分规则集(在清单文件中将 "Enabled" 设置为 false)。

async function updateStaticRules(enableRulesetIds, disableCandidateIds) {
  // Create the options structure for the call to updateEnabledRulesets()
  let options = { enableRulesetIds: enableRulesetIds }
  // Get the number of enabled static rules
  const enabledStaticCount = await chrome.declarativeNetRequest.getEnabledRulesets();
  // Compare rule counts to determine if anything needs to be disabled so that
  // new rules can be enabled
  const proposedCount = enableRulesetIds.length;
  if (enabledStaticCount + proposedCount > chrome.declarativeNetRequest.MAX_NUMBER_OF_ENABLED_STATIC_RULESETS) {
    options.disableRulesetIds = disableCandidateIds
  }
  // Update the enabled static rules
  await chrome.declarativeNetRequest.updateEnabledRulesets(options);
}

规则示例

以下示例说明了 Chrome 如何确定扩展程序中的规则的优先顺序。查看这些规则时,您可能需要在单独的窗口中打开优先次序规则。

“优先级”密钥

这些示例需要 *://*.example.com/*主机权限

若要确定特定网址的优先级,请查看(开发者定义的)"priority" 键、"action" 键和 "urlFilter" 键。以下示例是下面显示的规则文件示例。

导航到 https://google.com
有两个规则涵盖此网址:ID 为 1 和 4 的规则。系统会应用 ID 为 1 的规则,因为 "block" 操作的优先级高于 "redirect" 操作。其余规则不适用,因为这些规则适用于较长的网址。
导航到 https://google.com/1234
由于网址更长,现在除了 ID 为 1 和 4 的规则之外,系统还会匹配 ID 为 2 的规则。系统会应用 ID 为 2 的规则,因为 "allow" 的优先级高于 "block""redirect"
导航到 https://google.com/12345
四条规则都与此网址匹配。系统会应用 ID 为 3 的规则,因为开发者定义的优先级是该群组中的最高优先级。
[
  {
    "id": 1,
    "priority": 1,
    "action": { "type": "block" },
    "condition": {"urlFilter": "||google.com/", "resourceTypes": ["main_frame"] }
  },
  {
    "id": 2,
    "priority": 1,
    "action": { "type": "allow" },
    "condition": { "urlFilter": "||google.com/123", "resourceTypes": ["main_frame"] }
  },
  {
    "id": 3,
    "priority": 2,
    "action": { "type": "block" },
    "condition": { "urlFilter": "||google.com/12345", "resourceTypes": ["main_frame"] }
  },
  {
    "id": 4,
    "priority": 1,
    "action": { "type": "redirect", "redirect": { "url": "https://example.com" } },
    "condition": { "urlFilter": "||google.com/", "resourceTypes": ["main_frame"] }
  },
]

重定向

以下示例需要 *://*.example.com/*主机权限

以下示例展示了如何将来自 example.com 的请求重定向到扩展程序内的某个网页。扩展程序路径 /a.jpg 将解析为 chrome-extension://EXTENSION_ID/a.jpg,其中 EXTENSION_ID 是您的扩展程序的 ID。为此,清单应将 /a.jpg 声明为网页可访问资源

{
  "id": 1,
  "priority": 1,
  "action": { "type": "redirect", "redirect": { "extensionPath": "/a.jpg" } },
  "condition": {
    "urlFilter": "||https://www.example.com/",
    "resourceTypes": ["main_frame"]
  }
}

以下命令使用 "transform" 键重定向到 example.com 的子网域。它使用域名锚(“||”)来拦截来自 example.com 且采用任何架构的请求。"transform" 中的 "scheme" 键用于指定重定向到子网域的将始终使用“https”。

{
  "id": 1,
  "priority": 1,
  "action": {
    "type": "redirect",
    "redirect": {
      "transform": { "scheme": "https", "host": "new.example.com" }
    }
  },
  "condition": {
    "urlFilter": "||example.com/",
    "resourceTypes": ["main_frame"]
  }
}

以下示例使用正则表达式从 https://www.abc.xyz.com/path 重定向到 https://abc.xyz.com/path。在 "regexFilter" 键中,请注意句点是如何转义的,以及捕获组选择了“abc”或“def”"regexSubstitution" 键使用“\1”指定正则表达式的第一个返回匹配项。在本示例中,输入“abc”从重定向的网址捕获并放置在替换中。

{
  "id": 1,
  "priority": 1,
  "action": {
    "type": "redirect",
    "redirect": {
      "regexSubstitution": "https://\\1.xyz.com/"
    }
  },
  "condition": {
    "regexFilter": "^https://www\\.(abc|def)\\.xyz\\.com/",
    "resourceTypes": [
      "main_frame"
    ]
  }
}

标头

以下示例从主框架和所有子框架中移除所有 Cookie。

{
  "id": 1,
  "priority": 1,
  "action": {
    "type": "modifyHeaders",
    "requestHeaders": [{ "header": "cookie", "operation": "remove" }]
  },
  "condition": { "resourceTypes": ["main_frame", "sub_frame"] }
}

类型

DomainType

此属性用于说明请求是发起请求的帧的第一方还是第三方请求。如果请求与发起请求的帧具有相同的域名 (eTLD+1),则该请求称为第一方请求。

枚举

"firstParty"
网络请求是其来源帧的第一方。

"thirdParty"
网络请求是其来源帧的第三方。

ExtensionActionOptions

Chrome 88 及更高版本

属性

  • displayActionCountAsBadgeText

    布尔值(可选)

    是否自动将某网页的操作数显示为扩展程序的标志文字。此偏好设置在不同会话之间保持不变。

  • tabUpdate
    Chrome 89 及更高版本

    有关如何调整标签页操作数的详细信息。

GetDisabledRuleIdsOptions

Chrome 111 及更高版本

属性

  • rulesetId

    字符串

    与静态 Ruleset 对应的 ID。

GetRulesFilter

Chrome 111 及更高版本

属性

  • ruleIds

    number[](选填

    如果指定,则仅包括具有匹配 ID 的规则。

HeaderInfo

Chrome 128 及更高版本

属性

  • excludedValues

    string[] 选填

    如果指定,则当标头存在但其值包含此列表中的至少一个元素时,此条件不匹配。它使用的匹配模式语法与 values 相同。

  • 标头

    字符串

    标头的名称。仅当 valuesexcludedValues 均未指定时,此条件才与名称匹配。

  • string[] 选填

    指定后,如果标头的值与此列表中的至少一个模式匹配,则此条件匹配。这支持不区分大小写的标头值匹配以及以下结构:

    '*':匹配任意数量的字符。

    '?':匹配 0 个或 1 个字符。

    “*”和“?”可以使用反斜杠进行转义,例如“\*”和“\?”

HeaderOperation

Chrome 86 及更高版本

它描述了“modifyHeaders”规则。

枚举

"append"
为指定的标头添加新条目。请求标头不支持此操作。

"set"
为指定的标头设置新值,并移除任何同名的现有标头。

"remove"
移除指定标头的所有条目。

IsRegexSupportedResult

Chrome 87 及更高版本

属性

  • isSupported

    布尔值

  • reason

    说明正则表达式不受支持的原因。仅当 isSupported 为 false 时提供。

MatchedRule

属性

  • ruleId

    number

    匹配规则的 ID。

  • rulesetId

    字符串

    此规则所属的 Ruleset 的 ID。对于源自一组动态规则的规则,此值等于 DYNAMIC_RULESET_ID

MatchedRuleInfo

属性

  • 规则
  • tabId

    number

    从中发起请求的标签页的 tabId(如果标签页仍处于活动状态)。否则 -1。

  • timeStamp

    number

    规则的匹配时间。时间戳将对应于 JavaScript 的时间惯例,即从公元纪年开始计算的毫秒数。

MatchedRuleInfoDebug

属性

MatchedRulesFilter

属性

  • minTimeStamp

    编号(选填

    如果指定,则仅匹配给定时间戳之后的规则。

  • tabId

    编号(选填

    指定后,将仅匹配指定标签页的规则。如果设置为 -1,则匹配未与任何活跃标签页关联的规则。

ModifyHeaderInfo

Chrome 86 及更高版本

属性

  • 标头

    字符串

    要修改的标头的名称。

  • 要对标头执行的操作。

  • 字符串(可选)

    标头的新值。必须为 appendset 操作指定。

QueryKeyValue

属性

  • 字符串

  • replaceOnly

    布尔值(可选)

    Chrome 94 及更高版本

    如果为 true,则仅替换已存在的查询键。否则,如果缺少该密钥,系统也会添加该密钥。默认值为 false。

  • 字符串

QueryTransform

属性

  • addOrReplaceParams

    QueryKeyValue[] 选填

    要添加或替换的查询键值对的列表。

  • removeParams

    string[] 选填

    要移除的查询键的列表。

Redirect

属性

  • extensionPath

    字符串(可选)

    相对于扩展程序目录的路径。应以“/”开头。

  • regexSubstitution

    字符串(可选)

    指定 regexFilter 的规则的替代模式。网址中第一个 regexFilter 匹配项将替换为此格式。在 regexSubstitution 中,可以使用反斜杠转义的数字(\1 到 \9)插入相应的捕获组。\0 是指整个匹配的文本。

  • 转换

    URLTransform 可选

    要执行的网址转换。

  • 网址

    字符串(可选)

    重定向网址。不允许重定向到 JavaScript 网址。

RegexOptions

Chrome 87 及更高版本

属性

  • isCaseSensitive

    布尔值(可选)

    指定的 regex 是否区分大小写。默认值为 true。

  • regex

    字符串

    要检查的常规 Expresson。

  • requireCapturing

    布尔值(可选)

    指定的 regex 是否需要捕获。只有指定 regexSubstition 操作的重定向规则才需要捕获。默认值为 false。

RequestDetails

属性

  • documentId

    字符串(可选)

    Chrome 106 及更高版本

    帧文档的唯一标识符(如果此请求针对的是帧)。

  • documentLifecycle
    Chrome 106 及更高版本

    帧文档的生命周期(如果此请求针对的是帧)。

  • frameId

    number

    值 0 表示请求发生在主帧中;正值表示请求发生所在的子帧的 ID。如果(子)帧的文档已加载(typemain_framesub_frame),则 frameId 表示此帧的 ID,而不是外帧的 ID。帧 ID 在标签页中是唯一的。

  • frameType

    FrameType 可选

    Chrome 106 及更高版本

    帧的类型(如果此请求针对的是帧)。

  • 发起者

    字符串(可选)

    发起请求的来源。这一点不会因为重定向而改变。如果此原点是不透明的,则字符串“null”。

  • method

    字符串

    标准 HTTP 方法。

  • parentDocumentId

    字符串(可选)

    Chrome 106 及更高版本

    框架的父级文档的唯一标识符(如果此请求针对的是框架并且有父级)。

  • parentFrameId

    number

    封装发送请求的帧的帧的 ID。如果不存在父帧,则设置为 -1。

  • requestId

    字符串

    请求的 ID。请求 ID 在浏览器会话中是唯一的。

  • tabId

    number

    发生请求的标签页的 ID。如果请求与标签页无关,请将其设为 -1。

  • 类型

    请求的资源类型。

  • 网址

    字符串

    请求的网址。

RequestMethod

Chrome 91 及更高版本

它描述了网络请求的 HTTP 请求方法。

枚举

"连接"

“删除”

"get"

"head"

"选项"

"补丁"

“post”

“put”

“其他”

ResourceType

它描述了网络请求的资源类型。

枚举

“main_frame”

“sub_frame”

“stylesheet”

"script"

“图片”

"字体"

“对象”

"xmlhttprequest"

“ping”

"csp_report"

“media”

"websocket"

"webtransport"

"webbundle"

“其他”

Rule

属性

  • action

    规则匹配时要执行的操作。

  • condition

    触发此规则的条件。

  • id

    number

    唯一标识规则的 ID。必需属性,应 >= 1。

  • 优先级

    编号(选填

    规则优先级。默认为1。指定时,应大于等于 1。

RuleAction

属性

  • 重定向

    重定向(可选)

    用于说明应如何执行重定向。仅对重定向规则有效。

  • requestHeaders
    Chrome 86 及更高版本

    要为请求修改的请求标头。仅在 RuleActionType 为“modifyHeaders”时有效。

  • responseHeaders
    Chrome 86 及更高版本

    要为请求修改的响应标头。仅在 RuleActionType 为“modifyHeaders”时有效。

  • 要执行的操作类型。

RuleActionType

描述给定 RuleCondition 匹配时要执行的操作类型。

枚举

"block"
屏蔽网络请求。

"redirect"
重定向网络请求。

"allow"
允许网络请求。如果有匹配的允许规则,该请求不会被拦截。

"upgradeScheme"
如果请求是 http 或 FTP,请将网络请求网址的架构升级到 https。

"modifyHeaders"
修改网络请求中的请求/响应标头。

"allowAllRequests"
允许框架层次结构中的所有请求,包括框架请求本身。

RuleCondition

属性

  • domainType

    DomainType 选填

    指定网络请求是来自其来源网域的第一方还是第三方请求。如果省略,则会接受所有请求。

  • 网域

    string[] 选填

    <ph type="x-smartling-placeholder"></ph> 自 Chrome 101 起弃用

    改用 initiatorDomains

    该规则将仅匹配来自 domains 列表的网络请求。

  • excludedDomains

    string[] 选填

    <ph type="x-smartling-placeholder"></ph> 自 Chrome 101 起弃用

    改用 excludedInitiatorDomains

    该规则不会匹配来自 excludedDomains 列表的网络请求。

  • excludedInitiatorDomains

    string[] 选填

    Chrome 浏览器 101 及以上版本

    该规则不会匹配来自 excludedInitiatorDomains 列表的网络请求。如果列表为空或被省略,系统不会排除任何网域。它的优先级高于 initiatorDomains

    注意:

    • 类似“a.example.com”的子网域。
    • 条目必须仅包含 ASCII 字符。
    • 对国际化域名使用 Punycode 编码。
    • 此值与请求发起者匹配,与请求网址不匹配。
    • 所列网域的子网域也会被排除在外。
  • excludedRequestDomains

    string[] 选填

    Chrome 浏览器 101 及以上版本

    当网域与 excludedRequestDomains 列表中的某个网域匹配时,规则不会与网络请求匹配。如果列表为空或被省略,系统不会排除任何网域。它的优先级高于 requestDomains

    注意:

    • 类似“a.example.com”的子网域。
    • 条目必须仅包含 ASCII 字符。
    • 对国际化域名使用 Punycode 编码。
    • 所列网域的子网域也会被排除在外。
  • excludedRequestMethods

    RequestMethod[] 可选

    Chrome 91 及更高版本

    规则不匹配的请求方法列表。只应指定 requestMethodsexcludedRequestMethods 中的一个。如果二者均未指定,则匹配所有请求方法。

  • excludedResourceTypes

    ResourceType[] 选填

    规则不匹配的资源类型列表。只应指定 resourceTypesexcludedResourceTypes 中的一个。如果两者均未指定,则使用除“main_frame”以外的所有资源类型已被屏蔽。

  • excludedResponseHeaders

    HeaderInfo[] 选填

    Chrome 128 及更高版本

    如果请求符合此列表中的任何响应标头条件(如果已指定),则规则不匹配。如果同时指定了 excludedResponseHeadersresponseHeaders,则 excludedResponseHeaders 属性优先。

  • excludedTabIds

    number[](选填

    Chrome 92 及更高版本

    规则不匹配的 tabs.Tab.id 的列表。ID 为 tabs.TAB_ID_NONE 会排除并非来自标签页的请求。仅适用于会话级范围的规则。

  • initiatorDomains

    string[] 选填

    Chrome 浏览器 101 及以上版本

    该规则将仅匹配来自 initiatorDomains 列表的网络请求。如果省略此列表,规则会应用于来自所有网域的请求。不允许使用空列表。

    注意:

    • 类似“a.example.com”的子网域。
    • 条目必须仅包含 ASCII 字符。
    • 对国际化域名使用 Punycode 编码。
    • 此值与请求发起者匹配,与请求网址不匹配。
    • 系统还会匹配所列网域的子网域。
  • isUrlFilterCaseSensitive

    布尔值(可选)

    urlFilterregexFilter(所指定的值)是否区分大小写。默认值为 false。

  • regexFilter

    字符串(可选)

    用于与网络请求网址匹配的正则表达式。这遵循 RE2 语法

    注意:只能指定 urlFilterregexFilter 中的一个。

    注意:regexFilter 只能包含 ASCII 字符。这会与主机以 Punycode 格式编码(如果是国际化域名)的网址相匹配,而任何其他非 ASCII 字符都将以 UTF-8 编码的网址进行匹配。

  • requestDomains

    string[] 选填

    Chrome 浏览器 101 及以上版本

    只有当网域与 requestDomains 列表中的某个网域匹配时,该规则才会匹配网络请求。如果省略此列表,规则会应用于来自所有网域的请求。不允许使用空列表。

    注意:

    • 类似“a.example.com”的子网域。
    • 条目必须仅包含 ASCII 字符。
    • 对国际化域名使用 Punycode 编码。
    • 系统还会匹配所列网域的子网域。
  • requestMethods

    RequestMethod[] 可选

    Chrome 91 及更高版本

    规则可以匹配的 HTTP 请求方法列表。不允许使用空列表。

    注意:指定 requestMethods 规则条件也会排除非 HTTP(s) 请求,而指定 excludedRequestMethods 不会排除。

  • resourceTypes

    ResourceType[] 选填

    规则可以匹配的资源类型列表。不允许使用空列表。

    注意:必须为 allowAllRequests 规则指定此字段,并且只能包含 sub_framemain_frame 资源类型。

  • responseHeaders

    HeaderInfo[] 选填

    Chrome 128 及更高版本

    如果请求符合此列表中的任何响应标头条件(如果已指定),则规则匹配。

  • tabIds

    number[](选填

    Chrome 92 及更高版本

    规则应匹配的 tabs.Tab.id 的列表。ID tabs.TAB_ID_NONE 与并非来自标签页的请求匹配。不允许使用空列表。仅适用于会话级范围的规则。

  • urlFilter

    字符串(可选)

    与网络请求网址匹配的格式。支持的构造:

    '*':通配符:匹配任意数量的字符。

    '|':左侧/右侧定位点:如果在图案的任意一端使用,则分别指定网址的开头/结尾。

    '||':域名锚:如果在格式开头使用,则指定网址的(子)域名的开头。

    '^':分隔符:匹配除字母、数字或以下项之一以外的任何内容:_-.%。它还与网址的结尾部分相匹配。

    因此,urlFilter 由以下部分组成:(可选的左侧/域名定位符)+ 模式 +(可选的右侧定位符)。

    如果省略,则会匹配所有网址。不允许使用空字符串。

    不允许使用以 ||* 开头的格式。请改用 *

    注意:只能指定 urlFilterregexFilter 中的一个。

    注意:urlFilter 只能包含 ASCII 字符。这会与主机以 Punycode 格式编码(如果是国际化域名)的网址相匹配,而任何其他非 ASCII 字符都将以 UTF-8 编码的网址进行匹配。例如,如果请求网址为 http://abc.р雅?q=的最新动态,urlFilter 将与网址 http://abc.xn--p1ai/?q=%D1%84 匹配。

Ruleset

属性

  • 已启用

    布尔值

    规则集是否默认处于启用状态。

  • id

    字符串

    唯一标识规则集的非空字符串。以“_”开头的 ID预留供内部使用。

  • 路径

    字符串

    JSON 规则集相对于扩展程序目录的路径。

RulesMatchedDetails

属性

TabActionCountUpdate

Chrome 89 及更高版本

属性

  • 递增

    number

    标签操作数要增加的数值。负值将减少计数。

  • tabId

    number

    要为其更新操作数的标签页。

TestMatchOutcomeResult

Chrome 浏览器 103 或更高版本

属性

  • matchedRules

    与假设请求匹配的规则(如果有)。

TestMatchRequestDetails

Chrome 浏览器 103 或更高版本

属性

  • 发起者

    字符串(可选)

    假设请求的发起者网址(如果有)。

  • method

    假设请求的标准 HTTP 方法。默认为“get”对于 HTTP 请求,此参数会被忽略;对于非 HTTP 请求,此参数会被忽略。

  • responseHeaders

    对象(可选

    待处理

    如果请求在发送之前未被屏蔽或重定向,则由假设响应提供的标头。表示为将标头名称映射到字符串值列表的对象。如果未指定,假设响应将返回空的响应标头,该标头可以匹配匹配标头不存在的规则。例如 {"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}

  • tabId

    编号(选填

    发生假设请求的标签页的 ID。无需与真实的标签页 ID 相对应。默认值为 -1,表示请求与标签页无关。

  • 类型

    假设请求的资源类型。

  • 网址

    字符串

    假设请求的网址。

UnsupportedRegexReason

Chrome 87 及更高版本

说明给定正则表达式不受支持的原因。

枚举

"syntaxError"
正则表达式的语法不正确,或者使用了 RE2 语法不支持的功能。

&quot;memoryLimitExceeded&quot;
正则表达式超出了内存限制。

UpdateRuleOptions

Chrome 87 及更高版本

属性

  • addRules

    Rule[](可选)

    要添加的规则。

  • removeRuleIds

    number[](选填

    要移除的规则的 ID。所有无效 ID 都将被忽略。

UpdateRulesetOptions

Chrome 87 及更高版本

属性

  • disableRulesetIds

    string[] 选填

    与应停用的静态 Ruleset 对应的一组 ID。

  • enableRulesetIds

    string[] 选填

    与应启用的静态 Ruleset 对应的一组 ID。

UpdateStaticRulesOptions

Chrome 111 及更高版本

属性

  • disableRuleIds

    number[](选填

    与要停用的 Ruleset 中的规则对应的 ID 集。

  • enableRuleIds

    number[](选填

    与要启用的 Ruleset 中的规则对应的 ID 集。

  • rulesetId

    字符串

    与静态 Ruleset 对应的 ID。

URLTransform

属性

  • Fragment

    字符串(可选)

    请求的新 fragment。应为空,此时系统会清除现有的 fragment;或以“#”开头。

  • 主机

    字符串(可选)

    请求的新主机。

  • 密码

    字符串(可选)

    请求的新密码。

  • 路径

    字符串(可选)

    请求的新路径。如果为空,则清除现有路径。

  • 端口

    字符串(可选)

    请求的新端口。如果留空,系统会清除现有端口。

  • 查询

    字符串(可选)

    请求的新查询。应为空,此时系统会清除现有查询;或应以“?”开头。

  • queryTransform

    添加、移除或替换查询键值对。

  • 方案

    字符串(可选)

    请求的新架构。允许的值为“http”、“https”和“ftp”和“chrome-extension”

  • username

    字符串(可选)

    请求的新用户名。

属性

DYNAMIC_RULESET_ID

扩展程序添加的动态规则的规则集 ID。

"_dynamic"

GETMATCHEDRULES_QUOTA_INTERVAL

可以进行 MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules 调用的时间间隔,以分钟为单位指定。其他调用将立即失败并设置为 runtime.lastError。注意:与用户手势关联的 getMatchedRules 调用不受配额限制。

10

GUARANTEED_MINIMUM_STATIC_RULES

Chrome 89 及更高版本

为扩展程序启用的静态规则集保证的静态规则数量下限。超过此限制的所有规则都将计入全局静态规则限制

30,000

MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL

GETMATCHEDRULES_QUOTA_INTERVAL 时间段内可以调用 getMatchedRules 的次数。

20

MAX_NUMBER_OF_DYNAMIC_RULES

附加信息可添加的动态规则数量上限。

30,000

MAX_NUMBER_OF_ENABLED_STATIC_RULESETS

Chrome 94 及更高版本

扩展程序每次可启用的静态Rulesets数量上限。

50

MAX_NUMBER_OF_REGEX_RULES

扩展程序可以添加的正则表达式规则的数量上限。系统会针对一组动态规则和规则资源文件中指定的规则单独评估此限制。

1000

MAX_NUMBER_OF_SESSION_RULES

Chrome 120 及更高版本

扩展程序可以添加的会话级范围的规则数量上限。

5000

MAX_NUMBER_OF_STATIC_RULESETS

扩展程序可以在 "rule_resources" 清单键中指定的静态 Rulesets 数量上限。

100

MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES

Chrome 120 及更高版本

“不安全”事件的最大数量扩展程序可添加的动态规则

5000

MAX_NUMBER_OF_UNSAFE_SESSION_RULES

Chrome 120 及更高版本

“不安全”事件的最大数量扩展程序可以添加的会话级范围的规则。

5000

SESSION_RULESET_ID

Chrome 90 及更高版本

扩展程序添加的会话级范围的规则的规则集 ID。

"_session"

方法

getAvailableStaticRuleCount()

<ph type="x-smartling-placeholder"></ph> 承诺 Chrome 89 及更高版本
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
  callback?: function,
)

返回在达到全局静态规则限制之前扩展程序可以启用的静态规则的数量。

参数

  • callback

    函数(可选)

    callback 参数如下所示:

    (count: number) => void

    • 计数

      number

返回

  • Promise&lt;number&gt;

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

getDisabledRuleIds()

<ph type="x-smartling-placeholder"></ph> 承诺 Chrome 111 及更高版本
chrome.declarativeNetRequest.getDisabledRuleIds(
  options: GetDisabledRuleIdsOptions,
  callback?: function,
)

返回给定 Ruleset 中当前已停用的静态规则的列表。

参数

  • 指定要查询的规则集。

  • callback

    函数(可选)

    callback 参数如下所示:

    (disabledRuleIds: number[]) => void

    • disabledRuleIds

      数值 []

返回

  • 承诺<数字 []>

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

getDynamicRules()

<ph type="x-smartling-placeholder"></ph> 承诺
chrome.declarativeNetRequest.getDynamicRules(
  filter?: GetRulesFilter,
  callback?: function,
)

返回扩展程序当前的一组动态规则。调用方可以选择通过指定 filter 来过滤提取的规则列表。

参数

  • filter
    Chrome 111 及更高版本

    用于过滤提取的规则列表的对象。

  • callback

    函数(可选)

    callback 参数如下所示:

    (rules: Rule[]) => void

返回

  • Promise<规则 []>

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

getEnabledRulesets()

<ph type="x-smartling-placeholder"></ph> 承诺
chrome.declarativeNetRequest.getEnabledRulesets(
  callback?: function,
)

返回当前已启用的一组静态规则集的 ID。

参数

  • callback

    函数(可选)

    callback 参数如下所示:

    (rulesetIds: string[]) => void

    • rulesetIds

      字符串[]

返回

  • Promise&lt;string[]&gt;

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

getMatchedRules()

<ph type="x-smartling-placeholder"></ph> 承诺
chrome.declarativeNetRequest.getMatchedRules(
  filter?: MatchedRulesFilter,
  callback?: function,
)

返回与该扩展程序匹配的所有规则。调用方可以选择通过指定 filter 来过滤匹配规则列表。此方法仅适用于具有 "declarativeNetRequestFeedback" 权限的扩展程序,或已针对 filter 中指定的 tabId 授予 "activeTab" 权限的扩展程序。注意:系统不会返回与超过五分钟前匹配完毕的有效文档无关的规则。

参数

返回

  • Promise&lt;RulesMatchedDetails&gt;

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

getSessionRules()

<ph type="x-smartling-placeholder"></ph> 承诺 Chrome 90 及更高版本
chrome.declarativeNetRequest.getSessionRules(
  filter?: GetRulesFilter,
  callback?: function,
)

返回扩展程序当前的一组会话级范围的规则。调用方可以选择通过指定 filter 来过滤提取的规则列表。

参数

  • filter
    Chrome 111 及更高版本

    用于过滤提取的规则列表的对象。

  • callback

    函数(可选)

    callback 参数如下所示:

    (rules: Rule[]) => void

返回

  • Promise<规则 []>

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

isRegexSupported()

<ph type="x-smartling-placeholder"></ph> 承诺 Chrome 87 及更高版本
chrome.declarativeNetRequest.isRegexSupported(
  regexOptions: RegexOptions,
  callback?: function,
)

检查给定正则表达式是否支持作为 regexFilter 规则条件。

参数

返回

  • Promise&lt;IsRegexSupportedResult&gt;

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

setExtensionActionOptions()

<ph type="x-smartling-placeholder"></ph> 承诺 Chrome 88 及更高版本
chrome.declarativeNetRequest.setExtensionActionOptions(
  options: ExtensionActionOptions,
  callback?: function,
)

配置是否应将标签页的操作数显示为扩展程序操作的标记文字,并提供该操作计数的递增方式。

参数

  • callback

    函数(可选)

    Chrome 89 及更高版本

    callback 参数如下所示:

    () => void

返回

  • 承诺<void>

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

testMatchOutcome()

<ph type="x-smartling-placeholder"></ph> 承诺 Chrome 103 及更高版本
chrome.declarativeNetRequest.testMatchOutcome(
  request: TestMatchRequestDetails,
  callback?: function,
)

检查扩展程序的任何 declarativeNetRequest 规则是否与假设的请求匹配。注意:仅适用于未封装的扩展程序,因为这只能在扩展程序开发期间使用。

参数

返回

  • Promise&lt;TestMatchOutcomeResult&gt;

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

updateDynamicRules()

<ph type="x-smartling-placeholder"></ph> 承诺
chrome.declarativeNetRequest.updateDynamicRules(
  options: UpdateRuleOptions,
  callback?: function,
)

修改扩展程序的当前一组动态规则。系统会先移除 options.removeRuleIds 中列出的 ID 规则,然后再添加 options.addRules 中指定的规则。注意:

  • 此更新作为单个原子操作进行:要么添加和移除所有指定的规则,要么返回错误。
  • 无论浏览器会话还是扩展程序更新,这些规则都保持不变。
  • 无法使用此函数移除指定为扩展程序软件包一部分的静态规则。
  • MAX_NUMBER_OF_DYNAMIC_RULES 是扩展程序可以添加的动态规则数量上限。不安全规则的数量不得超过 MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES

参数

  • Chrome 87 及更高版本
  • callback

    函数(可选)

    callback 参数如下所示:

    () => void

返回

  • 承诺<void>

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

updateEnabledRulesets()

<ph type="x-smartling-placeholder"></ph> 承诺
chrome.declarativeNetRequest.updateEnabledRulesets(
  options: UpdateRulesetOptions,
  callback?: function,
)

更新扩展程序的已启用静态规则集。系统首先会移除 options.disableRulesetIds 中列出的 ID 规则集,然后再添加 options.enableRulesetIds 中列出的规则集。 请注意,一组已启用的静态规则集会在各会话之间保持不变,但在扩展程序更新中则不会。也就是说,rule_resources 清单键将决定每次扩展程序更新时已启用的静态规则集集。

参数

  • Chrome 87 及更高版本
  • callback

    函数(可选)

    callback 参数如下所示:

    () => void

返回

  • 承诺<void>

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

updateSessionRules()

<ph type="x-smartling-placeholder"></ph> 承诺 Chrome 90 及更高版本
chrome.declarativeNetRequest.updateSessionRules(
  options: UpdateRuleOptions,
  callback?: function,
)

修改扩展程序的当前会话级范围规则集。系统会先移除 options.removeRuleIds 中列出的 ID 规则,然后再添加 options.addRules 中指定的规则。注意:

  • 此更新作为单个原子操作进行:要么添加和移除所有指定的规则,要么返回错误。
  • 这些规则不会在会话之间持久保留,并且会支持在内存中。
  • MAX_NUMBER_OF_SESSION_RULES 是扩展程序可以添加的会话规则数量上限。

参数

  • callback

    函数(可选)

    callback 参数如下所示:

    () => void

返回

  • 承诺<void>

    Chrome 91 及更高版本

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

updateStaticRules()

<ph type="x-smartling-placeholder"></ph> 承诺 Chrome 111 及更高版本
chrome.declarativeNetRequest.updateStaticRules(
  options: UpdateStaticRulesOptions,
  callback?: function,
)

停用和启用 Ruleset 中的个别静态规则。对已停用的Ruleset的规则所做的更改将在下次启用时生效。

参数

返回

  • 承诺<void>

    Manifest V3 及更高版本支持 Promise,但为以下项目提供回调: 向后兼容性您不能在同一个函数调用中同时使用这两者。通过 promise 使用传递给回调的类型进行解析。

事件

onRuleMatchedDebug

chrome.declarativeNetRequest.onRuleMatchedDebug.addListener(
  callback: function,
)

在规则与请求匹配时触发。仅适用于具有 "declarativeNetRequestFeedback" 权限的解压扩展程序,因为此权限仅用于调试目的。

参数