説明
chrome.declarativeNetRequest
API は、宣言型ルールを指定してネットワーク リクエストをブロックまたは変更するために使用されます。これにより、拡張機能はネットワーク リクエストをインターセプトしてコンテンツを表示することなく、リクエストを変更できるため、プライバシーが保護されます。
権限
declarativeNetRequest
declarativeNetRequestWithHostAccess
「declarativeNetRequest
」権限と「declarativeNetRequestWithHostAccess
」権限は同じ機能を提供します。違いは、権限がリクエストまたは付与されるタイミングです。
"declarativeNetRequest"
- はインストール時に権限に関する警告をトリガーしますが、
allow
、allowAllRequests
、block
の各ルールへの暗黙的なアクセスを許可します。可能であれば、ホストへの完全アクセス権をリクエストする必要がないように、この方法を使用します。 "declarativeNetRequestFeedback"
- 展開済みの拡張機能(特に
getMatchedRules()
とonRuleMatchedDebug
)のデバッグ機能を有効にします。 "declarativeNetRequestWithHostAccess"
- インストール時に権限に関する警告は表示されませんが、ホストに対して操作を行うには、ホスト権限をリクエストする必要があります。これは、追加の警告を生成せずに、すでにホスト権限を持つ拡張機能で宣言型ネット リクエスト ルールを使用する場合に適しています。
対象
マニフェスト
前述の権限に加えて、特定のタイプのルールセット(特に静的ルールセット)では、"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.com
がhttps://example.com/?param=google.com
に誤って一致する||google.com
がhttps://google.company
に誤って一致するhttps://www.google.com
がhttps://example.com/?param=https://www.google.com
に誤って一致する
以下を使用することを検討してください。
||google.com/
: すべてのパスとすべてのサブドメインに一致します。|https://www.google.com/
: すべてのパスに一致し、サブドメインには一致しません。
同様に、^
文字と /
文字を使用して正規表現をアンカーします。たとえば、^https:\/\/www\.google\.com\/
は https://www.google.com の任意のパスと一致します。
ルールの評価
DNR ルールは、ネットワーク リクエストのライフサイクルのさまざまな段階でブラウザによって適用されます。
リクエスト前
リクエストが送信される前に、拡張機能は一致するルールを使用してリクエストをブロックまたはリダイレクトできます(スキームを HTTP から HTTPS にアップグレードすることもできます)。
ブラウザは、拡張機能ごとに一致するルールのリストを決定します。modifyHeaders
アクションを含むルールは、後で処理されるため、ここには含まれません。また、responseHeaders
条件を含むルールは、後で(レスポンス ヘッダーが利用可能になったときに)考慮されるため、含まれません。
次に、拡張機能ごとに、リクエストごとに最大 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
条件を含むルールを評価します。
これらのルールを action
と priority
で並べ替え、一致する allow
ルールまたは allowAllRequests
ルールによって冗長になったルールを除外した後(これは「リクエスト前」の手順と同じです)、Chrome は拡張機能に代わってリクエストをブロックまたはリダイレクトすることがあります。
リクエストがこの段階に達した場合、リクエストはすでにサーバーに送信されており、サーバーはリクエスト本文などのデータを受信しています。レスポンス ヘッダー条件を含むブロック ルールまたはリダイレクト ルールは引き続き実行されますが、実際にリクエストをブロックまたはリダイレクトすることはできません。
ブロックルールの場合、これは、リクエストを行ったページによって処理され、ブロックされたレスポンスが受信され、Chrome によってリクエストが早期に終了されます。リダイレクト ルールの場合、Chrome はリダイレクトされた URL に新しいリクエストを送信します。これらの動作が、拡張機能のプライバシーに関する期待に沿っているかどうかを検討してください。
リクエストがブロックまたはリダイレクトされていない場合、Chrome は modifyHeaders
ルールを適用します。レスポンス ヘッダーへの変更の適用は、「リクエスト ヘッダーが送信される前」で説明されている方法と同じです。リクエストはすでに送信されているため、リクエスト ヘッダーに変更を適用しても何も起こりません。
安全なルール
安全なルールは、アクションが block
、allow
、allowAllRequests
、または 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"
配列を使用します。
ヘッダーの変更
追加オペレーションは、accept
、accept-encoding
、accept-language
、access-control-request-headers
、cache-control
、connection
、content-language
、cookie
、forwarded
、if-match
、if-none-match
、keep-alive
、range
、te
、trailer
、transfer-encoding
、upgrade
、user-agent
、via
、want-digest
、x-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.jpg
は chrome-extension://EXTENSION_ID/a.jpg
に解決されます。ここで、EXTENSION_ID
は拡張機能の ID です。これを機能させるには、マニフェストで /a.jpg
をウェブにアクセス可能なリソースとして宣言する必要があります。
{
"id": 1,
"priority": 1,
"action": { "type": "redirect", "redirect": { "extensionPath": "/a.jpg" } },
"condition": {
"urlFilter": "||https://www.example.com/",
"resourceTypes": ["main_frame"]
}
}
次の例では、"transform"
キーを使用して example.com のサブドメインにリダイレクトします。ドメイン名アンカー(「||」)を使用して、example.com からの任意のスキーマのリクエストをインターセプトします。"transform"
の "scheme"
キーは、サブドメインへのリダイレクトで常に「https」を使用することを指定します。
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"transform": { "scheme": "https", "host": "new.example.com" }
}
},
"condition": {
"urlFilter": "||example.com/",
"resourceTypes": ["main_frame"]
}
}
次の例では、正規表現を使用して https://www.abc.xyz.com/path
から https://abc.xyz.com/path
にリダイレクトします。"regexFilter"
キーで、ピリオドがエスケープされ、キャプチャ グループが「abc」または「def」のいずれかを選択していることを確認します。"regexSubstitution"
キーは、\1 を使用して正規表現の最初の一致を返します。この場合、「abc」はリダイレクトされた 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
プロパティ
-
displayActionCountAsBadgeText
ブール値(省略可)
ページのアクション数を広告表示オプションのバッチテキストとして自動的に表示するかどうか。この設定はセッション間で保持されます。
-
tabUpdateChrome 89 以降
タブのアクション数を調整する方法の詳細。
GetDisabledRuleIdsOptions
プロパティ
-
rulesetId
文字列
静的
Ruleset
に対応する ID。
GetRulesFilter
プロパティ
-
ruleIds
number[] 省略可
指定すると、ID が一致するルールのみが含まれます。
HeaderInfo
プロパティ
-
excludedValues
string[] 省略可
指定した場合、ヘッダーが存在しても、その値にこのリストの要素が 1 つ以上含まれている場合、この条件は一致しません。
values
と同じマッチパターン構文を使用します。 -
header
文字列
ヘッダーの名前。この条件は、
values
とexcludedValues
の両方が指定されていない場合にのみ、名前に一致します。 -
values
string[] 省略可
指定した場合、この条件は、ヘッダーの値がこのリスト内の少なくとも 1 つのパターンと一致する場合に一致します。これにより、大文字と小文字を区別しないヘッダー値の一致と、次の構文がサポートされます。
「*」 : 任意の数の文字に一致します。
「?」 : 0 個以上の文字に一致します。
「*」と「?」はバックスラッシュでエスケープできます(例: 「*」と「\?」)。
HeaderOperation
ここでは、「modifyHeaders」ルールで可能なオペレーションについて説明します。
列挙型
「append」
指定されたヘッダーに新しいエントリを追加します。この操作はリクエスト ヘッダーではサポートされていません。
「set」
指定されたヘッダーに新しい値を設定し、同じ名前の既存のヘッダーを削除します。
「remove」
: 指定されたヘッダーのすべてのエントリを削除します。
IsRegexSupportedResult
プロパティ
-
isSupported
ブール値
-
reason
UnsupportedRegexReason(サポートされていない正規表現の理由)省略可
正規表現がサポートされていない理由を指定します。
isSupported
が false の場合にのみ指定します。
MatchedRule
プロパティ
-
ruleId
数値
一致するルールの ID。
-
rulesetId
文字列
このルールが属する
Ruleset
の ID。ダイナミック ルールセットから生成されたルールの場合、これはDYNAMIC_RULESET_ID
になります。
MatchedRuleInfo
プロパティ
-
ルール
-
tabId
数値
リクエストの送信元のタブの tabId(タブがまだアクティブな場合)。それ以外の場合は -1 です。
-
timeStamp
数値
ルールが一致した日時。タイムスタンプは、JavaScript の時間の規則(エポックからのミリ秒数)に対応しています。
MatchedRuleInfoDebug
プロパティ
-
request
ルールが一致したリクエストの詳細。
-
ルール
MatchedRulesFilter
プロパティ
-
minTimeStamp
number(省略可)
指定すると、指定したタイムスタンプより後のルールのみが一致します。
-
tabId
number(省略可)
指定すると、指定したタブのルールのみが一致します。-1 に設定した場合は、アクティブなタブに関連付けられていないルールに一致します。
ModifyHeaderInfo
プロパティ
-
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
プロパティ
-
isCaseSensitive
ブール値(省略可)
指定した
regex
で大文字と小文字を区別するかどうか。デフォルトは true です。 -
regex
文字列
チェックする正規表現。
-
requireCapturing
ブール値(省略可)
指定された
regex
にキャプチャが必要かどうか。キャプチャは、regexSubstition
アクションを指定するリダイレクト ルールでのみ必要です。デフォルトは false です。
RequestDetails
プロパティ
-
documentId
文字列(省略可)
Chrome 106 以降このリクエストがフレームに関するものである場合、フレームのドキュメントの一意の識別子。
-
documentLifecycle
DocumentLifecycle(省略可)
Chrome 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 リクエスト メソッドを記述します。
列挙型
「接続」アイコン
[削除]
「取得」アイコン
"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」の場合にのみ有効です。
-
type
実行するアクションのタイプ。
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」を除くすべてのリソースタイプがブロックされます。 -
excludedResponseHeaders
HeaderInfo[] 省略可
Chrome 128 以降リクエストがこのリスト内のレスポンス ヘッダー条件(指定されている場合)と一致する場合、ルールは一致しません。
excludedResponseHeaders
とresponseHeaders
の両方が指定されている場合、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
プロパティ
-
インクリメント
数値
タブのアクション数を増やす量。負の値を指定すると、カウントが減ります。
-
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 で、リクエストがタブに関連していないことを意味します。
-
type
仮想リクエストのリソースタイプ。
-
URL
文字列
仮想リクエストの URL。
UnsupportedRegexReason
特定の正規表現がサポートされていない理由を説明します。
列挙型
UpdateRuleOptions
プロパティ
-
addRules
ルール[] 省略可
追加するルール。
-
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
拡張機能で追加できる正規表現ルールの最大数。この上限は、動的ルールのセトとルールリソース ファイルで指定されたルールで別々に評価されます。
値
1,000
MAX_NUMBER_OF_SESSION_RULES
拡張機能が追加できるセッション スコープのルールの最大数。
値
5,000
MAX_NUMBER_OF_STATIC_RULESETS
拡張機能が "rule_resources"
マニフェスト キーの一部として指定できる静的 Rulesets
の最大数。
値
100
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
拡張機能が追加できる「安全でない」動的ルールの最大数。
値
5,000
MAX_NUMBER_OF_UNSAFE_SESSION_RULES
拡張機能が追加できる「安全でない」セッション スコープのルールの最大数。
値
5,000
SESSION_RULESET_ID
拡張機能によって追加されたセッション スコープのルールのルールセット ID。
値
「_session」
メソッド
getAvailableStaticRuleCount()
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
callback?: function,
)
グローバル静的ルールの上限に達する前に拡張機能で有効にできる静的ルールの数を返します。
パラメータ
-
callback
function 省略可
callback
パラメータは次のようになります。(count: number) => void
-
count
数値
-
戻り値
-
Promise<number>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。
getDisabledRuleIds()
chrome.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
callback?: function,
)
指定された Ruleset
内の、現在無効になっている静的ルールのリストを返します。
パラメータ
-
クエリするルールセットを指定します。
-
callback
function 省略可
callback
パラメータは次のようになります。(disabledRuleIds: number[]) => void
-
disabledRuleIds
number[]
-
戻り値
-
Promise<number[]>
Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。
getDynamicRules()
chrome.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
callback?: function,
)
拡張機能の現在の動的ルールセットを返します。呼び出し元は、必要に応じて filter
を指定して、取得したルールのリストをフィルタできます。
パラメータ
-
フィルタ
GetRulesFilter(省略可)
Chrome 111 以降取得したルールのリストをフィルタするオブジェクト。
-
callback
function 省略可
callback
パラメータは次のようになります。(rules: Rule[]) => void
-
ルール
Rule[]
-
戻り値
-
Promise<Rule[]>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。
getEnabledRulesets()
chrome.declarativeNetRequest.getEnabledRulesets(
callback?: function,
)
有効になっている静的ルールセットの現在の ID を返します。
パラメータ
-
callback
function 省略可
callback
パラメータは次のようになります。(rulesetIds: string[]) => void
-
rulesetIds
string[]
-
戻り値
-
Promise<string[]>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。
getMatchedRules()
chrome.declarativeNetRequest.getMatchedRules(
filter?: MatchedRulesFilter,
callback?: function,
)
拡張子に一致するすべてのルールを返します。呼び出し元は、必要に応じて filter
を指定して、一致したルールのリストをフィルタできます。このメソッドは、"declarativeNetRequestFeedback"
権限を持つ拡張機能、または filter
で指定された tabId
に対して "activeTab"
権限が付与されている拡張機能でのみ使用できます。注: アクティブなドキュメントに関連付けられていないルールで、5 分以上前に一致したものは返されません。
パラメータ
-
フィルタ
MatchedRulesFilter(省略可)
一致したルールのリストをフィルタするオブジェクト。
-
callback
function 省略可
callback
パラメータは次のようになります。(details: RulesMatchedDetails) => void
戻り値
-
Promise<RulesMatchedDetails>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。
getSessionRules()
chrome.declarativeNetRequest.getSessionRules(
filter?: GetRulesFilter,
callback?: function,
)
拡張機能の現在のセッション スコープのルールセットを返します。呼び出し元は、必要に応じて filter
を指定して、取得したルールのリストをフィルタできます。
パラメータ
-
フィルタ
GetRulesFilter(省略可)
Chrome 111 以降取得したルールのリストをフィルタするオブジェクト。
-
callback
function 省略可
callback
パラメータは次のようになります。(rules: Rule[]) => void
-
ルール
Rule[]
-
戻り値
-
Promise<Rule[]>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。
isRegexSupported()
chrome.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
callback?: function,
)
指定された正規表現が regexFilter
ルール条件としてサポートされるかどうかを確認します。
パラメータ
-
regexOptions
確認する正規表現。
-
callback
function 省略可
callback
パラメータは次のようになります。(result: IsRegexSupportedResult) => void
戻り値
-
Promise<IsRegexSupportedResult>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。
setExtensionActionOptions()
chrome.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
callback?: function,
)
タブのアクション数を拡張機能アクションのバッチテキストとして表示するかどうかを設定します。また、そのアクション数をインクリメントする方法も指定します。
パラメータ
-
オプション
-
callback
function 省略可
Chrome 89 以降callback
パラメータは次のようになります。() => void
戻り値
-
Promise<void>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。
testMatchOutcome()
chrome.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
callback?: function,
)
拡張機能の declarativeNetRequest ルールのいずれかが仮想リクエストと一致するかどうかを確認します。注: これは拡張機能の開発時にのみ使用することを目的としているため、展開済みの拡張機能でのみ使用できます。
パラメータ
-
request
-
callback
function 省略可
callback
パラメータは次のようになります。(result: TestMatchOutcomeResult) => void
戻り値
-
Promise<TestMatchOutcomeResult>
Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されるのと同じ型で解決されます。
updateDynamicRules()
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()
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()
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()
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"
権限を持つ展開済みの拡張機能でのみ使用できます。
パラメータ
-
callback
関数
callback
パラメータは次のようになります。(info: MatchedRuleInfoDebug) => void