説明
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 つ以上のルールセットを指定します。ルールセットにはルールの配列が含まれます。単一のルールで、次のいずれかを行います。
- ネットワーク リクエストをブロックする。
- スキーマをアップグレードします(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 つのリクエストにルールを適用できる場合は、特定のリクエストに一致するすべての拡張機能の優先度が決定されます。
このように照合すると、特定の拡張機能が優先するルールは、他の拡張機能のルールよりも優先されます。
拡張機能内のルールの優先順位付け
単一の拡張機能内では、次のプロセスに従って優先順位付けが行われます。
- デベロッパーが定義した優先度が最も高いルール(つまり
"priority"
フィールド)が返されます。 デベロッパーが定義した優先度が最も高いルールが複数ある場合は、
"action"
フィールドを使用して、以下の順序でルールの優先度が決定されます。allow
allowAllRequests
block
upgradeScheme
redirect
アクション タイプが
block
でもredirect
でもない場合、一致するすべてのmodifyHeaders
ルールが評価されます。デベロッパーが定義した優先度がallow
とallowAllRequests
に指定された優先度よりも低いルールがある場合、そのようなルールは無視されます。複数のルールで同じヘッダーが変更される場合、変更は、デベロッパーが定義した
"priority"
フィールドと指定されたオペレーションによって決まります。- ルールがヘッダーに追加された場合、より優先度の低いルールはそのヘッダーにのみ追加できます。設定オペレーションと削除オペレーションは使用できません。
- ルールでヘッダーが設定されている場合、優先度の低いルールはそのヘッダーにのみ追加できます。その他の変更は許可されません。
- ルールでヘッダーが削除された場合、より優先度の低いルールでヘッダーを変更することはできません。
拡張機能間のルールの優先順位付け
リクエストに一致するルールが 1 つの拡張機能のみにある場合、そのルールが適用されます。ただし、複数の拡張機能がリクエストに一致する場合は、次のプロセスが使用されます。
ルールは、
"action"
フィールドを使用して次の順序で優先順位が付けられます。block
redirect
またはupgradeScheme
allow
またはallowAllRequests
複数のルールが一致する場合は、最近インストールされた拡張機能が優先されます。
ルールの制限事項
ブラウザでルールを読み込んで評価するとパフォーマンス上のオーバーヘッドが発生するため、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 に設定されています。安全なルールは、block
、allow
、allowAllRequests
、upgradeScheme
のアクションを持つルールとして定義されます。上限の 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.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 が一致するルールのみが含まれます。
HeaderOperation
ここでは、「modifyHeaders」ルールで実行できるオペレーションについて説明します。
列挙型
"append"
指定されたヘッダーに新しいエントリを追加します。この操作は、リクエスト ヘッダーではサポートされていません。
"set"
指定されたヘッダーに新しい値を設定し、同じ名前の既存のヘッダーをすべて削除します。
"remove"
指定されたヘッダーのエントリをすべて削除します。
IsRegexSupportedResult
プロパティ
-
isSupported
boolean
-
reason
正規表現がサポートされていない理由を指定します。
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
文字列
変更するヘッダーの名前。
-
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
プロパティ
-
isCaseSensitive
ブール値(省略可)
指定された
regex
で大文字と小文字が区別されるかどうか。デフォルトは true です。 -
regex
文字列
確認する標準 expresson。
-
requireCapturing
ブール値(省略可)
指定された
regex
にキャプチャが必要かどうかを指定します。キャプチャは、regexSubstition
アクションを指定するリダイレクト ルールの場合にのみ必要です。デフォルト値は false です。
RequestDetails
プロパティ
-
documentId
string(省略可)
Chrome 106 以降フレームのドキュメントに対する一意の識別子(フレームに対するリクエストの場合)。
-
documentLifecycleChrome 106 以降
フレームのドキュメントのライフサイクル(このリクエストがフレームに対する場合)。
-
frameId
数値
0 はリクエストがメインフレームで発生したことを示し、正の値はリクエストが発生したサブフレームの ID を示します。(サブ)フレームのドキュメントが読み込まれている場合(
type
がmain_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 に設定します。
-
type
リクエストのリソースタイプ。
-
URL
文字列
リクエストの URL。
RequestMethod
ネットワーク リクエストの 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」の場合にのみ有効です。
-
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」を除くすべてのリソースタイプがブロックされます。 -
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
プロパティ
-
インクリメント
数値
タブのアクション カウントをインクリメントする量。負の値を指定すると、カウントが減少します。
-
tabId
数値
アクション数を更新するタブ。
TestMatchOutcomeResult
プロパティ
-
matchedRules
仮定のリクエストに一致するルール(存在する場合)。
TestMatchRequestDetails
プロパティ
-
開始元
string(省略可)
仮のリクエストの開始側 URL(ある場合)。
-
method
RequestMethod 省略可
仮のリクエストの標準 HTTP メソッド。HTTP リクエストのデフォルトは「get」で、HTTP 以外のリクエストは無視されます。
-
tabId
number(省略可)
仮のリクエストが行われるタブの ID。実際のタブ ID に対応する必要はありません。デフォルトは -1 で、リクエストはタブに関連しないことを意味します。
-
type
仮のリクエストのリソースタイプ。
-
URL
文字列
架空のリクエストの URL。
UnsupportedRegexReason
特定の正規表現がサポートされていない理由を示します。
列挙型
UpdateRuleOptions
プロパティ
-
addRules
ルール [] (省略可)
追加するルール。
-
removeRuleIds
number[] 省略可
削除するルールの ID。無効な ID は無視されます。
UpdateRulesetOptions
プロパティ
UpdateStaticRulesOptions
プロパティ
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
有効な静的ルールセット全体で拡張機能に保証される静的ルールの最小数。この上限を超えるルールは、グローバル静的ルールの上限にカウントされます。
値
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
拡張機能で一度に有効にできる静的 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。
値
Methods
getAvailableStaticRuleCount()
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
callback?: function,
)
グローバルな静的ルールの上限に達するまでに拡張機能が有効にできる静的ルールの数を返します。
パラメータ
-
callback
関数(省略可)
callback
パラメータは次のようになります。(count: number)=>void
-
count
数値
-
戻り値
-
Promise<数値>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
getDisabledRuleIds()
chrome.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
callback?: function,
)
指定された Ruleset
で現在無効になっている静的ルールのリストを返します。
パラメータ
-
クエリ対象のルールセットを指定します。
-
callback
関数(省略可)
callback
パラメータは次のようになります。(disabledRuleIds: number[])=>void
-
disabledRuleIds
数値 []
-
戻り値
-
Promise<数値 []>
Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
getDynamicRules()
chrome.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
callback?: function,
)
広告表示オプションの現在のダイナミック ルールセットを返します。呼び出し元は、必要に応じて filter
を指定することで、フェッチされたルールのリストをフィルタリングできます。
パラメータ
-
フィルタ
GetRulesFilter 省略可
Chrome 111 以降取得されたルールのリストをフィルタするオブジェクト。
-
callback
関数(省略可)
callback
パラメータは次のようになります。(rules: Rule[])=>void
-
ルール
ルール[]
-
戻り値
-
Chrome 91 以降
Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
getEnabledRulesets()
chrome.declarativeNetRequest.getEnabledRulesets(
callback?: function,
)
現在有効になっている静的ルールセットの ID を返します。
パラメータ
-
callback
関数(省略可)
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 分以上前に一致したルールは返されません。
パラメータ
-
フィルタ
一致したルールのリストをフィルタするオブジェクト。
-
callback
関数(省略可)
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
関数(省略可)
callback
パラメータは次のようになります。(rules: Rule[])=>void
-
ルール
ルール[]
-
戻り値
-
Chrome 91 以降
Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
isRegexSupported()
chrome.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
callback?: function,
)
指定された正規表現が regexFilter
ルール条件としてサポートされるかどうかを確認します。
パラメータ
-
regexOptions
確認する正規表現。
-
callback
関数(省略可)
callback
パラメータは次のようになります。(result: IsRegexSupportedResult)=>void
戻り値
-
Promise<IsRegexSupportedResult>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
setExtensionActionOptions()
chrome.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
callback?: function,
)
タブのアクション数を拡張機能アクションのバッジテキストとして表示するかどうかを設定し、そのアクション数を増やす方法を提供します。
パラメータ
-
オプション
-
callback
関数(省略可)
Chrome 89 以降callback
パラメータは次のようになります。()=>void
戻り値
-
Promise<void>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
testMatchOutcome()
chrome.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
callback?: function,
)
拡張機能の declarativeNetRequest ルールのいずれかが架空のリクエストと一致するかどうかを確認します。注: 拡張機能の開発中にのみ使用することを想定しているため、パッケージ化されていない拡張機能でのみ使用できます。
パラメータ
-
request
-
callback
関数(省略可)
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_AND_SESSION_RULES
は、拡張機能が追加できる動的ルールとセッション ルールの組み合わせの最大数です。
パラメータ
-
オプションChrome 87 以降
-
callback
関数(省略可)
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
関数(省略可)
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_DYNAMIC_AND_SESSION_RULES
は、拡張機能が追加できる動的ルールとセッション ルールの組み合わせの最大数です。
パラメータ
-
オプション
-
callback
関数(省略可)
callback
パラメータは次のようになります。()=>void
戻り値
-
Promise<void>
Chrome 91 以降Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。
updateStaticRules()
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"
権限を持つパッケージ化されていない拡張機能でのみ使用できます。
パラメータ
-
callback
機能
callback
パラメータは次のようになります。(info: MatchedRuleInfoDebug)=>void