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 を使用するには、1 つ以上のルールセットを指定します。ルールセットにはルールの配列が含まれます。単一のルールで、次のいずれかを行います。

  • ネットワーク リクエストをブロックする。
  • スキーマをアップグレードします(http から https へ)。
  • 一致するブロック対象ルールを否定することで、リクエストがブロックされないようにします。
  • ネットワーク リクエストをリダイレクトします。
  • リクエスト ヘッダーまたはレスポンス ヘッダーを変更する。

ルールセットには 3 つのタイプがあり、管理方法は若干異なります。

ダイナミック
ブラウザ セッションや拡張機能のアップグレード後も保持され、拡張機能の使用中は JavaScript を使用して管理されます。
セッション
ブラウザのシャットダウン時と、新しいバージョンの拡張機能のインストール時に消去されます。拡張機能の使用中は、JavaScript を使用してセッション ルールが管理されます。
静的
拡張機能のインストールまたはアップグレード時にパッケージ化、インストール、更新が行われます。静的ルールは JSON 形式のルールファイルに保存され、マニフェスト ファイルにリストされます。

以降のセクションでは、ルールセットの種類について詳しく説明します。

動的ルールセットとセッション スコープのルールセット

拡張機能の使用中は、動的ルールセットとセッション ルールセットが JavaScript を使用して管理されます。

  • ダイナミック ルールは、ブラウザ セッションや拡張機能のアップグレードをまたいで保持されます。
  • セッション ルールは、ブラウザをシャットダウンするときと、新しいバージョンの拡張機能がインストールされたときに消去されます。

各ルールセット タイプは 1 つだけです。拡張機能は、updateDynamicRules()updateSessionRules() を呼び出すことで、ルールを動的に追加または削除できます。ただし、ルールの上限を超えていないことが条件となります。ルールの上限については、ルールの上限をご覧ください。この例については、コードサンプルをご覧ください。

静的ルールセット

動的ルールやセッション ルールとは異なり、静的ルールは拡張機能のインストールまたはアップグレード時にパッケージ化、インストール、更新されます。ルールは JSON 形式のルールファイルに保存されます。ルールファイルは、上記"declarative_net_request" キーと "rule_resources" キー、および 1 つ以上の Ruleset ディクショナリを使用して拡張機能に示されます。Ruleset ディクショナリには、ルールファイルのパス、ファイルに含まれるルールセットの ID、ルールセットの有効 / 無効が含まれます。最後の 2 つは、ルールセットをプログラムで有効または無効にする場合に重要です。

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

ルールファイルをテストするには、拡張機能を解凍して読み込みます。無効な静的ルールに関するエラーや警告は、パッケージ化されていない拡張機能についてのみ表示されます。パッケージ化された拡張機能内の無効な静的ルールは無視されます。

静的ルールとルールセットを有効または無効にする

個々の静的ルールと完全な静的ルールセットはどちらも、実行時に有効または無効にできます。

有効な静的ルールとルールセットのセットは、ブラウザ セッション間で保持されます。どちらも拡張機能の更新後には保持されません。つまり、更新後には、ルールファイルに残すことを選択したルールのみを使用できます。

パフォーマンス上の理由から、一度に有効にできるルールとルールセットの数にも制限があります。getAvailableStaticRuleCount() を呼び出して、有効にできる追加ルールの数を確認します。ルールの上限については、ルールの上限をご覧ください。

静的ルールを有効または無効にするには、updateStaticRules() を呼び出します。このメソッドは UpdateStaticRulesOptions オブジェクトを受け取ります。このオブジェクトには、有効または無効にするルールの ID の配列が含まれます。ID は、Ruleset ディクショナリの "id" キーを使用して定義します。

静的rulesetsを有効または無効にするには、updateEnabledRulesets() を呼び出します。このメソッドは UpdateRulesetOptions オブジェクトを受け取ります。このオブジェクトには、有効または無効にするルールセットの ID の配列が含まれます。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" キーを使用すると、"urlFilter" キーを使用して、指定したドメイン内の URL を操作できます。パターンは、パターン マッチング トークンを使用して作成します。次に例を示します。

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. 優先度は、拡張機能内のルールによって決まります。
  2. 複数の拡張機能が 1 つのリクエストにルールを適用できる場合は、特定のリクエストに一致するすべての拡張機能の優先度が決定されます。

このように照合すると、特定の拡張機能が優先するルールは、他の拡張機能のルールよりも優先されます。

拡張機能内のルールの優先順位付け

単一の拡張機能内では、次のプロセスに従って優先順位付けが行われます。

  1. デベロッパーが定義した優先度が最も高いルール(つまり "priority" フィールド)が返されます。
  2. デベロッパーが定義した優先度が最も高いルールが複数ある場合は、"action" フィールドを使用して、以下の順序でルールの優先度が決定されます。

    1. allow
    2. allowAllRequests
    3. block
    4. upgradeScheme
    5. redirect
  3. アクション タイプが block でも redirect でもない場合、一致するすべての modifyHeaders ルールが評価されます。デベロッパーが定義した優先度が allowallowAllRequests に指定された優先度よりも低いルールがある場合、そのようなルールは無視されます。

  4. 複数のルールで同じヘッダーが変更される場合、変更は、デベロッパーが定義した "priority" フィールドと指定されたオペレーションによって決まります。

    • ルールがヘッダーに追加された場合、より優先度の低いルールはそのヘッダーにのみ追加できます。設定オペレーションと削除オペレーションは使用できません。
    • ルールでヘッダーが設定されている場合、優先度の低いルールはそのヘッダーにのみ追加できます。その他の変更は許可されません。
    • ルールでヘッダーが削除された場合、より優先度の低いルールでヘッダーを変更することはできません。

拡張機能間のルールの優先順位付け

リクエストに一致するルールが 1 つの拡張機能のみにある場合、そのルールが適用されます。ただし、複数の拡張機能がリクエストに一致する場合は、次のプロセスが使用されます。

  1. ルールは、"action" フィールドを使用して次の順序で優先順位が付けられます。

    1. block
    2. redirect または upgradeScheme
    3. allow または allowAllRequests
  2. 複数のルールが一致する場合は、最近インストールされた拡張機能が優先されます。

ルールの制限事項

ブラウザでルールを読み込んで評価するとパフォーマンス上のオーバーヘッドが発生するため、API の使用時にはいくつかの制限が適用されます。上限は、使用しているルールの種類によって異なります。

静的ルール

静的ルールは、マニフェスト ファイルで宣言されたルールファイルで指定されたルールです。拡張機能では、"rule_resources" マニフェスト キーの一部として最大 100 個の静的rulesetsを指定できますが、一度に有効にできるルールセットは 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 以降では、MAX_NUMBER_OF_DYNAMIC_RULES として公開される安全なダイナミック ルールに使用できるルール数の上限が 30,000 に設定されています。安全なルールは、blockallowallowAllRequestsupgradeScheme のアクションを持つルールとして定義されます。上限の 5,000 以内に追加された安全でないルールも、この上限にカウントされます。

Chrome 120 より前は、ダイナミック ルールとセッション ルールを合わせた上限は 5, 000 件でした。

正規表現を使用するルール

どのタイプのルールでも正規表現を使用できますが、各タイプの正規表現ルールの合計数は 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 で拡張機能のルールがどのように優先順位付けされるかを示しています。優先度を確認する際は、優先度のルールを別のウィンドウで開くことをおすすめします。

「優先度」のキー

以下の例では、*://*.example.com/* に対するホスト権限が必要です。

特定の URL の優先度を判断するには、(デベロッパーが定義した)"priority" キー、"action" キー、"urlFilter" キーを調べます。これらの例は、その下に示したサンプル ルールファイルを参照しています。

https://google.com へのナビゲーション
この URL には 2 つのルールがあります。ID 1 と 4 のルールです。"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.jpgchrome-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」はリダイレクト URL から取得され、置換テキストに配置されます。

{
  "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 が一致するルールのみが含まれます。

HeaderOperation

Chrome 86 以降

ここでは、「modifyHeaders」ルールで実行できるオペレーションについて説明します。

列挙型

"append"
指定されたヘッダーに新しいエントリを追加します。この操作は、リクエスト ヘッダーではサポートされていません。

"set"
指定されたヘッダーに新しい値を設定し、同じ名前の既存のヘッダーをすべて削除します。

"remove"
指定されたヘッダーのエントリをすべて削除します。

IsRegexSupportedResult

Chrome 87 以降

プロパティ

  • isSupported

    boolean

  • 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

Chrome 86 以降

プロパティ

  • header

    文字列

    変更するヘッダーの名前。

  • operation

    ヘッダーに対して実行される操作。

  • value

    string(省略可)

    ヘッダーの新しい値。append オペレーションと set オペレーションに指定する必要があります。

QueryKeyValue

プロパティ

  • key

    文字列

  • replaceOnly

    ブール値(省略可)

    Chrome 94 以降

    true の場合、クエリキーがすでに存在する場合にのみ置き換えられます。キーがない場合は、キーも追加されます。デフォルトは false です。

  • value

    文字列

QueryTransform

プロパティ

  • addOrReplaceParams

    QueryKeyValue[] 省略可

    追加または置換されるクエリの Key-Value ペアのリスト。

  • removeParams

    string[] 省略可

    削除するクエリキーのリスト。

Redirect

プロパティ

  • extensionPath

    string(省略可)

    拡張機能のディレクトリへの相対パス。先頭は「/」にする必要があります。

  • regexSubstitution

    string(省略可)

    regexFilter を指定するルールの置換パターン。URL 内で最初に一致した regexFilter がこのパターンに置き換えられます。regexSubstitution 内では、バックスラッシュでエスケープされた数字(\1 ~\9)を使用して、対応するキャプチャ グループを挿入できます。\0 は一致するテキスト全体を指します。

  • 変換

    URLTransform 省略可

    実行する URL の変換。

  • URL

    string(省略可)

    リダイレクト URL。JavaScript URL へのリダイレクトは許可されません。

RegexOptions

Chrome 87 以降

プロパティ

  • isCaseSensitive

    ブール値(省略可)

    指定された regex で大文字と小文字が区別されるかどうか。デフォルトは true です。

  • regex

    文字列

    確認する標準 expresson。

  • requireCapturing

    ブール値(省略可)

    指定された regex にキャプチャが必要かどうかを指定します。キャプチャは、regexSubstition アクションを指定するリダイレクト ルールの場合にのみ必要です。デフォルト値は false です。

RequestDetails

プロパティ

  • documentId

    string(省略可)

    Chrome 106 以降

    フレームのドキュメントに対する一意の識別子(フレームに対するリクエストの場合)。

  • documentLifecycle
    Chrome 106 以降

    フレームのドキュメントのライフサイクル(このリクエストがフレームに対する場合)。

  • frameId

    数値

    0 はリクエストがメインフレームで発生したことを示し、正の値はリクエストが発生したサブフレームの ID を示します。(サブ)フレームのドキュメントが読み込まれている場合(typemain_frame または sub_frame の場合)、frameId は、外フレームの ID ではなく、このフレームの ID を示します。フレーム ID はタブ内で一意です。

  • frameType

    FrameType 省略可

    Chrome 106 以降

    フレームのタイプ(このリクエストがフレームに関する場合)。

  • 開始元

    string(省略可)

    リクエストが開始されたオリジン。これはリダイレクトによって変わりません。これが不透明なオリジンの場合は、文字列「null」が使用されます。

  • method

    文字列

    標準の HTTP メソッド。

  • parentDocumentId

    string(省略可)

    Chrome 106 以降

    フレームに対するリクエストであり、親がある場合、フレームの親ドキュメントの一意の識別子。

  • parentFrameId

    数値

    リクエストを送信したフレームをラップするフレームの ID。親フレームが存在しない場合は -1 に設定します。

  • requestId

    文字列

    リクエストの ID。リクエスト ID はブラウザ セッション内で一意です。

  • tabId

    数値

    リクエストが行われるタブの ID。リクエストがタブに関連していない場合は -1 に設定します。

  • リクエストのリソースタイプ。

  • URL

    文字列

    リクエストの URL。

RequestMethod

Chrome 91 以降

ネットワーク リクエストの HTTP リクエスト メソッドを記述します。

列挙型

"head"

"options"

"patch"

"post"

"put"

ResourceType

ネットワーク リクエストのリソースタイプを表します。

列挙型

"main_frame"

"sub_frame"

"stylesheet"

"script"

"image"

"object"

"media"

"webbundle"

Rule

プロパティ

  • action

    このルールが一致した場合に実行するアクション。

  • 条件

    このルールがトリガーされる条件。

  • id

    数値

    ルールを一意に識別する ID。必須。1 以上である必要があります。

  • priority

    number(省略可)

    ルールの優先度。デフォルトは 1 です。指定する場合は、1 以上にする必要があります。

RuleAction

プロパティ

  • リダイレクト

    リダイレクト(省略可)

    リダイレクトの実行方法について説明します。リダイレクト ルールに対してのみ有効です。

  • requestHeaders

    ModifyHeaderInfo[] 省略可

    Chrome 86 以降

    リクエストに対して変更するリクエスト ヘッダー。RuleActionType が「modifyHeaders」の場合にのみ有効です。

  • responseHeaders

    ModifyHeaderInfo[] 省略可

    Chrome 86 以降

    リクエストに対して変更するレスポンス ヘッダー。RuleActionType が「modifyHeaders」の場合にのみ有効です。

  • 実行するアクションのタイプ。

RuleActionType

指定した RuleCondition が一致した場合に実行するアクションの種類を記述します。

列挙型

"block"
ネットワーク リクエストをブロックします。

"redirect"
ネットワーク リクエストをリダイレクトします。

"allow"
ネットワーク リクエストを許可します。一致する許可ルールがある場合、リクエストはインターセプトされません。

"upgradeScheme"
リクエストが http または ftp の場合は、ネットワーク リクエストの URL のスキームを https にアップグレードします。

"modifyHeaders"
ネットワーク リクエストのリクエスト/レスポンス ヘッダーを変更します。

"allowAllRequests"
フレーム階層内のすべてのリクエスト(フレーム リクエスト自体を含む)を許可します。

RuleCondition

プロパティ

  • domainType

    DomainType 省略可

    ネットワーク リクエストが自社からのものか、あるいは送信元のドメインに対するサードパーティからのものかを示します。省略すると、すべてのリクエストが受け入れられます。

  • domains

    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」を除くすべてのリソースタイプがブロックされます。

  • excludedTabIds

    number[] 省略可

    Chrome 92 以降

    ルールが一致しない tabs.Tab.id のリスト。ID が「tabs.TAB_ID_NONE」の場合、タブ以外で発生したリクエストは除外されます。セッション スコープのルールでのみサポートされます。

  • initiatorDomains

    string[] 省略可

    Chrome 101 以降

    このルールは、initiatorDomains のリストから送信されたネットワーク リクエストにのみ一致します。リストを省略すると、すべてのドメインからのリクエストにルールが適用されます。空のリストは指定できません。

    メモ:

    • 「a.example.com」のようなサブドメインも使用できます。
    • エントリに使用できるのは ASCII 文字のみです。
    • 国際化ドメインには Punycode エンコードを使用します。
    • これは、リクエスト URL ではなく、リクエスト イニシエータと照合されます。
    • リストされたドメインのサブドメインも一致します。
  • isUrlFilterCaseSensitive

    ブール値(省略可)

    urlFilter または regexFilter(指定されたいずれか)で大文字と小文字が区別されるかどうか。デフォルトは false です。

  • regexFilter

    string(省略可)

    ネットワーク リクエスト URL と照合する正規表現。これは RE2 構文に従います。

    注: urlFilter または regexFilter のいずれか 1 つのみを指定できます。

    注: regexFilter は ASCII 文字のみで構成する必要があります。ホストが Punycode 形式でエンコードされ(国際化ドメインの場合)、その他の ASCII 以外の文字が utf-8 でエンコードされている 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 リソースタイプのみです。

  • tabIds

    number[] 省略可

    Chrome 92 以降

    ルールが一致する tabs.Tab.id のリスト。ID が「tabs.TAB_ID_NONE」の場合、タブに由来しないリクエストと一致します。空のリストは指定できません。セッション スコープのルールでのみサポートされます。

  • urlFilter

    string(省略可)

    ネットワーク リクエスト URL と照合されるパターン。サポートされている構造:

    '*' : ワイルドカード: 任意の数の文字に一致します。

    '|' : 左または右のアンカー: パターンの最後に使用する場合は、URL の最初と最後の部分をそれぞれ指定します。

    '||' : ドメイン名アンカー: パターンの先頭で使用する場合は、URL の(サブ)ドメインの先頭を指定します。

    '^' : 区切り文字: 文字、数字、_-.% のいずれか以外のすべてに一致します。これは URL の末尾にも一致します。

    したがって、urlFilter は、(オプションの左/ドメイン名アンカー)+ パターン +(オプションの右アンカー)で構成されます。

    省略した場合は、すべての URL が照合されます。空の文字列は使用できません。

    ||* で始まるパターンは使用できません。代わりに * を使用してください。

    注: urlFilter または regexFilter のいずれか 1 つのみを指定できます。

    注: urlFilter は ASCII 文字のみで構成する必要があります。ホストが Punycode 形式でエンコードされ(国際化ドメインの場合)、その他の ASCII 以外の文字が utf-8 でエンコードされている URL と照合されます。たとえば、リクエスト URL が http://abc.рoptimizing?q=REFUND の場合、urlFilter は URL http://abc.xn--p1ai/?q=%D1%84 と照合されます。

Ruleset

プロパティ

  • 有効

    boolean

    ルールセットがデフォルトで有効かどうか。

  • id

    文字列

    ルールセットを一意に識別する空でない文字列。「_」で始まる ID は内部使用のために予約されています。

  • パス

    文字列

    拡張機能ディレクトリを基準とする JSON ルールセットの相対パス。

RulesMatchedDetails

プロパティ

  • rulesMatchedInfo

    指定したフィルタに一致するルール。

TabActionCountUpdate

Chrome 89 以降

プロパティ

  • インクリメント

    数値

    タブのアクション カウントをインクリメントする量。負の値を指定すると、カウントが減少します。

  • tabId

    数値

    アクション数を更新するタブ。

TestMatchOutcomeResult

Chrome 103 以降

プロパティ

  • matchedRules

    仮定のリクエストに一致するルール(存在する場合)。

TestMatchRequestDetails

Chrome 103 以降

プロパティ

  • 開始元

    string(省略可)

    仮のリクエストの開始側 URL(ある場合)。

  • method

    RequestMethod 省略可

    仮のリクエストの標準 HTTP メソッド。HTTP リクエストのデフォルトは「get」で、HTTP 以外のリクエストは無視されます。

  • tabId

    number(省略可)

    仮のリクエストが行われるタブの ID。実際のタブ ID に対応する必要はありません。デフォルトは -1 で、リクエストはタブに関連しないことを意味します。

  • 仮のリクエストのリソースタイプ。

  • URL

    文字列

    架空のリクエストの URL。

UnsupportedRegexReason

Chrome 87 以降

特定の正規表現がサポートされていない理由を示します。

列挙型

"syntaxError"
正規表現の構文が正しくないか、RE2 構文では利用できない機能が使用されています。

"memoryLimitExceeded"
正規表現がメモリの上限を超えています。

UpdateRuleOptions

Chrome 87 以降

プロパティ

  • addRules

    ルール [] (省略可)

    追加するルール。

  • 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

    string(省略可)

    リクエストの新しいフラグメント。空(空の場合、既存のフラグメントがクリアされる)か、「#」で始まる必要があります。

  • 主催者

    string(省略可)

    リクエストの新しいホスト。

  • パスワード

    string(省略可)

    リクエストの新しいパスワード。

  • パス

    string(省略可)

    リクエストの新しいパス。空の場合、既存のパスが消去されます。

  • ポート

    string(省略可)

    リクエストの新しいポート。空の場合、既存のポートは消去されます。

  • クエリ

    string(省略可)

    リクエストの新しいクエリ。空(空の場合、既存のクエリがクリアされます)か、「?」で始まる必要があります。

  • queryTransform

    QueryTransform 省略可

    クエリの Key-Value ペアを追加、削除、置換します。

  • scheme

    string(省略可)

    リクエストの新しいスキーム。指定できる値は「http」、「https」、「ftp」、「chrome-extension」です。

  • ユーザー名

    string(省略可)

    リクエストの新しいユーザー名。

プロパティ

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

拡張機能が追加できる正規表現ルールの最大数。この上限は、ダイナミック ルールのセットとルール リソース ファイルで指定されたルールに対して個別に評価されます。

1,000

MAX_NUMBER_OF_SESSION_RULES

Chrome 120 以降

拡張機能が追加できるセッション スコープのルールの最大数。

5,000

MAX_NUMBER_OF_STATIC_RULESETS

拡張機能が "rule_resources" マニフェスト キーの一部として指定できる静的 Rulesets の最大数。

100

MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES

Chrome 120 以降

拡張機能が追加できる「安全ではない」ダイナミック ルールの最大数。

5,000

MAX_NUMBER_OF_UNSAFE_SESSION_RULES

Chrome 120 以降

拡張機能が追加できる「安全でない」セッション スコープのルールの最大数。

5,000

SESSION_RULESET_ID

Chrome 90 以降

拡張機能によって追加されたセッション スコープのルールのルールセット ID。

Methods

getAvailableStaticRuleCount()

Promise Chrome 89 以降
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
  callback?: function,
)

グローバルな静的ルールの上限に達するまでに拡張機能が有効にできる静的ルールの数を返します。

パラメータ

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (count: number)=>void

    • count

      数値

戻り値

  • Promise<数値>

    Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

getDisabledRuleIds()

Promise Chrome 111 以降
chrome.declarativeNetRequest.getDisabledRuleIds(
  options: GetDisabledRuleIdsOptions,
  callback?: function,
)

指定された Ruleset で現在無効になっている静的ルールのリストを返します。

パラメータ

  • オプション

    クエリ対象のルールセットを指定します。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (disabledRuleIds: number[])=>void

    • disabledRuleIds

      数値 []

戻り値

  • Promise<数値 []>

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

getDynamicRules()

Promise
chrome.declarativeNetRequest.getDynamicRules(
  filter?: GetRulesFilter,
  callback?: function,
)

広告表示オプションの現在のダイナミック ルールセットを返します。呼び出し元は、必要に応じて filter を指定することで、フェッチされたルールのリストをフィルタリングできます。

パラメータ

  • フィルタ

    GetRulesFilter 省略可

    Chrome 111 以降

    取得されたルールのリストをフィルタするオブジェクト。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (rules: Rule[])=>void

戻り値

  • Promise<ルール[]>

    Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

getEnabledRulesets()

Promise
chrome.declarativeNetRequest.getEnabledRulesets(
  callback?: function,
)

現在有効になっている静的ルールセットの ID を返します。

パラメータ

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (rulesetIds: string[])=>void

    • rulesetIds

      string[]

戻り値

  • Promise<string[]>

    Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

getMatchedRules()

Promise
chrome.declarativeNetRequest.getMatchedRules(
  filter?: MatchedRulesFilter,
  callback?: function,
)

拡張機能に一致したすべてのルールを返します。呼び出し元は、必要に応じて filter を指定することで、一致したルールのリストをフィルタリングできます。このメソッドは、"declarativeNetRequestFeedback" 権限がある拡張機能、または filter で指定された tabId"activeTab" 権限が付与されている拡張機能でのみ使用できます。注: アクティブなドキュメントに関連付けられておらず、5 分以上前に一致したルールは返されません。

パラメータ

戻り値

  • Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

getSessionRules()

Promise Chrome 90 以降
chrome.declarativeNetRequest.getSessionRules(
  filter?: GetRulesFilter,
  callback?: function,
)

拡張機能の現在のセッション スコープ ルールのセットを返します。呼び出し元は、必要に応じて filter を指定することで、フェッチされたルールのリストをフィルタリングできます。

パラメータ

  • フィルタ

    GetRulesFilter 省略可

    Chrome 111 以降

    取得されたルールのリストをフィルタするオブジェクト。

  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    (rules: Rule[])=>void

戻り値

  • Promise<ルール[]>

    Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

isRegexSupported()

Promise Chrome 87 以降
chrome.declarativeNetRequest.isRegexSupported(
  regexOptions: RegexOptions,
  callback?: function,
)

指定された正規表現が regexFilter ルール条件としてサポートされるかどうかを確認します。

パラメータ

戻り値

  • Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

setExtensionActionOptions()

Promise Chrome 88 以降
chrome.declarativeNetRequest.setExtensionActionOptions(
  options: ExtensionActionOptions,
  callback?: function,
)

タブのアクション数を拡張機能アクションのバッジテキストとして表示するかどうかを設定し、そのアクション数を増やす方法を提供します。

パラメータ

  • オプション
  • callback

    関数(省略可)

    Chrome 89 以降

    callback パラメータは次のようになります。

    ()=>void

戻り値

  • Promise<void>

    Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

testMatchOutcome()

Promise Chrome 103 以降
chrome.declarativeNetRequest.testMatchOutcome(
  request: TestMatchRequestDetails,
  callback?: function,
)

拡張機能の declarativeNetRequest ルールのいずれかが架空のリクエストと一致するかどうかを確認します。注: 拡張機能の開発中にのみ使用することを想定しているため、パッケージ化されていない拡張機能でのみ使用できます。

パラメータ

戻り値

  • Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

updateDynamicRules()

Promise
chrome.declarativeNetRequest.updateDynamicRules(
  options: UpdateRuleOptions,
  callback?: function,
)

拡張機能の現在のダイナミック ルールセットを変更します。まず、options.removeRuleIds にリストされている ID のルールが削除され、次に options.addRules に指定されたルールが追加されます。メモ:

  • この更新は単一のアトミック操作として実行されます。つまり、指定されたすべてのルールが追加または削除されるか、エラーが返されます。
  • これらのルールは、ブラウザ セッション間や拡張機能の更新をまたいで保持されます。
  • 拡張機能パッケージの一部として指定された静的ルールは、この関数を使用して削除できません。
  • MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES は、拡張機能が追加できる動的ルールとセッション ルールの組み合わせの最大数です。

パラメータ

  • オプション
    Chrome 87 以降
  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    ()=>void

戻り値

  • Promise<void>

    Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

updateEnabledRulesets()

Promise
chrome.declarativeNetRequest.updateEnabledRulesets(
  options: UpdateRulesetOptions,
  callback?: function,
)

拡張機能に対して有効な静的ルールセットのセットを更新します。まず、options.disableRulesetIds にリストされている ID のルールセットが削除され、次に options.enableRulesetIds にリストされているルールセットが追加されます。有効な静的ルールセットのセットはセッション間で保持されますが、拡張機能の更新間では保持されません。つまり、rule_resources マニフェスト キーにより、拡張機能の更新ごとに有効な静的ルールセットのセットが決まります。

パラメータ

  • オプション
    Chrome 87 以降
  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    ()=>void

戻り値

  • Promise<void>

    Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

updateSessionRules()

Promise Chrome 90 以降
chrome.declarativeNetRequest.updateSessionRules(
  options: UpdateRuleOptions,
  callback?: function,
)

拡張機能の現在のセッション スコープ ルールのセットを変更します。まず、options.removeRuleIds にリストされている ID のルールが削除され、次に options.addRules に指定されたルールが追加されます。メモ:

  • この更新は単一のアトミック操作として実行されます。つまり、指定されたすべてのルールが追加または削除されるか、エラーが返されます。
  • これらのルールはセッション間で保持されず、メモリにバックアップされます。
  • MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES は、拡張機能が追加できる動的ルールとセッション ルールの組み合わせの最大数です。

パラメータ

  • オプション
  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    ()=>void

戻り値

  • Promise<void>

    Chrome 91 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

updateStaticRules()

Promise Chrome 111 以降
chrome.declarativeNetRequest.updateStaticRules(
  options: UpdateStaticRulesOptions,
  callback?: function,
)

Ruleset 内の個々の静的ルールを無効または有効にします。無効になっているRulesetに属するルールの変更は、次回有効になったときに有効になります。

パラメータ

  • オプション
  • callback

    関数(省略可)

    callback パラメータは次のようになります。

    ()=>void

戻り値

  • Promise<void>

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

イベント

onRuleMatchedDebug

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

ルールがリクエストに一致すると呼び出されます。これはデバッグ専用で、"declarativeNetRequestFeedback" 権限を持つパッケージ化されていない拡張機能でのみ使用できます。

パラメータ