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 つ以上のルールセットを指定します。ルールセットにはルールの配列が含まれています。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() を呼び出します。このメソッドは、有効または無効にするルールの ID の配列を含む UpdateStaticRulesOptions オブジェクトを受け取ります。ID は、Ruleset ディクショナリの "id" キーを使用して定義します。無効な静的ルールの上限は 5,000 です。

静的ルールセットを有効または無効にするには、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"]
  }
}

URL の照合

宣言型ネット リクエストでは、パターン マッチング構文または正規表現を使用して URL を照合できます。

URL フィルタの構文

ルールの "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://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" キーをご覧ください。これらの条件に適用される上限については、正規表現を使用するルールをご覧ください。

適切な URL 条件を記述する

ルールを作成する際は、ドメイン全体に常に一致するように注意してください。指定しないと、予期しない状況でルールが一致する可能性があります。たとえば、パターン マッチング構文を使用する場合:

  • google.comhttps://example.com/?param=google.com に誤って一致する
  • ||google.comhttps://google.company に誤って一致する
  • https://www.google.comhttps://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 条件を含むルールは、後で(レスポンス ヘッダーが利用可能になったときに)考慮されるため、含まれません。

次に、拡張機能ごとに、リクエストごとに最大 1 つの候補が選択されます。Chrome は、一致するすべてのルールを優先度順に並べ替えて、一致するルールを見つけます。優先度が同じルールは、アクション(allow または allowAllRequests > block > upgradeScheme > redirect)の順に並べられます。

候補が allow ルールまたは allowAllRequests ルールである場合、またはリクエストが送信されたフレームが、この拡張機能の優先度が同じかそれ以上の allowAllRequests ルールと一致していた場合、リクエストは「許可」され、拡張機能はリクエストに影響しません。

複数の拡張機能がこのリクエストをブロックまたはリダイレクトする場合は、実行するアクションが 1 つ選択されます。Chrome では、ルールを block > redirect または upgradeScheme > allow または allowAllRequests の順序で並べ替えます。2 つのルールのタイプが同じ場合は、Chrome は最後にインストールされた拡張機能のルールを選択します。

リクエスト ヘッダーが送信される前

Chrome がリクエスト ヘッダーをサーバーに送信する前に、一致する modifyHeaders ルールに基づいてヘッダーが更新されます。

1 つの拡張機能内で、Chrome は一致するすべての modifyHeaders ルールを見つけて、実行する変更のリストを作成します。前述と同様に、一致する allow ルールまたは allowAllRequests ルールよりも優先度の高いルールのみが含まれます。

これらのルールは、最近インストールされた拡張機能のルールが常に古い拡張機能のルールより先に評価されるように、Chrome によって順番に適用されます。また、1 つの拡張機能の優先度の高いルールは、同じ拡張機能の優先度の低いルールよりも常に先に適用されます。特に、拡張機能間で次の点に注意してください。

  • ルールがヘッダーに追加されている場合、優先度の低いルールは、そのヘッダーにのみ追加できます。設定オペレーションと削除オペレーションは許可されません。
  • ルールでヘッダーが設定されている場合、そのヘッダーに追加できるのは、同じ拡張機能の優先度の低いルールのみです。それ以外の変更は許可されません。
  • ルールでヘッダーが削除された場合、優先度の低いルールではヘッダーをさらに変更できません。

回答を受け取ったら

レスポンス ヘッダーを受信すると、Chrome は responseHeaders 条件を含むルールを評価します。

これらのルールを actionpriority で並べ替え、一致する allow ルールまたは allowAllRequests ルールによって冗長になったルールを除外した後(これは「リクエスト前」の手順と同じです)、Chrome は拡張機能に代わってリクエストをブロックまたはリダイレクトすることがあります。

リクエストがこの段階に達した場合、リクエストはすでにサーバーに送信されており、サーバーはリクエスト本文などのデータを受信しています。レスポンス ヘッダー条件を含むブロック ルールまたはリダイレクト ルールは引き続き実行されますが、実際にリクエストをブロックまたはリダイレクトすることはできません。

ブロックルールの場合、これは、リクエストを行ったページによって処理され、ブロックされたレスポンスが受信され、Chrome によってリクエストが早期に終了されます。リダイレクト ルールの場合、Chrome はリダイレクトされた URL に新しいリクエストを送信します。これらの動作が、拡張機能のプライバシーに関する期待に沿っているかどうかを検討してください。

リクエストがブロックまたはリダイレクトされていない場合、Chrome は modifyHeaders ルールを適用します。レスポンス ヘッダーへの変更の適用は、「リクエスト ヘッダーが送信される前」で説明されている方法と同じです。リクエストはすでに送信されているため、リクエスト ヘッダーに変更を適用しても何も起こりません。

安全なルール

安全なルールは、アクションが blockallowallowAllRequests、または upgradeScheme のルールとして定義されます。これらのルールには、動的ルールの割り当ての増加が適用されます。

ルールの制限事項

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

静的ルール

静的ルールは、マニフェスト ファイルで宣言されたルールファイルで指定されます。拡張機能では、"rule_resources" マニフェスト キーの一部として最大 100 個の静的ルールセットを指定できますが、一度に有効にできるのは 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 以降では、安全な動的ルールに使用できる上限が 30,000 ルールに引き上げられ、MAX_NUMBER_OF_DYNAMIC_RULES として公開されます。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 キャッシュからのレスポンスが含まれますが、サービス ワーカーの onfetch ハンドラを経由するレスポンスは含まれない場合があります。declarativeNetRequest は、サービス ワーカーによって生成されたレスポンスや CacheStorage から取得されたレスポンスには影響しませんが、サービス ワーカーで行われた fetch() の呼び出しには影響します。

ウェブでアクセス可能なリソース

declarativeNetRequest ルールでは、公開リソース リクエストからウェブからアクセスできないリソースにリダイレクトすることはできません。そうするとエラーが発生します。これは、指定されたウェブ アクセス可能なリソースがリダイレクト 拡張機能によって所有されている場合でも同様です。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 が拡張機能内のルールに優先度を付ける方法を示しています。確認する際は、優先順位付けルールを別のウィンドウで開くことをおすすめします。

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

HeaderInfo

Chrome 128 以降

プロパティ

  • excludedValues

    string[] 省略可

    指定した場合、ヘッダーが存在しても、その値にこのリストの要素が 1 つ以上含まれている場合、この条件は一致しません。values と同じマッチパターン構文を使用します。

  • header

    文字列

    ヘッダーの名前。この条件は、valuesexcludedValues の両方が指定されていない場合にのみ、名前に一致します。

  • values

    string[] 省略可

    指定した場合、この条件は、ヘッダーの値がこのリスト内の少なくとも 1 つのパターンと一致する場合に一致します。これにより、大文字と小文字を区別しないヘッダー値の一致と、次の構文がサポートされます。

    「*」 : 任意の数の文字に一致します。

    「?」 : 0 個以上の文字に一致します。

    「*」と「?」はバックスラッシュでエスケープできます(例: 「*」と「\?」)。

HeaderOperation

Chrome 86 以降

ここでは、「modifyHeaders」ルールで可能なオペレーションについて説明します。

列挙型

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

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

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

IsRegexSupportedResult

Chrome 87 以降

プロパティ

  • isSupported

    ブール値

  • reason

    UnsupportedRegexReason(サポートされていない正規表現の理由)省略可

    正規表現がサポートされていない理由を指定します。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

    文字列

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

  • オペレーション

    ヘッダーに対して実行するオペレーション。

  • 文字列(省略可)

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

QueryKeyValue

プロパティ

  • key

    文字列

  • replaceOnly

    ブール値(省略可)

    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

Chrome 87 以降

プロパティ

  • isCaseSensitive

    ブール値(省略可)

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

  • regex

    文字列

    チェックする正規表現。

  • requireCapturing

    ブール値(省略可)

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

RequestDetails

プロパティ

  • documentId

    文字列(省略可)

    Chrome 106 以降

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

  • documentLifecycle

    DocumentLifecycle(省略可)

    Chrome 106 以降

    フレームに関するリクエストの場合は、フレームのドキュメントのライフサイクル。

  • frameId

    数値

    値 0 は、リクエストがメインフレームで発生したことを示します。正の値は、リクエストが発生したサブフレームの ID を示します。(サブ)フレームのドキュメントが読み込まれている場合(typemain_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 に設定します。

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

  • URL

    文字列

    リクエストの URL。

RequestMethod

Chrome 91 以降

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

列挙型

「接続」アイコン

[削除]

「取得」アイコン

"head"

"options"

「patch」

「post」

「put」

「その他」

ResourceType

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

列挙型

「main_frame」

「sub_frame」

"stylesheet"

"script"

「image」

「font」

"object"

"xmlhttprequest"

「ping」

"csp_report"

"media"

"websocket"

「webtransport」

「webbundle」

「その他」

Rule

プロパティ

  • アクション

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

  • 条件

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

  • 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 以降

    ルールが一致しないリクエスト メソッドのリスト。requestMethodsexcludedRequestMethods のどちらか 1 つのみを指定します。どちらも指定されていない場合は、すべてのリクエスト メソッドが照合されます。

  • excludedResourceTypes

    ResourceType[] 省略可

    ルールが一致しないリソースタイプのリスト。resourceTypesexcludedResourceTypes のどちらか 1 つのみを指定します。どちらも指定されていない場合、「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 エンコードを使用します。
    • これは、リクエスト URL ではなく、リクエストのイニシエータと照合されます。
    • リストに表示されたドメインのサブドメインも一致します。
  • isUrlFilterCaseSensitive

    ブール値(省略可)

    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 のリスト。ID が tabs.TAB_ID_NONE のリクエストは、タブから発生したものではありません。空のリストは使用できません。セッション スコープのルールでのみサポートされます。

  • 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 と照合されます。

Ruleset

プロパティ

  • 有効

    ブール値

    ルールセットをデフォルトで有効にするかどうか。

  • id

    文字列

    ルールセットを一意に識別する空でない文字列。「_」で始まる ID は内部使用専用です。

  • パス

    文字列

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

RulesMatchedDetails

プロパティ

  • rulesMatchedInfo

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

TabActionCountUpdate

Chrome 89 以降

プロパティ

  • インクリメント

    数値

    タブのアクション数を増やす量。負の値を指定すると、カウントが減ります。

  • tabId

    数値

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

TestMatchOutcomeResult

Chrome 103 以降

プロパティ

  • matchedRules

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

TestMatchRequestDetails

Chrome 103 以降

プロパティ

  • イニシエータ

    文字列(省略可)

    仮想リクエストのイニシエーター 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 で、リクエストがタブに関連していないことを意味します。

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

  • 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

    文字列(省略可)

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

  • ホスト

    文字列(省略可)

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

  • パスワード

    文字列(省略可)

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

  • パス

    文字列(省略可)

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

  • ポート

    文字列(省略可)

    リクエストの新しいポート。空白にすると、既存のポートが消去されます。

  • クエリ

    文字列(省略可)

    リクエストの新しいクエリ。空にするか(既存のクエリが消去されます)、または「?」で始めます。

  • 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

Chrome 89 以降

有効な静的ルールセット全体で拡張機能に保証される静的ルールの最小数。この上限を超えるルールは、グローバル静的ルールの上限にカウントされます。

30000

MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL

GETMATCHEDRULES_QUOTA_INTERVAL の期間内に getMatchedRules を呼び出せる回数。

20

MAX_NUMBER_OF_DYNAMIC_RULES

拡張機能で追加できる動的ルールの最大数。

30000

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。

「_session」

メソッド

getAvailableStaticRuleCount()

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

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

パラメータ

  • callback

    function 省略可

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

    (count: number) => void

    • count

      数値

戻り値

  • Promise<number>

    Chrome 91 以降

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

getDisabledRuleIds()

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

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

パラメータ

  • オプション

    クエリするルールセットを指定します。

  • callback

    function 省略可

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

    (disabledRuleIds: number[]) => void

    • disabledRuleIds

      number[]

戻り値

  • Promise<number[]>

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

getDynamicRules()

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

拡張機能の現在の動的ルールセットを返します。呼び出し元は、必要に応じて filter を指定して、取得したルールのリストをフィルタできます。

パラメータ

  • フィルタ

    GetRulesFilter(省略可)

    Chrome 111 以降

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

  • callback

    function 省略可

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

    (rules: Rule[]) => void

戻り値

  • Promise<Rule[]>

    Chrome 91 以降

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

getEnabledRulesets()

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

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

パラメータ

  • callback

    function 省略可

    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 分以上前に一致したものは返されません。

パラメータ

  • フィルタ

    MatchedRulesFilter(省略可)

    一致したルールのリストをフィルタするオブジェクト。

  • callback

    function 省略可

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

    (details: RulesMatchedDetails) => void

戻り値

  • Chrome 91 以降

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

getSessionRules()

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

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

パラメータ

  • フィルタ

    GetRulesFilter(省略可)

    Chrome 111 以降

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

  • callback

    function 省略可

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

    (rules: Rule[]) => void

戻り値

  • Promise<Rule[]>

    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

    function 省略可

    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_RULES は、拡張機能で追加できる動的ルールの最大数です。安全でないルールの数は MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES 以下にする必要があります。

パラメータ

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

    function 省略可

    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

    function 省略可

    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_SESSION_RULES は、拡張機能で追加できるセッション ルールの最大数です。

パラメータ

  • オプション
  • callback

    function 省略可

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

    () => void

戻り値

  • Promise<void>

    Chrome 91 以降

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

updateStaticRules()

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

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

パラメータ

  • オプション
  • callback

    function 省略可

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

    () => void

戻り値

  • Promise<void>

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

イベント

onRuleMatchedDebug

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

ルールがリクエストと一致すると呼び出されます。デバッグ目的でのみ使用されるため、"declarativeNetRequestFeedback" 権限を持つ展開済みの拡張機能でのみ使用できます。

パラメータ