declarativeNetRequest.RuleCondition

确定规则是否与请求匹配的条件的详细信息,作为 declarativeNetRequest.Rulecondition 属性。

类型

此类型的值为对象。它们包含以下属性

domainType 可选

一个 string。指定网络请求是第一方还是第三方。如果请求的目标域与发起请求的文档或子文档相同,则该请求被视为第一方。否则,它被视为第三方。如果省略,则接受所有请求。可能的值为 "firstParty""thirdParty"

domains 已弃用 可选

一个 string 数组。请改用 initiatorDomains。该规则仅匹配源自此域名列表的网络请求。

excludedDomains 已弃用 可选

一个 string 数组。请改用 excludedInitiatorDomains。该规则不匹配源自此域名列表的网络请求。

initiatorDomains 可选

一个 string 数组。该规则仅匹配源自此域名列表的网络请求。如果省略此列表,则该规则将应用于来自所有域名的请求。不允许使用空列表。应使用 规范域名。这会根据请求发起者而不是请求 URL 进行匹配。

excludedInitiatorDomains 可选

一个 string 数组。该规则不匹配源自此域名列表的网络请求。如果此列表为空或被省略,则不排除任何域名。这优先于 initiatorDomains。应使用 规范域名。这会根据请求发起者而不是请求 URL 进行匹配。

isUrlFilterCaseSensitive 可选

一个 booleanurlFilterregexFilter(以指定者为准)是否区分大小写。虽然在 WECG issue 269 中各浏览器默认使用 false 达成共识,但在 Chrome 和 Safari 的(旧)版本中,使用过的值为 true。有关详细信息,请参阅 浏览器兼容性

regexFilter 可选

一个 string。与网络请求 URL 匹配的正则表达式。请注意

requestDomains 可选

一个 string 数组。当域名与此列表中的一个域名匹配时,该规则仅匹配网络请求。如果省略此列表,则该规则将应用于来自所有域名的请求。不允许使用空列表。应使用 规范域名

excludedRequestDomains 可选

一个 string 数组。当域名与此列表中的一个域名匹配时,该规则不匹配网络请求。如果此列表为空或被省略,则不排除任何域名。这优先于 requestDomains。应使用 规范域名

requestMethods 可选

一个 string 数组。该规则匹配的 HTTP 请求方法列表。不允许使用空列表。指定 requestMethods 规则条件也会排除非 HTTP(s) 请求,而指定 excludedRequestMethods 则不会。

excludedRequestMethods 可选

一个 string 数组。该规则不匹配的请求方法列表。只能指定 requestMethodsexcludedRequestMethods 中的一个。如果两者都没有指定,则匹配所有请求方法。

resourceTypes 可选

一个 declarativeNetRequest.ResourceType 数组。该规则匹配的资源类型列表。不允许使用空列表。这必须为 "allowAllRequests" 规则指定,并且可能仅包含 "sub_frame""main_frame" 资源类型。

excludedResourceTypes 可选

一个 declarativeNetRequest.ResourceType 数组。该规则不匹配的资源类型列表。只能指定 resourceTypesexcludedResourceTypes 中的一个。如果两者都没有指定,则阻止除 "main_frame" 之外的所有资源类型。

tabIds 可选

一个 number 数组。该规则应匹配的 tabs.Tabid 列表。 tabs.TAB_ID_NONE 的 ID 匹配不源自选项卡的请求。不允许使用空列表。仅支持会话范围规则。

excludedTabIds 可选

一个number类型的数组。规则不应匹配的tabs.Tab.id列表。 tabs.TAB_ID_NONE的ID排除不源自选项卡的请求。仅会话范围规则支持。

urlFilter 可选

一个string类型。与网络请求URL匹配的模式。支持的结构

  • *:通配符:匹配任意数量的字符。
  • |:左或右锚点:如果用在模式的两端,分别指定URL的开头或结尾。
  • ||:域名锚点:如果用在模式的开头,则指定URL的(子)域名的开头。
  • ^:分隔符字符:匹配除字母、数字或_-.%之外的任何字符。最后一个^也可以匹配URL的结尾而不是分隔符字符。

urlFilter由以下部分组成:(可选的左/域名锚点)+ 模式 +(可选的右锚点)。如果省略,则匹配所有URL。不允许使用空字符串。不允许以||*开头的模式。请改用*。请注意

  • 只能指定urlFilterregexFilter中的一个。
  • urlFilter必须仅由ASCII字符组成。它与URL匹配,其中主机以Punycode格式(对于国际化域名)进行编码,任何其他非ASCII字符都以UTF-8进行百分比编码。例如,当请求URL为http://abc.рф?q=ф时,urlFilter与URL http://abc.xn--p1ai/?q=%D1%84匹配。

规范域名

initiatorDomainsexcludedInitiatorDomainsrequestDomainsexcludedRequestDomains中指定的域名应符合以下条件

  • 允许使用诸如“a.example.com”之类的子域名。
  • 条目必须仅包含小写ASCII字符。
  • 对于国际化域名,请使用Punycode编码。
  • IPv4地址必须表示为用点分隔的4个数字。
  • IPv6地址应以其规范形式表示,并用方括号括起来。

要以编程方式为URL生成规范域名,请使用URL API并读取其hostname属性,即new URL(url).hostname

示例扩展

浏览器兼容性

BCD 表格仅在浏览器中加载