説明
chrome.declarativeNetRequest API を使用してルールを宣言することで、ネットワーク リクエストをブロックまたは変更できます。これにより、拡張機能はネットワーク リクエストをインターセプトしてコンテンツを表示することなく変更できるため、プライバシーが強化されます。
権限
declarativeNetRequestdeclarativeNetRequestWithHostAccessdeclarativeNetRequestFeedbackhost_permissions
対象
マニフェスト
上記の権限に加えて、特定のタイプのルールセット(特に静的ルールセット)では、"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 を使用するには、1 つ以上のルールセットを指定します。ルールセットにはルールの配列が含まれています。単一のルールは次のいずれかを行います。
- ネットワーク リクエストをブロックします。
- スキーマをアップグレードします(http から https)。
- 一致するブロックルールを否定して、リクエストがブロックされないようにします。
- ネットワーク リクエストをリダイレクトします。
- リクエスト ヘッダーまたはレスポンス ヘッダーを変更します。
ルールセットには 3 種類あり、管理方法が若干異なります。
- ダイナミック
- ブラウザ セッションと拡張機能のアップグレード全体で保持され、拡張機能の使用中に JavaScript を使用して管理されます。
- セッション
- ブラウザがシャットダウンしたとき、および拡張機能の新しいバージョンがインストールされたときにクリアされます。セッション ルールは、拡張機能の使用中に JavaScript を使用して管理されます。
- 静的
- 拡張機能のインストールまたはアップグレード時にパッケージ化、インストール、更新されます。静的ルールは JSON 形式のルールファイルに保存され、マニフェスト ファイルにリストされます。
以降のセクションでは、ルールセットのタイプについて詳しく説明します。
動的ルールセットとセッション スコープのルールセット
拡張機能の使用中は、JavaScript を使用して動的ルールセットとセッション ルールセットが管理されます。
- 動的ルールは、ブラウザ セッションと拡張機能のアップグレードにまたがって保持されます。
- セッション ルールは、ブラウザがシャットダウンしたときと、新しいバージョンの拡張機能がインストールされたときにクリアされます。
これらのルールセット タイプはそれぞれ 1 つだけです。拡張機能は、ルールの上限を超えない限り、updateDynamicRules() と updateSessionRules() を呼び出すことで、ルールを動的に追加または削除できます。ルールの上限については、ルールの上限をご覧ください。コード例でこの例を確認できます。
静的ルールセット
動的ルールやセッション ルールとは異なり、静的ルールは拡張機能のインストールまたはアップグレード時にパッケージ化、インストール、更新されます。これらは JSON 形式のルールファイルに保存され、Ruleset 辞書 1 つ以上とともに、前述のとおり "declarative_net_request" キーと "rule_resources" キーを使用して拡張機能に示されます。Ruleset 辞書には、ルールファイルへのパス、ファイルに含まれるルールセットの ID、ルールセットが有効か無効かが含まれます。最後の 2 つは、ルールセットをプログラムで有効または無効にする場合に重要です。
{
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
},
...
]
}
...
}
ルールファイルをテストするには、拡張機能をパッケージ化されていない状態で読み込みます。無効な静的ルールに関するエラーと警告は、パッケージ化されていない拡張機能に対してのみ表示されます。パッケージ化された拡張機能内の無効な静的ルールは無視されます。
静的ルールとルールセットを有効または無効にする
個々の静的ルールと完全な静的ルールセットの両方を実行時に有効または無効にできます。
有効な静的ルールとルールセットのセットは、ブラウザ セッション間で保持されます。どちらも拡張機能の更新時に保持されないため、更新後に使用できるのは、ルールファイルに残すことを選択したルールのみです。
パフォーマンス上の理由から、一度に有効にできるルールとルールセットの数にも上限があります。getAvailableStaticRuleCount() を呼び出して、有効にできる追加ルールの数を確認します。ルールの上限については、ルールの上限をご覧ください。
静的ルールを有効または無効にするには、updateStaticRules() を呼び出します。このメソッドは、有効または無効にするルールの ID の配列を含む UpdateStaticRulesOptions オブジェクトを受け取ります。ID は、Ruleset 辞書の "id" キーを使用して定義されます。
静的ルールセットを有効または無効にするには、updateEnabledRulesets() を呼び出します。このメソッドは、有効または無効にするルールセットの ID の配列を含む UpdateRulesetOptions オブジェクトを受け取ります。ID は、Ruleset 辞書の "id" キーを使用して定義されます。
ビルドルール
タイプに関係なく、ルールは以下に示す 4 つのフィールドで始まります。"id" キーと "priority" キーは数値を指定しますが、"action" キーと "condition" キーは複数のブロック条件とリダイレクト条件を指定できます。次のルールは、"foo.com" から送信され、"abc" を部分文字列として含む URL へのすべてのスクリプト リクエストをブロックします。
{
"id" : 1,
"priority": 1,
"action" : { "type" : "block" },
"condition" : {
"urlFilter" : "abc",
"initiatorDomains" : ["foo.com"],
"resourceTypes" : ["script"]
}
}
urlFilter の一致文字
ルールの "condition" キーは、指定されたドメインの URL に対してアクションを実行するための "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://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 |
ルールの優先順位付け
ルールは、ウェブページから送信されたリクエストによってトリガーされます。複数のルールが特定のリクエストと一致する場合は、ルールに優先順位を付ける必要があります。このセクションでは、優先順位付けの方法について説明します。優先順位付けは 2 つの段階で行われます。
- 優先度は拡張機能内のルールに対して決定されます。
- 複数の拡張機能がリクエストにルールを適用できる場合、特定のリクエストに一致するすべての拡張機能の優先度が決定されます。
この方法で一致を考えると、特定の拡張機能が優先するルールは、他の拡張機能のルールよりも優先されます。
拡張機能内のルールの優先順位
1 つの拡張機能内では、次のプロセスを使用して優先順位が決定されます。
- デベロッパーが定義した優先度(つまり
"priority"フィールド)が最も高いルールが返されます。 デベロッパーが定義した優先度が最も高いルールが複数ある場合は、
"action"フィールドを使用して次の順序でルールに優先順位が付けられます。allowallowAllRequestsblockupgradeSchemeredirect
アクション タイプが
blockまたはredirectでない場合、一致するmodifyHeadersルールが評価されます。デベロッパー定義の優先度がallowとallowAllRequestsに指定された優先度よりも低いルールがある場合、それらのルールは無視されます。複数のルールが同じヘッダーを変更する場合、変更はデベロッパーが定義した
"priority"フィールドと指定されたオペレーションによって決定されます。- ルールでヘッダーに追加した場合、優先度の低いルールではそのヘッダーにのみ追加できます。設定と削除のオペレーションは許可されていません。
- ルールでヘッダーが設定されている場合、優先度の低いルールではそのヘッダーに追加することしかできません。その他の変更は許可されていません。
- ルールでヘッダーが削除された場合、優先度の低いルールでヘッダーをさらに変更することはできません。
拡張機能間のルールの優先度
リクエストに一致するルールを持つ拡張機能が 1 つだけの場合、そのルールが適用されます。ただし、複数の拡張機能がリクエストに一致する場合は、次のプロセスが使用されます。
ルールは、
"action"フィールドを使用して次の順序で優先順位が付けられます。blockredirectまたはupgradeSchemeallowまたはallowAllRequests
複数のルールが一致する場合は、最後にインストールされた拡張機能が優先されます。
ルールの制限事項
ブラウザでルールを読み込んで評価するとパフォーマンスのオーバーヘッドが発生するため、API を使用する際にはいくつかの制限が適用されます。上限は、使用するルールの種類によって異なります。
静的ルール
静的ルールは、マニフェスト ファイルで宣言されたルールファイルで指定されたルールです。拡張機能は、"rule_resources" マニフェスト キーの一部として最大 50 個の静的ルールセットを指定できますが、一度に有効にできるのはこれらのルールセットのうち 10 個のみです。後者は MAX_NUMBER_OF_ENABLED_STATIC_RULESETS と呼ばれます。これらのルールセットは、合計で少なくとも 30,000 個のルールが保証されています。これは GUARANTEED_MINIMUM_STATIC_RULES と呼ばれます。
その後利用できるルールの数は、ユーザーのブラウザにインストールされているすべての拡張機能で有効になっているルールの数によって異なります。この番号は、ランタイムに getAvailableStaticRuleCount() を呼び出すことで取得できます。コード例でこの例を確認できます。
ダイナミック ルールとセッション ルール
動的ルールとセッションルールに適用される上限は、静的ルールよりもシンプルです。両方の合計数は 5,000 を超えることはできません。これは MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES と呼ばれます。
正規表現を使用するルール
すべてのタイプのルールで正規表現を使用できますが、各タイプの正規表現ルールの合計数は 1, 000 を超えることはできません。これは MAX_NUMBER_OF_REGEX_RULES と呼ばれます。
また、コンパイル後の各ルールは 2 KB 未満にする必要があります。これは、ルールの複雑さとほぼ相関関係があります。この上限を超えるルールを読み込もうとすると、以下のような警告が表示され、ルールは無視されます。
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 ルールでは、公開リソース リクエストからウェブ アクセスできないリソースにリダイレクトすることはできません。このような操作を行うと、エラーが発生します。これは、指定されたウェブ アクセス可能なリソースがリダイレクト元の拡張機能によって所有されている場合でも同様です。declarativeNetRequest のリソースを宣言するには、マニフェストの "web_accessible_resources" 配列を使用します。
例
コードの例
ダイナミック ルールを更新する
次の例は、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 が拡張機能のルールをどのように優先順位付けするかを示しています。確認する際は、優先順位付けルールを別のウィンドウで開くことをおすすめします。
「priority」キー
これらの例では、*://*.example.com/* へのホスト権限が必要です。
特定の URL の優先度を計算するには、(デベロッパーが定義した)"priority" キー、"action" キー、"urlFilter" キーを確認します。これらの例は、その下に示されているルールファイルの例を参照しています。
- https://google.com へのナビゲーション
- この URL には、ID が 1 と 4 の 2 つのルールが適用されます。
"block"アクションは"redirect"アクションよりも優先度が高いため、ID 1 のルールが適用されます。残りのルールは、URL が長いため適用されません。 - https://google.com/1234 へのナビゲーション
- URL が長くなったため、ID 1 と 4 のルールに加えて、ID 2 のルールも一致するようになりました。
"allow"は"block"と"redirect"よりも優先度が高いため、ID 2 のルールが適用されます。 - https://google.com/12345 へのナビゲーション
- 4 つのルールすべてがこの URL と一致します。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」を使用して指定します。この場合、リダイレクトされた URL から「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
プロパティ
-
displayActionCountAsBadgeText
boolean 省略可
ページの操作数を拡張機能のバッジテキストとして自動的に表示するかどうか。この設定はセッションをまたいで保持されます。
-
tabUpdateChrome 89 以降
タブのアクション数を調整する方法の詳細。
GetDisabledRuleIdsOptions
プロパティ
-
rulesetId
文字列
静的
Rulesetに対応する ID。
GetRulesFilter
プロパティ
-
ruleIds
number[] 省略可
指定した場合、一致する ID を持つルールのみが含まれます。
HeaderInfo
プロパティ
-
excludedValues
string[] 省略可
指定した場合、ヘッダーが存在し、その値にこのリストの要素が 1 つ以上含まれていると、この条件は一致しません。これは
valuesと同じ一致パターンの構文を使用します。 -
header
文字列
ヘッダーの名前。この条件は、
valuesとexcludedValuesの両方が指定されていない場合にのみ、名前に一致します。 -
values
string[] 省略可
指定した場合、ヘッダーの値がこのリスト内の少なくとも 1 つのパターンと一致すると、この条件は一致します。これにより、大文字と小文字を区別しないヘッダー値の一致と、次の構造がサポートされます。
'*' : 任意の数の文字に一致します。
「?」 : 0 個または 1 個の文字に一致します。
'*' と '?' はバックスラッシュでエスケープできます(例: '\*'、'\?')。
HeaderOperation
ここでは、modifyHeaders ルールの可能なオペレーションについて説明します。
列挙型
「append」
指定されたヘッダーの新しいエントリを追加します。リクエストのヘッダーを変更する場合、このオペレーションは特定のヘッダーでのみサポートされます。
「set」
指定されたヘッダーの新しい値を設定し、同じ名前の既存のヘッダーを削除します。
「remove」
指定されたヘッダーのすべてのエントリを削除します。
IsRegexSupportedResult
プロパティ
-
isSupported
ブール値
-
reason
正規表現が対象外である理由を指定します。
isSupportedが false の場合にのみ指定されます。
MatchedRule
プロパティ
-
ruleId
数値
一致するルールの ID。
-
rulesetId
文字列
このルールが属する
Rulesetの ID。動的ルールのセットから発信されたルールの場合、これはDYNAMIC_RULESET_IDと同じになります。
MatchedRuleInfo
プロパティ
-
ルール
-
tabId
数値
リクエストの送信元となったタブの tabId(タブがまだアクティブな場合)。それ以外の場合は -1。
-
timeStamp
数値
ルールが一致した時刻。タイムスタンプは、時刻の JavaScript 規則(エポックからの経過ミリ秒数)に対応します。
MatchedRuleInfoDebug
プロパティ
-
リクエスト
ルールが一致したリクエストの詳細。
-
ルール
MatchedRulesFilter
プロパティ
-
minTimeStamp
number 省略可
指定した場合、指定されたタイムスタンプ以降のルールのみが一致します。
-
tabId
number 省略可
指定した場合、指定したタブのルールのみが一致します。-1 に設定されている場合、アクティブなタブに関連付けられていないルールに一致します。
ModifyHeaderInfo
プロパティ
-
header
文字列
変更するヘッダーの名前。
-
オペレーション
ヘッダーに対して実行するオペレーション。
-
値
文字列 省略可
ヘッダーの新しい値。
appendオペレーションとsetオペレーションで指定する必要があります。
QueryKeyValue
プロパティ
-
key
文字列
-
replaceOnly
boolean 省略可
Chrome 94 以降true の場合、クエリキーがすでに存在する場合にのみ置き換えられます。それ以外の場合は、キーがない場合に追加されます。デフォルトは false です。
-
値
文字列
QueryTransform
プロパティ
-
addOrReplaceParams
QueryKeyValue[] 省略可
追加または置換するクエリ Key-Value ペアのリスト。
-
removeParams
string[] 省略可
削除するクエリキーのリスト。
Redirect
プロパティ
-
extensionPath
文字列 省略可
拡張機能ディレクトリからの相対パス。「/」で始める必要があります。
-
regexSubstitution
文字列 省略可
regexFilterを指定するルールの置換パターン。URL 内で最初に見つかったregexFilterがこのパターンに置き換えられます。regexSubstitution内では、バックスラッシュでエスケープされた数字(\1 ~\9)を使用して、対応するキャプチャ グループを挿入できます。\0 は、一致するテキスト全体を参照します。 -
変換
URLTransform 省略可
実行する URL 変換。
-
URL
文字列 省略可
リダイレクト URL。JavaScript URL へのリダイレクトは許可されていません。
RegexOptions
プロパティ
-
isCaseSensitive
boolean 省略可
指定された
regexで大文字と小文字が区別されるかどうか。デフォルトは true です。 -
regex
文字列
チェックする正規表現。
-
requireCapturing
boolean 省略可
指定された
regexにキャプチャが必要かどうか。キャプチャが必要なのは、regexSubstitionアクションを指定するリダイレクト ルールのみです。デフォルトは false です。
RequestDetails
プロパティ
-
documentId
文字列 省略可
Chrome 106 以降このリクエストがフレームに対するものである場合、フレームのドキュメントの一意の識別子。
-
documentLifecycleChrome 106 以降
このリクエストがフレームに対するものである場合、フレームのドキュメントのライフサイクル。
-
frameId
数値
値 0 は、リクエストがメインフレームで発生したことを示します。正の値は、リクエストが発生したサブフレームの ID を示します。(サブ)フレームのドキュメントが読み込まれると(
typeがmain_frameまたはsub_frame)、frameIdは外側のフレームの ID ではなく、このフレームの ID を示します。フレーム ID はタブ内で一意です。 -
frameType
FrameType 省略可
Chrome 106 以降このリクエストがフレームに対するものである場合、フレームのタイプ。
-
イニシエータ
文字列 省略可
リクエストが開始されたオリジン。これはリダイレクトによって変更されません。これが不透明なオリジンである場合は、文字列「null」が使用されます。
-
method
文字列
標準の HTTP メソッド。
-
parentDocumentId
文字列 省略可
Chrome 106 以降このリクエストがフレームに対するもので、親がある場合、フレームの親ドキュメントの一意の識別子。
-
parentFrameId
数値
リクエストを送信したフレームをラップするフレームの ID。親フレームが存在しない場合は -1 に設定します。
-
requestId
文字列
リクエストの ID。リクエスト ID はブラウザ セッション内で一意です。
-
tabId
数値
リクエストが行われるタブの ID。リクエストがタブに関連付けられていない場合は -1 に設定します。
-
type
リクエストのリソースタイプ。
-
URL
文字列
リクエストの URL。
RequestMethod
ネットワーク リクエストの HTTP リクエスト メソッドを表します。
列挙型
"connect"
"delete"
"get"
"head"
"options"
"patch"
"post"
"put"
"other"
ResourceType
ネットワーク リクエストのリソースタイプを表します。
列挙型
"main_frame"
"sub_frame"
"stylesheet"
"script"
"image"
"font"
"object"
"xmlhttprequest"
"ping"
"csp_report"
"media"
"websocket"
"webtransport"
"webbundle"
"other"
Rule
プロパティ
-
アクション
このルールが一致した場合に実行するアクション。
-
このルールがトリガーされる条件。
-
id
数値
ルールを一意に識別する ID。必須で、1 以上にする必要があります。
-
priority
number 省略可
ルールの優先度。デフォルトは 1 です。指定する場合は、1 以上にする必要があります。
RuleAction
プロパティ
-
リダイレクト
Redirect 省略可
リダイレクトの実行方法を記述します。リダイレクト ルールでのみ有効です。
-
requestHeaders
ModifyHeaderInfo[] 省略可
Chrome 86 以降リクエストで変更するリクエスト ヘッダー。RuleActionType が "modifyHeaders" の場合にのみ有効です。
-
responseHeaders
ModifyHeaderInfo[] 省略可
Chrome 86 以降リクエストで変更するレスポンス ヘッダー。RuleActionType が "modifyHeaders" の場合にのみ有効です。
-
type
実行するアクションのタイプ。
RuleActionType
指定された RuleCondition が一致した場合に実行するアクションの種類を記述します。
列挙型
「block」
ネットワーク リクエストをブロックします。
「redirect」
ネットワーク リクエストをリダイレクトします。
「allow」
ネットワーク リクエストを許可します。リクエストに一致する許可ルールがある場合、リクエストはインターセプトされません。
「upgradeScheme」
リクエストが http または ftp の場合、ネットワーク リクエスト URL のスキームを https にアップグレードします。
「modifyHeaders」
ネットワーク リクエストからリクエスト/レスポンス ヘッダーを変更します。
allowAllRequests
フレーム リクエスト自体を含む、フレーム階層内のすべてのリクエストを許可します。
RuleCondition
プロパティ
-
domainType
DomainType 省略可
ネットワーク リクエストが、そのリクエストの送信元ドメインに対してファーストパーティかサードパーティかを指定します。省略すると、すべてのリクエストが承認されます。
-
ドメイン
string[] 省略可
Chrome 101 以降で非推奨代わりに
initiatorDomainsを使用するこのルールは、
domainsのリストから発信されたネットワーク リクエストにのみ一致します。 -
excludedDomains
string[] 省略可
Chrome 101 以降で非推奨代わりに
excludedInitiatorDomainsを使用するこのルールは、
excludedDomainsのリストから送信されたネットワーク リクエストには一致しません。 -
excludedInitiatorDomains
string[] 省略可
Chrome 101 以降このルールは、
excludedInitiatorDomainsのリストから送信されたネットワーク リクエストには一致しません。リストが空の場合や省略されている場合は、除外されるドメインはありません。これはinitiatorDomainsよりも優先されます。注:
- 「a.example.com」などのサブドメインも使用できます。
- エントリは ASCII 文字のみで構成する必要があります。
- 国際化ドメイン名には Punycode エンコードを使用します。
- これは、リクエスト URL ではなく、リクエスト イニシエータと照合されます。
- リストに記載されているドメインのサブドメインも除外されます。
-
excludedRequestDomains
string[] 省略可
Chrome 101 以降ドメインが
excludedRequestDomainsのリストのいずれかに一致する場合、ルールはネットワーク リクエストと一致しません。リストが空の場合や省略されている場合は、除外されるドメインはありません。これはrequestDomainsよりも優先されます。注:
- 「a.example.com」などのサブドメインも使用できます。
- エントリは ASCII 文字のみで構成する必要があります。
- 国際化ドメイン名には Punycode エンコードを使用します。
- リストに記載されているドメインのサブドメインも除外されます。
-
excludedRequestMethods
RequestMethod[] 省略可
Chrome 91 以降ルールが一致しないリクエスト メソッドのリスト。
requestMethodsとexcludedRequestMethodsのどちらか 1 つのみを指定する必要があります。どちらも指定されていない場合、すべてのリクエスト メソッドが一致します。 -
excludedResourceTypes
ResourceType[] 省略可
ルールが一致しないリソースタイプのリスト。
resourceTypesとexcludedResourceTypesのどちらか 1 つのみを指定する必要があります。どちらも指定されていない場合は、「main_frame」を除くすべてのリソースタイプがブロックされます。 -
excludedResponseHeaders
HeaderInfo[] 省略可
Chrome 128 以降リクエストがこのリストのレスポンス ヘッダー条件(指定されている場合)のいずれかに一致する場合、ルールは一致しません。
excludedResponseHeadersとresponseHeadersの両方が指定されている場合は、excludedResponseHeadersプロパティが優先されます。 -
excludedTabIds
number[] 省略可
Chrome 92 以降ルールが一致しない
tabs.Tab.idのリスト。tabs.TAB_ID_NONEの ID は、タブから発生していないリクエストを除外します。セッション スコープのルールでのみサポートされます。 -
excludedTopDomains
string[] 省略可
Chrome 145 以降関連付けられたトップレベル フレームのドメインが
excludedTopDomainsのリストのいずれかと一致する場合、このルールはネットワーク リクエストと一致しません。リストが空の場合や省略されている場合は、除外されるドメインはありません。これはtopDomainsよりも優先されます。注:
- 「a.example.com」などのサブドメインも使用できます。
- エントリは ASCII 文字のみで構成する必要があります。
- 国際化ドメイン名には Punycode エンコードを使用します。
- リストに記載されているドメインのサブドメインも除外されます。
- 関連付けられたトップレベル フレームがないリクエスト(ServiceWorker が開始したリクエストなど)の場合、リクエスト イニシエータのドメインが代わりに考慮されます。
-
initiatorDomains
string[] 省略可
Chrome 101 以降このルールは、
initiatorDomainsのリストから発信されたネットワーク リクエストにのみ一致します。リストが省略されている場合、ルールはすべてのドメインからのリクエストに適用されます。空のリストは使用できません。注:
- 「a.example.com」などのサブドメインも使用できます。
- エントリは ASCII 文字のみで構成する必要があります。
- 国際化ドメイン名には Punycode エンコードを使用します。
- これは、リクエスト URL ではなく、リクエスト イニシエータと照合されます。
- リストに登録されているドメインのサブドメインも一致します。
-
isUrlFilterCaseSensitive
boolean 省略可
urlFilterまたはregexFilter(指定された方)で大文字と小文字が区別されるかどうか。デフォルトは false です。 -
regexFilter
文字列 省略可
ネットワーク リクエストの URL と照合する正規表現。これは RE2 構文に従います。
注: 指定できるのは
urlFilterまたはregexFilterのいずれか 1 つのみです。注:
regexFilterは ASCII 文字のみで構成する必要があります。これは、ホストが punycode 形式でエンコードされ(国際化ドメインの場合)、他の ASCII 以外の文字が utf-8 で URL エンコードされている URL と照合されます。 -
requestDomains
string[] 省略可
Chrome 101 以降このルールは、ドメインが
requestDomainsのリストのいずれかと一致する場合にのみ、ネットワーク リクエストと一致します。リストが省略されている場合、ルールはすべてのドメインからのリクエストに適用されます。空のリストは使用できません。注:
- 「a.example.com」などのサブドメインも使用できます。
- エントリは ASCII 文字のみで構成する必要があります。
- 国際化ドメイン名には Punycode エンコードを使用します。
- リストに登録されているドメインのサブドメインも一致します。
-
requestMethods
RequestMethod[] 省略可
Chrome 91 以降ルールが照合できる HTTP リクエスト メソッドのリスト。空のリストは使用できません。
注:
requestMethodsルール条件を指定すると、HTTP(s) 以外のリクエストも除外されますが、excludedRequestMethodsを指定しても除外されません。 -
resourceTypes
ResourceType[] 省略可
ルールが一致するリソースタイプのリスト。空のリストは使用できません。
注: これは
allowAllRequestsルールで指定する必要があり、sub_frameリソースタイプとmain_frameリソースタイプのみを含めることができます。 -
responseHeaders
HeaderInfo[] 省略可
Chrome 128 以降リクエストがこのリストのレスポンス ヘッダー条件のいずれかに一致する場合、ルールが一致します(指定されている場合)。
-
tabIds
number[] 省略可
Chrome 92 以降ルールが一致する必要がある
tabs.Tab.idのリスト。tabs.TAB_ID_NONEの ID は、タブから送信されていないリクエストと一致します。空のリストは使用できません。セッション スコープのルールでのみサポートされます。 -
topDomains
string[] 省略可
Chrome 145 以降このルールは、関連付けられたトップレベル フレームのドメインが
topDomainsのリストのいずれかと一致する場合にのみ、ネットワーク リクエストと一致します。リストが省略されている場合、ルールはすべてのトップレベル フレーム ドメインに関連付けられたリクエストに適用されます。空のリストは使用できません。注:
- 「a.example.com」などのサブドメインも使用できます。
- エントリは ASCII 文字のみで構成する必要があります。
- 国際化ドメイン名には Punycode エンコードを使用します。
- リストに登録されているドメインのサブドメインも一致します。
- 関連付けられたトップレベル フレームがないリクエスト(ServiceWorker が開始したリクエストなど)の場合、リクエスト イニシエータのドメインが代わりに考慮されます。
-
urlFilter
文字列 省略可
ネットワーク リクエストの URL と照合されるパターン。サポートされているコンストラクト:
「*」 : ワイルドカード: 任意の数の文字に一致します。
'|' : 左/右アンカー: パターンのいずれかの端で使用すると、それぞれ URL の先頭/末尾を指定します。
'||' : ドメイン名アンカー: パターンの先頭で使用すると、URL の(サブ)ドメインの開始を指定します。
'^': 区切り文字: 文字、数字、
_、-、.、%以外のものに一致します。これは URL の末尾にも一致します。したがって、
urlFilterは、(オプションの左/ドメイン名アンカー)+ パターン +(オプションの右アンカー)で構成されます。省略すると、すべての URL が照合されます。空の文字列は使用できません。
||*で始まるパターンは許可されていません。代わりに*を使用してください。注: 指定できるのは
urlFilterまたはregexFilterのいずれか 1 つのみです。注:
urlFilterは ASCII 文字のみで構成する必要があります。これは、ホストが punycode 形式でエンコードされ(国際化ドメインの場合)、他の ASCII 以外の文字が utf-8 で URL エンコードされている URL と照合されます。たとえば、リクエスト URL が http://abc.рф?q=ф の場合、urlFilterは URL http://abc.xn--p1ai/?q=%D1%84 と照合されます。
RuleConditionKeys
列挙型
"urlFilter"
"regexFilter"
"isUrlFilterCaseSensitive"
"initiatorDomains"
"excludedInitiatorDomains"
"requestDomains"
"excludedRequestDomains"
「topDomains」
"excludedTopDomains"
"domains"
"excludedDomains"
"resourceTypes"
"excludedResourceTypes"
"requestMethods"
"excludedRequestMethods"
"domainType"
"tabIds"
"excludedTabIds"
"responseHeaders"
"excludedResponseHeaders"
Ruleset
プロパティ
-
有効
ブール値
ルールセットがデフォルトで有効になっているかどうか。
-
id
文字列
ルールセットを一意に識別する空でない文字列。「_」で始まる ID は内部使用のために予約されています。
-
パス
文字列
拡張機能ディレクトリを基準とする JSON ルールセットのパス。
RulesMatchedDetails
プロパティ
-
rulesMatchedInfo
指定されたフィルタに一致するルール。
TabActionCountUpdate
プロパティ
-
インクリメント
数値
タブのアクション カウントを増やす量。負の値はカウントを減らします。
-
tabId
数値
アクション数を更新するタブ。
TestMatchOutcomeResult
プロパティ
-
matchedRules
仮説リクエストに一致するルール(存在する場合)。
TestMatchRequestDetails
プロパティ
-
イニシエータ
文字列 省略可
仮説リクエストのイニシエータ URL(存在する場合)。
-
method
RequestMethod 省略可
仮説リクエストの標準 HTTP メソッド。HTTP リクエストの場合はデフォルトで「get」になり、HTTP 以外のリクエストの場合は無視されます。
-
responseHeaders
オブジェクト 省略可
Chrome 129 以降リクエストが送信される前にブロックまたはリダイレクトされない場合に、仮説的なレスポンスによって提供されるヘッダー。ヘッダー名を文字列値のリストにマッピングするオブジェクトとして表されます。指定されていない場合、仮説レスポンスは空のレスポンス ヘッダーを返します。これは、ヘッダーが存在しない場合に一致するルールと一致する可能性があります。例:
{"content-type": ["text/html; charset=utf-8", "multipart/form-data"]} -
tabId
number 省略可
仮説リクエストが行われるタブの ID。実際のタブ ID に対応している必要はありません。デフォルトは -1 です。これは、リクエストがタブに関連付けられていないことを意味します。
-
topUrl
文字列 省略可
Chrome 145 以降リクエストに関連付けられた最上位フレームの URL(存在する場合)。
-
type
仮説リクエストのリソースタイプ。
-
URL
文字列
仮説リクエストの URL。
UnsupportedRegexReason
指定された正規表現がサポートされていない理由を説明します。
列挙型
UpdateRuleOptions
プロパティ
-
addRules
Rule[] 省略可
追加するルール。
-
removeRuleIds
number[] 省略可
削除するルールの ID。無効な ID は無視されます。
UpdateRulesetOptions
プロパティ
UpdateStaticRulesOptions
プロパティ
URLTransform
プロパティ
-
fragment
文字列 省略可
リクエストの新しいフラグメント。空にするか、'#' で始める必要があります。空にした場合は、既存のフラグメントがクリアされます。
-
ホスト
文字列 省略可
リクエストの新しいホスト。
-
パスワード
文字列 省略可
リクエストの新しいパスワード。
-
パス
文字列 省略可
リクエストの新しいパス。空の場合、既存のパスはクリアされます。
-
ポート
文字列 省略可
リクエストの新しいポート。空の場合、既存のポートはクリアされます。
-
クエリ
文字列 省略可
リクエストの新しいクエリ。空にするか、「?」で始める必要があります。空にした場合は、既存のクエリがクリアされます。
-
queryTransform
QueryTransform (省略可)
クエリの Key-Value ペアを追加、削除、または置換します。
-
スキーム
文字列 省略可
リクエストの新しいスキーム。使用できる値は、「http」、「https」、「ftp」、「chrome-extension」です。
-
ユーザー名
文字列 省略可
リクエストの新しいユーザー名。
プロパティ
DYNAMIC_RULESET_ID
拡張機能によって追加された動的ルールのルールセット ID。
値
"_dynamic"
GETMATCHEDRULES_QUOTA_INTERVAL
MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules 呼び出しを行うことができる時間間隔(分単位)。追加の呼び出しはすぐに失敗し、runtime.lastError を設定します。注: ユーザー ジェスチャーに関連付けられた getMatchedRules 呼び出しは割り当ての対象外です。
値
10
GUARANTEED_MINIMUM_STATIC_RULES
有効な静的ルールセット全体で拡張機能に保証される静的ルールの最小数。この上限を超えるルールは、グローバル静的ルールの上限としてカウントされます。
値
30000
MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL
GETMATCHEDRULES_QUOTA_INTERVAL の期間内に getMatchedRules を呼び出すことができる回数。
値
20
MAX_NUMBER_OF_DYNAMIC_RULES
拡張機能が追加できる動的ルールの最大数。
値
30000
MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
拡張機能が一度に有効にできる静的 Rulesets の最大数。
値
50
MAX_NUMBER_OF_REGEX_RULES
拡張機能が追加できる正規表現ルールの最大数。この上限は、動的ルールのセットとルール リソース ファイルで指定されたルールのセットに対して個別に評価されます。
値
1000
MAX_NUMBER_OF_SESSION_RULES
拡張機能が追加できるセッション スコープ ルールの最大数。
値
5000
MAX_NUMBER_OF_STATIC_RULESETS
拡張機能が "rule_resources" マニフェスト キーの一部として指定できる静的 Rulesets の最大数。
値
100
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
拡張機能が追加できる「安全でない」動的ルールの最大数。
値
5000
MAX_NUMBER_OF_UNSAFE_SESSION_RULES
拡張機能が追加できる「安全でない」セッション スコープ ルールの最大数。
値
5000
SESSION_RULESET_ID
拡張機能によって追加されたセッション スコープのルールのルールセット ID。
値
"_session"
メソッド
getAvailableStaticRuleCount()
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
callback?: function,
): Promise<number>
拡張機能が有効にできる静的ルールの数(グローバル静的ルールの上限に達するまで)を返します。
パラメータ
-
callback
関数 省略可
callbackパラメータは次のようになります。(count: number) => void
-
count
数値
-
戻り値
-
Promise<number>
Chrome 91 以降Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
getDisabledRuleIds()
chrome.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
callback?: function,
): Promise<number[]>
現在無効になっている、指定された Ruleset 内の静的ルールのリストを返します。
パラメータ
-
クエリするルールセットを指定します。
-
callback
関数 省略可
callbackパラメータは次のようになります。(disabledRuleIds: number[]) => void
-
disabledRuleIds
number[]
-
戻り値
-
Promise<number[]>
そのルールセットで無効になっているルールに対応する ID のリストで解決される Promise。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
getDynamicRules()
chrome.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
callback?: function,
): Promise<Rule[]>
拡張機能の現在の動的ルールのセットを返します。発信者は、必要に応じて filter を指定して、取得したルールのリストをフィルタできます。
パラメータ
-
filter
GetRulesFilter 省略可
Chrome 111 以降取得したルールのリストをフィルタするオブジェクト。
-
callback
関数 省略可
callbackパラメータは次のようになります。(rules: Rule[]) => void
-
ルール
Rule[]
-
戻り値
-
Promise<Rule[]>
Chrome 91 以降動的ルールのセットで解決される Promise。一時的な内部エラーが発生した場合、Promise は拒否されることがあります。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
getEnabledRulesets()
chrome.declarativeNetRequest.getEnabledRulesets(
callback?: function,
): Promise<string[]>
現在有効になっている静的ルールセットの ID を返します。
パラメータ
-
callback
関数 省略可
callbackパラメータは次のようになります。(rulesetIds: string[]) => void
-
rulesetIds
string[]
-
戻り値
-
Promise<string[]>
Chrome 91 以降有効な静的
Rulesetに対応する ID のリストで解決される Promise。Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
getMatchedRules()
chrome.declarativeNetRequest.getMatchedRules(
filter?: MatchedRulesFilter,
callback?: function,
): Promise<RulesMatchedDetails>
拡張機能に一致するすべてのルールを返します。呼び出し元は、必要に応じて filter を指定して、一致するルールのリストをフィルタできます。このメソッドは、"declarativeNetRequestFeedback" 権限を持つ拡張機能、または filter で指定された tabId に対して "activeTab" 権限が付与されている拡張機能でのみ使用できます。注: 5 分以上前に一致した、アクティブなドキュメントに関連付けられていないルールは返されません。
パラメータ
-
filter
一致するルールのリストをフィルタするオブジェクト。
-
callback
関数 省略可
callbackパラメータは次のようになります。(details: RulesMatchedDetails) => void
戻り値
-
Promise<RulesMatchedDetails>
Chrome 91 以降一致するルールのリストが取得されたときに解決される Promise。エラーが発生した場合、Promise は拒否されます。これは、権限が不十分である、割り当てを超えているなど、複数の理由で発生する可能性があります。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
getSessionRules()
chrome.declarativeNetRequest.getSessionRules(
filter?: GetRulesFilter,
callback?: function,
): Promise<Rule[]>
拡張機能の現在のセッション スコープ ルールのセットを返します。発信者は、必要に応じて filter を指定して、取得したルールのリストをフィルタできます。
パラメータ
-
filter
GetRulesFilter 省略可
Chrome 111 以降取得したルールのリストをフィルタするオブジェクト。
-
callback
関数 省略可
callbackパラメータは次のようになります。(rules: Rule[]) => void
-
ルール
Rule[]
-
戻り値
-
Promise<Rule[]>
Chrome 91 以降セッション スコープのルールのセットで解決される Promise。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
isRegexSupported()
chrome.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
callback?: function,
): Promise<IsRegexSupportedResult>
指定された正規表現が regexFilter ルール条件としてサポートされるかどうかを確認します。
パラメータ
-
regexOptions
チェックする正規表現。
-
callback
関数 省略可
callbackパラメータは次のようになります。(result: IsRegexSupportedResult) => void
戻り値
-
Promise<IsRegexSupportedResult>
Chrome 91 以降正規表現がサポートされているかどうかと、サポートされていない場合はその理由で構成される詳細情報で解決される Promise。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
setExtensionActionOptions()
chrome.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
callback?: function,
): Promise<void>
タブのアクション数を拡張機能アクションのバッジテキストとして表示するかどうかを設定し、アクション数を増やす方法を提供します。
パラメータ
-
オプション
-
callback
関数 省略可
Chrome 89 以降callbackパラメータは次のようになります。() => void
戻り値
-
Promise<void>
Chrome 91 以降Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
testMatchOutcome()
chrome.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
callback?: function,
): Promise<TestMatchOutcomeResult>
拡張機能の declarativeNetRequest ルールのいずれかが仮説リクエストと一致するかどうかを確認します。注: この機能は、拡張機能の開発時にのみ使用することを想定しているため、パッケージ化されていない拡張機能でのみ使用できます。
パラメータ
-
リクエスト
-
callback
関数 省略可
callbackパラメータは次のようになります。(result: TestMatchOutcomeResult) => void
戻り値
-
Promise<TestMatchOutcomeResult>
一致したルールの詳細を含む Promise。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
updateDynamicRules()
chrome.declarativeNetRequest.updateDynamicRules(
options: UpdateRuleOptions,
callback?: function,
): Promise<void>
拡張機能の現在の動的ルールのセットを変更します。最初に options.removeRuleIds にリストされている ID のルールが削除され、次に options.addRules で指定されたルールが追加されます。注:
- この更新は単一のアトミック オペレーションとして行われます。指定されたすべてのルールが追加および削除されるか、エラーが返されます。
- これらのルールは、ブラウザ セッションと拡張機能の更新にわたって保持されます。
- 拡張機能パッケージの一部として指定された静的ルールは、この関数を使用して削除できません。
MAX_NUMBER_OF_DYNAMIC_RULESは、拡張機能が追加できる動的ルールの最大数です。安全でないルールの数はMAX_NUMBER_OF_UNSAFE_DYNAMIC_RULESを超えてはなりません。
パラメータ
-
オプションChrome 87 以降
-
callback
関数 省略可
callbackパラメータは次のようになります。() => void
戻り値
-
Promise<void>
Chrome 91 以降更新が完了すると解決される Promise。エラーが発生した場合、Promise は拒否され、ルールセットは変更されません。これは、無効なルール形式、重複するルール ID、ルール数の上限超過、内部エラーなど、さまざまな理由で発生する可能性があります。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
updateEnabledRulesets()
chrome.declarativeNetRequest.updateEnabledRulesets(
options: UpdateRulesetOptions,
callback?: function,
): Promise<void>
拡張機能で有効になっている静的ルールセットのセットを更新します。最初に options.disableRulesetIds にリストされている ID のルールセットが削除され、次に options.enableRulesetIds にリストされているルールセットが追加されます。有効な静的ルールセットのセットはセッション間で保持されますが、拡張機能のアップデート間では保持されません。つまり、rule_resources マニフェスト キーによって、各拡張機能のアップデートで有効な静的ルールセットのセットが決まります。
パラメータ
-
オプションChrome 87 以降
-
callback
関数 省略可
callbackパラメータは次のようになります。() => void
戻り値
-
Promise<void>
Chrome 91 以降更新が完了すると解決される Promise。エラーが発生した場合、Promise は拒否され、有効なルールセットのセットは変更されません。これは、無効なルールセット ID、ルール数の上限超過、内部エラーなど、さまざまな理由で発生する可能性があります。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
updateSessionRules()
chrome.declarativeNetRequest.updateSessionRules(
options: UpdateRuleOptions,
callback?: function,
): Promise<void>
拡張機能の現在のセッション スコープ ルールのセットを変更します。最初に options.removeRuleIds にリストされている ID のルールが削除され、次に options.addRules で指定されたルールが追加されます。注:
- この更新は単一のアトミック オペレーションとして行われます。指定されたすべてのルールが追加および削除されるか、エラーが返されます。
- これらのルールはセッション間で保持されず、メモリにバックアップされます。
MAX_NUMBER_OF_SESSION_RULESは、拡張機能が追加できるセッション ルールの最大数です。
パラメータ
-
オプション
-
callback
関数 省略可
callbackパラメータは次のようになります。() => void
戻り値
-
Promise<void>
Chrome 91 以降更新が完了すると解決される Promise。エラーが発生した場合、Promise は拒否され、ルールセットは変更されません。これは、無効なルール形式、重複するルール ID、ルール数の上限超過など、さまざまな理由で発生する可能性があります。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
updateStaticRules()
chrome.declarativeNetRequest.updateStaticRules(
options: UpdateStaticRulesOptions,
callback?: function,
): Promise<void>
Ruleset 内の個々の静的ルールを無効または有効にします。無効になっている Ruleset に属するルールに対する変更は、次回有効になったときに反映されます。
パラメータ
-
オプション
-
callback
関数 省略可
callbackパラメータは次のようになります。() => void
戻り値
-
Promise<void>
更新が完了すると解決される Promise。エラーが発生した場合、Promise は拒否され、有効な静的ルールは変更されません。
Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
イベント
onRuleMatchedDebug
chrome.declarativeNetRequest.onRuleMatchedDebug.addListener(
callback: function,
)
ルールがリクエストと一致したときに呼び出されます。これはデバッグ目的でのみ使用されるため、"declarativeNetRequestFeedback" 権限を持つパッケージ化されていない拡張機能でのみ使用できます。
パラメータ
-
callback
関数
callbackパラメータは次のようになります。(info: MatchedRuleInfoDebug) => void