Описание
API chrome.declarativeNetRequest
используется для блокировки или изменения сетевых запросов путем указания декларативных правил. Это позволяет расширениям изменять сетевые запросы, не перехватывая их и не просматривая их содержимое, обеспечивая тем самым большую конфиденциальность.
Разрешения
declarativeNetRequest
declarativeNetRequestWithHostAccess
Разрешения « declarativeNetRequest
» и « declarativeNetRequestWithHostAccess
» предоставляют одинаковые возможности. Разница между ними заключается в том, когда разрешения запрашиваются или предоставляются.
-
"declarativeNetRequest"
- Вызывает предупреждение о разрешении во время установки, но обеспечивает неявный доступ к
allow
,allowAllRequests
и правиламblock
. Используйте это, когда это возможно, чтобы избежать необходимости запрашивать полный доступ к хостам. -
"declarativeNetRequestFeedback"
- Включает функции отладки для распакованных расширений , в частности
getMatchedRules()
иonRuleMatchedDebug
. -
"declarativeNetRequestWithHostAccess"
- Предупреждение о разрешении не отображается во время установки, но вы должны запросить разрешения хоста, прежде чем сможете выполнять какие-либо действия на хосте. Это подходит, если вы хотите использовать декларативные правила сетевых запросов в расширении, которое уже имеет разрешения хоста, без создания дополнительных предупреждений.
Доступность
Манифест
В дополнение к разрешениям, описанным ранее, некоторые типы наборов правил, в частности статические наборы правил, требуют объявления ключа манифеста "declarative_net_request"
, который должен представлять собой словарь с единственным ключом под названием "rule_resources"
. Этот ключ представляет собой массив, содержащий словари типа 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, укажите один или несколько наборов правил. Набор правил содержит массив правил. Одно правило выполняет одно из следующих действий:
- Заблокируйте сетевой запрос.
- Обновите схему (с http на https).
- Предотвратите блокировку запроса, отменив все соответствующие заблокированные правила.
- Перенаправить сетевой запрос.
- Измените заголовки запроса или ответа.
Существует три типа наборов правил, управление которыми осуществляется немного по-разному.
- Динамический
- Сохраняются во всех сеансах браузера и обновлениях расширений и управляются с помощью JavaScript, пока расширение используется.
- Сессия
- Очищается при закрытии браузера и установке новой версии расширения. Правила сеанса управляются с помощью JavaScript, пока используется расширение.
- Статический
- Упаковывается, устанавливается и обновляется при установке или обновлении расширения. Статические правила хранятся в файлах правил в формате JSON и перечислены в файле манифеста.
Динамические и сеансовые наборы правил
Динамические и сеансовые наборы правил управляются с помощью JavaScript, пока используется расширение.
- Динамические правила сохраняются во всех сеансах браузера и обновлениях расширений.
- Правила сеанса очищаются при закрытии браузера и установке новой версии расширения.
Каждый из этих типов наборов правил существует только по одному. Расширение может добавлять или удалять правила динамически, вызывая updateDynamicRules()
и updateSessionRules()
, при условии, что ограничения правил не превышены. Информацию об ограничениях правил см. в разделе Ограничения правил . Пример этого вы можете увидеть в разделе «Примеры кода» .
Статические наборы правил
В отличие от динамических правил и правил сеанса, статические правила упаковываются, устанавливаются и обновляются при установке или обновлении расширения. Они хранятся в файлах правил в формате JSON, которые указываются расширению с помощью ключей "declarative_net_request"
и "rule_resources"
, как описано выше , а также в одном или нескольких словарях Ruleset
. Словарь Ruleset
содержит путь к файлу правил, идентификатор набора правил, содержащегося в файле, а также сведения о том, включен или отключен этот набор правил. Последние два важны при программном включении или отключении набора правил.
{
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
},
...
]
}
...
}
Чтобы протестировать файлы правил, загрузите распакованное расширение . Ошибки и предупреждения о недопустимых статических правилах отображаются только для распакованных расширений. Недопустимые статические правила в упакованных расширениях игнорируются.
Ускоренная проверка
Изменения в статических наборах правил могут подлежать ускоренному рассмотрению. См. ускоренную проверку допустимых изменений .
Включение и отключение статических правил и наборов правил
Как отдельные статические правила, так и полные статические наборы правил могут быть включены или отключены во время выполнения.
Набор включенных статических правил и наборов правил сохраняется во всех сеансах браузера. Ни один из них не сохраняется при обновлении расширений, а это означает, что после обновления доступны только те правила, которые вы решили оставить в своих файлах правил.
По соображениям производительности также существуют ограничения на количество правил и наборов правил, которые можно включить одновременно. Вызовите getAvailableStaticRuleCount()
чтобы проверить количество дополнительных правил, которые можно включить. Информацию об ограничениях правил см. в разделе Ограничения правил .
Чтобы включить или отключить статические правила , вызовите updateStaticRules()
. Этот метод принимает объект UpdateStaticRulesOptions
, который содержит массивы идентификаторов правил для включения или отключения. Идентификаторы определяются с использованием ключа "id"
словаря Ruleset
. Максимальный лимит отключенных статических правил — 5000.
Чтобы включить или отключить статические наборы правил , вызовите updateEnabledRulesets()
. Этот метод принимает объект UpdateRulesetOptions
, который содержит массивы идентификаторов наборов правил для включения или отключения. Идентификаторы определяются с использованием ключа "id"
словаря Ruleset
.
Правила сборки
Независимо от типа правило начинается с четырех полей, как показано ниже. Хотя ключи "id"
и "priority"
принимают числа, клавиши "action"
и "condition"
могут обеспечивать несколько условий блокировки и перенаправления. Следующее правило блокирует все запросы сценариев, исходящие от "foo.com"
к любому URL-адресу с "abc"
в качестве подстроки.
{
"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://baexample.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 |
Оценка правил
Правила DNR применяются браузером на различных этапах жизненного цикла сетевого запроса.
До запроса
Прежде чем запрос будет сделан, расширение может заблокировать или перенаправить его (включая обновление схемы с HTTP на HTTPS) с помощью соответствующего правила.
Для каждого расширения браузер определяет список правил соответствия. Правила с modifyHeaders
сюда не включены, поскольку они будут обработаны позже. Кроме того, правила с условием responseHeaders
будут рассмотрены позже (когда будут доступны заголовки ответов) и не включены.
Затем для каждого расширения Chrome выбирает не более одного кандидата на каждый запрос. Chrome находит подходящее правило, упорядочивая все соответствующие правила по приоритету. Правила с одинаковым приоритетом упорядочены по действию ( allow
allowAllRequests
> block
> upgradeScheme
> redirect
).
Если кандидатом является allow
allowAllRequests
, или кадр, в котором выполняется запрос, ранее соответствовал allowAllRequests
с более высоким или равным приоритетом из этого расширения, запрос считается «разрешенным», и расширение не окажет никакого влияния на запрос.
Если более одного расширения хотят заблокировать или перенаправить этот запрос, выбирается одно действие. Chrome делает это, сортируя правила в block
порядка > redirect
upgradeScheme
> allow
allowAllRequests
. Если два правила относятся к одному типу, Chrome выбирает правило из последнего установленного расширения.
Перед отправкой заголовков запросов
Прежде чем Chrome отправит заголовки запроса на сервер, заголовки обновляются на основе соответствующих правил modifyHeaders
.
В рамках одного расширения Chrome создает список изменений, которые необходимо выполнить, находя все соответствующие правила modifyHeaders
. Как и раньше, включаются только те правила, которые имеют более высокий приоритет, чем любые соответствующие allow
allowAllRequests
.
Эти правила применяются Chrome в таком порядке, что правила из недавно установленного расширения всегда оцениваются перед правилами из более старого расширения. Кроме того, правила с более высоким приоритетом из одного расширения всегда применяются раньше правил с более низким приоритетом из того же расширения. Примечательно, что даже среди расширений:
- Если правило добавляется к заголовку, то правила с более низким приоритетом могут добавляться только к этому заголовку. Операции установки и удаления не допускаются.
- Если правило устанавливает заголовок, то к этому заголовку могут добавляться только правила с более низким приоритетом из того же расширения. Никакие другие модификации не допускаются.
- Если правило удаляет заголовок, то правила с более низким приоритетом не смогут в дальнейшем изменять заголовок.
Как только будет получен ответ
После получения заголовков ответа Chrome оценивает правила с условием responseHeaders
.
После сортировки этих правил по action
и priority
и исключения всех правил, ставших избыточными из-за соответствующего правила allow
или allowAllRequests
(это происходит идентично шагам, описанным в разделе «Перед запросом»), Chrome может заблокировать или перенаправить запрос от имени расширения.
Обратите внимание: если запрос дошел до этого этапа, он уже отправлен на сервер, и сервер получил данные, такие как тело запроса. Правило блокировки или перенаправления с условием заголовков ответа по-прежнему будет работать, но не сможет фактически заблокировать или перенаправить запрос.
В случае правила блокировки это обрабатывается тем, что страница, отправившая запрос, получает заблокированный ответ, а Chrome досрочно завершает запрос. В случае правила перенаправления Chrome отправляет новый запрос на перенаправленный URL-адрес. Обязательно подумайте, соответствуют ли эти действия ожиданиям конфиденциальности вашего расширения.
Если запрос не блокируется и не перенаправляется, Chrome применяет все правила modifyHeaders
. Применение изменений к заголовкам ответов работает так же, как описано в разделе «Перед отправкой заголовков запроса». Применение изменений к заголовкам запроса ничего не дает, поскольку запрос уже был сделан.
Безопасные правила
Безопасные правила определяются как правила с block
, allow
, allowAllRequests
upgradeScheme
. На эти правила распространяется увеличенная квота динамических правил.
Ограничения правил
Загрузка и оценка правил в браузере приводит к увеличению производительности, поэтому при использовании API применяются некоторые ограничения. Ограничения зависят от типа используемого вами правила.
Статические правила
Статические правила — это правила, указанные в файлах правил, объявленных в файле манифеста. Расширение может указать до 100 статических наборов правил как часть ключа манифеста "rule_resources"
, но одновременно можно включить только 50 из этих наборов правил. Последний называется MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
. В совокупности эти наборы правил гарантируют не менее 30 000 правил. Это называется GUARANTEED_MINIMUM_STATIC_RULES
.
Количество правил, доступных после этого, зависит от того, сколько правил включено всеми расширениями, установленными в браузере пользователя. Вы можете найти это число во время выполнения, вызвав getAvailableStaticRuleCount()
. Вы можете увидеть пример этого в примерах кода .
Правила сеанса
Расширение может иметь до 5000 правил сеанса. Это отображается как MAX_NUMBER_OF_SESSION_RULES
.
До Chrome 120 существовало ограничение в 5000 комбинированных динамических и сеансовых правил.
Динамические правила
Расширение может иметь не менее 5000 динамических правил. Это отображается как MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
.
Начиная с Chrome 121, для безопасных динамических правил доступен больший лимит в 30 000 правил, представленный как MAX_NUMBER_OF_DYNAMIC_RULES
. Любые небезопасные правила, добавленные в пределах лимита в 5000, также будут учитываться в этом лимите.
До Chrome 120 существовало ограничение в 5000 объединенных динамических и сеансовых правил.
Правила, использующие регулярные выражения
Все типы правил могут использовать регулярные выражения; однако общее количество правил регулярных выражений каждого типа не может превышать 1000. Это называется MAX_NUMBER_OF_REGEX_RULES .
Кроме того, каждое правило после компиляции должно занимать менее 2 КБ. Это примерно коррелирует со сложностью правила. Если вы попытаетесь загрузить правило, превышающее этот предел, вы увидите предупреждение, подобное следующему, и правило будет проигнорировано.
rules_1.json: Rule with id 1 specified a more complex regex than allowed
as part of the "regexFilter" key.
Взаимодействие с работниками сервиса
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 определяет приоритет правил в расширении. При их просмотре вам может потребоваться открыть правила расстановки приоритетов в отдельном окне.
Ключ «приоритета»
Эти примеры требуют разрешения хоста для *://*.example.com/*
.
Чтобы определить приоритет конкретного URL-адреса, посмотрите на ключ "priority"
, определенный разработчиком, ключ "action"
и ключ "urlFilter"
. Эти примеры относятся к примерному файлу правил, показанному под ними.
- Переход на https://google.com
- Этот URL-адрес распространяется на два правила: правила с идентификаторами 1 и 4. Правило с идентификатором 1 применяется, поскольку действия
"block"
имеют более высокий приоритет, чем действия"redirect"
. Остальные правила не применяются, поскольку они предназначены для более длинных URL-адресов. - Переход на https://google.com/1234.
- Из-за более длинного URL-адреса правило с идентификатором 2 теперь соответствует правилам в дополнение к правилам с идентификаторами 1 и 4. Правило с идентификатором 2 применяется, поскольку
"allow"
имеет более высокий приоритет, чем"block"
и"redirect"
. - Переход на https://google.com/12345.
- Все четыре правила соответствуют этому URL. Правило с идентификатором 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
— это идентификатор вашего расширения. Чтобы это работало, манифест должен объявить /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. Ключ "scheme"
в "transform"
указывает, что при перенаправлении на поддомен всегда будет использоваться «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), что и кадр, в котором возник запрос.
Перечисление
"первая вечеринка" "третья сторона"
Сетевой запрос является первой стороной кадра, в котором он был создан.
Сетевой запрос является третьей стороной по отношению к кадру, в котором он был создан.
ExtensionActionOptions
Характеристики
- displayActionCountAsBadgeText
логическое значение необязательно
Следует ли автоматически отображать количество действий для страницы в виде текста значка расширения. Это предпочтение сохраняется во всех сеансах.
- tabUpdate
TabActionCountUpdate необязательно.
Хром 89+Подробная информация о том, как следует настроить количество действий на вкладке.
GetDisabledRuleIdsOptions
Характеристики
- Идентификатор набора правил
нить
Идентификатор, соответствующий статическому
Ruleset
.
GetRulesFilter
Характеристики
- идентификаторы правил
номер[] необязательно
Если указано, включаются только правила с совпадающими идентификаторами.
HeaderInfo
Характеристики
- исключенные значения
строка[] необязательно
Если указано, это условие не выполняется, если заголовок существует, но его значение содержит хотя бы один элемент в этом списке. Здесь используется тот же синтаксис шаблона соответствия, что и
values
. - заголовок
нить
Название заголовка. Это условие соответствует имени, только если не указаны ни
values
, ниexcludedValues
. - ценности
строка[] необязательно
Если указано, это условие соответствует, если значение заголовка соответствует хотя бы одному шаблону в этом списке. Это поддерживает сопоставление значений заголовков без учета регистра, а также следующие конструкции:
'*' : Соответствует любому количеству символов.
'?' : Соответствует нулю или одному символу(ам).
'*' и '?' можно экранировать обратной косой чертой, например, '\*' и '\?'
HeaderOperation
Здесь описаны возможные операции для правила «modifyHeaders».
Перечисление
"добавить" "набор" "удалять"
Добавляет новую запись для указанного заголовка. Эта операция не поддерживается для заголовков запросов.
Устанавливает новое значение для указанного заголовка, удаляя все существующие заголовки с тем же именем.
Удаляет все записи для указанного заголовка.
IsRegexSupportedResult
Характеристики
- isSupported
логическое значение
- причина
UnsupportedRegexReason необязательно
Указывает причину, по которой регулярное выражение не поддерживается. Предоставляется только в том случае, если
isSupported
имеет значение false.
MatchedRule
Характеристики
- идентификатор правила
число
Идентификатор соответствующего правила.
- Идентификатор набора правил
нить
Идентификатор
Ruleset
, которому принадлежит это правило. Для правила, происходящего из набора динамических правил, это значение будет равноDYNAMIC_RULESET_ID
.
MatchedRuleInfo
Характеристики
- правило
- идентификатор табуляции
число
tabId вкладки, из которой поступил запрос, если вкладка все еще активна. Остальное -1.
- метка времени
число
Время соответствия правилу. Временные метки будут соответствовать соглашению Javascript для времени, то есть количеству миллисекунд с начала эпохи.
MatchedRuleInfoDebug
Характеристики
- запрос
Подробная информация о запросе, для которого было сопоставлено правило.
- правило
MatchedRulesFilter
Характеристики
- минтиместамп
номер необязательно
Если указано, соответствует правилам только после указанной отметки времени.
- идентификатор табуляции
номер необязательно
Если указано, соответствует только правилам для данной вкладки. Соответствует правилам, не связанным ни с одной активной вкладкой, если установлено значение -1.
ModifyHeaderInfo
Характеристики
- заголовок
нить
Имя заголовка, который нужно изменить.
- операция
Операция, выполняемая над заголовком.
- ценить
строка необязательна
Новое значение для заголовка. Должен быть указан для операций
append
иset
.
QueryKeyValue
Характеристики
- ключ
нить
- replaceOnly
логическое значение необязательно
Хром 94+Если это правда, ключ запроса заменяется, только если он уже существует. В противном случае ключ также добавляется, если он отсутствует. По умолчанию ложь.
- ценить
нить
QueryTransform
Характеристики
- аддонзаменепарамс
QueryKeyValue [] необязательно
Список пар ключ-значение запроса, которые необходимо добавить или заменить.
- удалитьПарамс
строка[] необязательно
Список ключей запроса, которые необходимо удалить.
Redirect
Характеристики
- путь расширения
строка необязательна
Путь относительно каталога расширения. Должно начинаться с '/'.
- регулярное выражениеЗамена
строка необязательна
Шаблон подстановки для правил, определяющих
regexFilter
. Первое совпадениеregexFilter
в URL-адресе будет заменено этим шаблоном. ВregexSubstitution
цифры с обратной косой чертой (от \1 до \9) могут использоваться для вставки соответствующих групп захвата. \0 относится ко всему совпадающему тексту. - трансформировать
URLTransform необязательно
Преобразования URL-адресов, которые необходимо выполнить.
- URL
строка необязательна
URL-адрес перенаправления. Перенаправления на URL-адреса JavaScript не разрешены.
RegexOptions
Характеристики
- isCaseSensitive
логическое значение необязательно
Является ли указанное
regex
выражение чувствительным к регистру. По умолчанию верно. - регулярное выражение
нить
Регулярное выражение для проверки.
- требуется захват
логическое значение необязательно
Требуется ли захват указанного
regex
. Захват требуется только для правил перенаправления, которые определяют действиеregexSubstition
. По умолчанию — ложь.
RequestDetails
Характеристики
- идентификатор документа
строка необязательна
Хром 106+Уникальный идентификатор документа фрейма, если этот запрос относится к фрейму.
- Жизненный цикл документа
Жизненный цикл документа необязательно
Хром 106+Жизненный цикл документа фрейма, если этот запрос относится к фрейму.
- идентификатор кадра
число
Значение 0 указывает, что запрос происходит в основном кадре; положительное значение указывает идентификатор подкадра, в котором происходит запрос. Если загружен документ (под)кадра (
type
—main_frame
илиsub_frame
),frameId
указывает идентификатор этого кадра, а не идентификатор внешнего кадра. Идентификаторы кадров уникальны в пределах вкладки. - Тип рамки
Тип кадра необязательно
Хром 106+Тип кадра, если это запрос на кадр.
- инициатор
строка необязательна
Источник, из которого был инициирован запрос. Это не меняется при перенаправлении. Если это непрозрачное происхождение, будет использоваться строка «null».
- метод
нить
Стандартный метод HTTP.
- родительскийDocumentId
строка необязательна
Хром 106+Уникальный идентификатор родительского документа фрейма, если этот запрос относится к фрейму и имеет родительский элемент.
- родительскийFrameId
число
Идентификатор кадра, который заключает в себе кадр, отправивший запрос. Установите значение -1, если родительский фрейм не существует.
- идентификатор запроса
нить
Идентификатор запроса. Идентификаторы запросов уникальны в рамках сеанса браузера.
- идентификатор табуляции
число
Идентификатор вкладки, в которой происходит запрос. Установите значение -1, если запрос не связан с вкладкой.
- тип
Тип ресурса запроса.
- URL
нить
URL-адрес запроса.
RequestMethod
Здесь описывается метод HTTP-запроса сетевого запроса.
Перечисление
"соединять" "удалить" "получать" "голова" "параметры" "пластырь" "почта" "помещать" "другой"
ResourceType
Это описывает тип ресурса сетевого запроса.
Перечисление
"основной_фрейм" "под_кадр" "таблица стилей" "сценарий" "изображение" "шрифт" "объект" "xmlhttprequest" "пинг" "csp_report" "СМИ" "веб-сокет" "вебтранспорт" "паутина" "другой"
Rule
Характеристики
- действие
Действие, которое необходимо предпринять, если это правило соответствует.
- состояние
Условие, при котором срабатывает это правило.
- идентификатор
число
Идентификатор, который однозначно идентифицирует правило. Обязательный и должен быть >= 1.
- приоритет
номер необязательно
Приоритет правила. По умолчанию — 1. Если указано, должно быть >= 1.
RuleAction
Характеристики
- перенаправить
Перенаправление необязательно
Описывает, как должно выполняться перенаправление. Действует только для правил перенаправления.
- Заголовки запроса
ModifyHeaderInfo [] необязательно
Хром 86+Заголовки запроса, которые необходимо изменить для запроса. Допустимо только в том случае, если RuleActionType имеет значение «modifyHeaders».
- Заголовки ответа
ModifyHeaderInfo [] необязательно
Хром 86+Заголовки ответов, которые необходимо изменить для запроса. Допустимо только в том случае, если RuleActionType имеет значение «modifyHeaders».
- тип
Тип действия, которое необходимо выполнить.
RuleActionType
Описывает тип действия, которое необходимо предпринять, если заданное RuleCondition соответствует.
Перечисление
"блокировать" "перенаправление" "позволять" "схема обновления" "изменить заголовки" "allowAllRequests"
Заблокируйте сетевой запрос.
Перенаправить сетевой запрос.
Разрешите сетевой запрос. Запрос не будет перехвачен, если существует разрешающее правило, соответствующее ему.
Обновите схему URL-адреса сетевого запроса на https, если запрос http или ftp.
Измените заголовки запроса/ответа из сетевого запроса.
Разрешить все запросы в иерархии кадров, включая сам запрос кадра.
RuleCondition
Характеристики
- тип домена
Тип домена необязательно
Указывает, является ли сетевой запрос собственным или сторонним по отношению к домену, из которого он исходит. Если этот параметр опущен, все запросы принимаются.
- домены
строка[] необязательно
Устарело с версии Chrome 101.Вместо этого используйте
initiatorDomains
Правило будет соответствовать только сетевым запросам, исходящим из списка
domains
. - исключенные домены
строка[] необязательно
Устарело с версии Chrome 101.Вместо этого используйте
excludedInitiatorDomains
.Правило не будет соответствовать сетевым запросам, исходящим из списка
excludedDomains
. - исключенные инициатордомены
строка[] необязательно
Хром 101+Правило не будет соответствовать сетевым запросам, исходящим из списка
excludedInitiatorDomains
. Если список пуст или опущен, домены не исключаются. Это имеет приоритет надinitiatorDomains
.Примечания:
- Также разрешены субдомены, такие как «a.example.com».
- Записи должны состоять только из символов ASCII.
- Используйте кодировку punycode для интернационализированных доменов.
- Это соответствует инициатору запроса, а не URL-адресу запроса.
- Субдомены перечисленных доменов также исключены.
- исключенный запросдомены
строка[] необязательно
Хром 101+Правило не будет соответствовать сетевым запросам, если домены соответствуют одному из списка
excludedRequestDomains
. Если список пуст или опущен, домены не исключаются. Это имеет приоритет надrequestDomains
.Примечания:
- Также разрешены субдомены, такие как «a.example.com».
- Записи должны состоять только из символов ASCII.
- Используйте кодировку punycode для интернационализированных доменов.
- Субдомены перечисленных доменов также исключены.
- исключенные методы запроса
RequestMethod [] необязательный
Хром 91+Список методов запроса, которым правило не соответствует. Должен быть указан только один из
requestMethods
иexcludedRequestMethods
. Если ни один из них не указан, сопоставляются все методы запроса. - исключенныересаурцетипес
ТипРесурса [] необязательно
Список типов ресурсов, которым не будет соответствовать правило. Должен быть указан только один из
resourceTypes
иexcludedResourceTypes
. Если ни один из них не указан, блокируются все типы ресурсов, кроме «main_frame». - исключенные заголовки ответа
HeaderInfo [] необязательно
Хром 128+Правило не соответствует, если запрос соответствует какому-либо условию заголовка ответа в этом списке (если указано). Если указаны оба
excludedResponseHeaders
иresponseHeaders
, то свойствоexcludedResponseHeaders
имеет приоритет. - исключенныеTabIds
номер[] необязательно
Хром 92+Список
tabs.Tab.id
, которым правило не должно соответствовать. Идентификаторtabs.TAB_ID_NONE
исключает запросы, исходящие не от вкладки. Поддерживается только для правил на уровне сеанса. - домены инициатора
строка[] необязательно
Хром 101+Правило будет соответствовать только сетевым запросам, исходящим из списка
initiatorDomains
. Если список опущен, правило применяется к запросам со всех доменов. Пустой список не допускается.Примечания:
- Также разрешены субдомены, такие как «a.example.com».
- Записи должны состоять только из символов ASCII.
- Используйте кодировку punycode для интернационализированных доменов.
- Это соответствует инициатору запроса, а не URL-адресу запроса.
- Субдомены перечисленных доменов также совпадают.
- isUrlFilterCaseSensitive
логическое значение необязательно
Учитывает ли
urlFilter
илиregexFilter
(в зависимости от того, что указано) регистр. По умолчанию — ложь. - регулярное выражениеФильтр
строка необязательна
Регулярное выражение для сопоставления с URL-адресом сетевого запроса. Это соответствует синтаксису RE2 .
Примечание. Можно указать только один из
urlFilter
илиregexFilter
.Примечание.
regexFilter
должен состоять только из символов ASCII. Это сопоставляется с URL-адресом, в котором хост закодирован в формате punycode (в случае интернационализированных доменов), а любые другие символы, отличные от ascii, имеют URL-адрес, закодированный в utf-8. - запросДомены
строка[] необязательно
Хром 101+Правило будет соответствовать сетевым запросам только в том случае, если домен соответствует одному из списка
requestDomains
. Если список опущен, правило применяется к запросам со всех доменов. Пустой список не допускается.Примечания:
- Также разрешены субдомены, такие как «a.example.com».
- Записи должны состоять только из символов ASCII.
- Используйте кодировку punycode для интернационализированных доменов.
- Субдомены перечисленных доменов также совпадают.
- Методы запроса
RequestMethod [] необязательный
Хром 91+Список методов HTTP-запросов, которым может соответствовать правило. Пустой список не допускается.
Примечание. Указание условия правила
requestMethods
также будет исключать запросы, отличные от HTTP, тогда как указаниеexcludedRequestMethods
— нет. - типы ресурсов
ТипРесурса [] необязательно
Список типов ресурсов, которым может соответствовать правило. Пустой список не допускается.
Примечание. Это значение должно быть указано для
allowAllRequests
и может включать только типы ресурсовsub_frame
иmain_frame
. - Заголовки ответа
HeaderInfo [] необязательно
Хром 128+Правило соответствует, если запрос соответствует какому-либо условию заголовка ответа в этом списке (если указано).
- tabIds
номер[] необязательно
Хром 92+Список
tabs.Tab.id
, которым должно соответствовать правило. Идентификаторtabs.TAB_ID_NONE
соответствует запросам, исходящим не от вкладки. Пустой список не допускается. Поддерживается только для правил на уровне сеанса. - urlFilter
строка необязательна
Шаблон, который сопоставляется с URL-адресом сетевого запроса. Поддерживаемые конструкции:
'*' : Подстановочный знак: соответствует любому количеству символов.
'|' : Левая/правая привязка: если используется в любом конце шаблона, указывает начало/конец URL-адреса соответственно.
'||' : Привязка имени домена: если используется в начале шаблона, указывает начало (суб)домена URL-адреса.
'^' : Символ-разделитель: соответствует чему угодно, кроме буквы, цифры или одного из следующих символов:
_
,-
,.
, или%
. Это также соответствует концу URL-адреса.Поэтому
urlFilter
состоит из следующих частей: (необязательная привязка слева/доменного имени) + шаблон + (необязательная правая привязка).Если этот параметр опущен, все URL-адреса совпадают. Пустая строка не допускается.
Шаблон, начинающийся с
||*
не допускается. Вместо этого используйте*
.Примечание. Можно указать только один из
urlFilter
илиregexFilter
.Примечание.
urlFilter
должен состоять только из символов ASCII. Это сопоставляется с URL-адресом, в котором хост закодирован в формате punycode (в случае интернационализированных доменов), а любые другие символы, отличные от ascii, имеют URL-адрес, закодированный в utf-8. Например, когда URL-адрес запроса составляет http: //abc.rf? Q = f,urlFilter
будет сопоставлен с URL http: //abc.xn--p1ai/? Q =%d1%84.
Ruleset
Характеристики
- включено
логическое значение
Будет ли набор правил включена по умолчанию.
- идентификатор
нить
Непустые строки однозначно идентифицируя набор правил. Идентификаторы, начиная с '_', зарезервированы для внутреннего использования.
- путь
нить
Путь к набору правил JSON относительно каталога расширения.
RulesMatchedDetails
Характеристики
- Правила MatchedInfo
Правила, соответствующие данному фильтру.
TabActionCountUpdate
Характеристики
- приращение
число
Сумма, чтобы увеличить количество действий вкладки. Отрицательные значения уменьшат счет.
- табид
число
Вкладка, для которой можно обновить количество действий.
TestMatchOutcomeResult
Характеристики
- Matchedrules
MatchedRule []
Правила (если таковые имеются), которые соответствуют гипотетическому запросу.
TestMatchRequestDetails
Характеристики
- инициатор
Строка необязательно
URL инициатора (если есть) для гипотетического запроса.
- метод
RequestMethod необязательно
Стандартный метод HTTP гипотетического запроса. По умолчанию «получить» для HTTP-запросов и игнорируется для не HTTP-запросов.
- Ответчики
объект необязательно
В ожиданииЗаголовки, предоставленные гипотетическим ответом, если запрос не заблокирован или перенаправлен до его отправки. Представлен как объект, который отображает имя заголовка в список строковых значений. Если не указано, гипотетический ответ будет возвращать пустые заголовки ответа, которые могут соответствовать правилам, которые соответствуют небыванию заголовков. Например
{"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}
- табид
номер необязательно
Идентификатор вкладки, в которой происходит гипотетический запрос. Не нужно соответствовать реальному идентификатору вкладки. По умолчанию -1, что означает, что запрос не связан с вкладкой.
- тип
Тип ресурса гипотетического запроса.
- URL
нить
URL гипотетического запроса.
UnsupportedRegexReason
Описывает причину, по которой данное регулярное выражение не поддерживается.
Перечисление
"Синтаксиртор" "MemoryLimitexeded"
Регулярное выражение является синтаксически неверным или использует функции, недоступные в синтаксисе RE2 .
Регулярное выражение превышает предел памяти.
UpdateRuleOptions
Характеристики
- addrules
Правило [] необязательно
Правила добавить.
- Removeruleids
номер [] необязательно
Идентификаторы правил для удаления. Любые неверные идентификаторы будут игнорированы.
UpdateRulesetOptions
Характеристики
UpdateStaticRulesOptions
Характеристики
URLTransform
Характеристики
- фрагмент
Строка необязательно
Новый фрагмент для запроса. Должен быть либо пустым, и в этом случае существующий фрагмент очищается; или начинаться с '#'.
- хозяин
Строка необязательно
Новый хост для запроса.
- пароль
Строка необязательно
Новый пароль для запроса.
- путь
Строка необязательно
Новый путь для запроса. Если пуст, существующий путь очищается.
- порт
Строка необязательно
Новый порт для запроса. Если пуст, существующий порт очищается.
- запрос
Строка необязательно
Новый запрос для запроса. Должен быть либо пустым, и в этом случае существующий запрос очищается; Или начать с '?'.
- QueryTransform
QueryTransform необязательно
Добавьте, удалите или замените пары значений клавиш запроса.
- схема
Строка необязательно
Новая схема для запроса. Разрешенными значениями являются «http», «https», «ftp» и «chrome-extension».
- имя пользователя
Строка необязательно
Новое имя пользователя для запроса.
Характеристики
DYNAMIC_RULESET_ID
Идентификатор набора правил для динамических правил, добавленных расширением.
Ценить
"_dynamic"
GETMATCHEDRULES_QUOTA_INTERVAL
Временный интервал, в котором могут быть сделаны вызовы MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules
, указаны в минуты. Дополнительные вызовы сразу не будут сбой и установят runtime.lastError
. LasterRor. ПРИМЕЧАНИЕ. Вызовы getMatchedRules
, связанные с жестом пользователя, освобождены от квоты.
Ценить
10
GUARANTEED_MINIMUM_STATIC_RULES
Минимальное количество статических правил гарантированно продление на его включенных статических наборах правил. Любые правила выше этого предела будут учитываться в отношении глобального ограничения статического правила .
Ценить
30000
MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL
Количество раз, когда getMatchedRules
можно вызывать в течение периода GETMATCHEDRULES_QUOTA_INTERVAL
.
Ценить
20
MAX_NUMBER_OF_DYNAMIC_RULES
Максимальное количество динамических правил, которые может добавить расширение.
Ценить
30000
MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
Максимальное количество статических Rulesets
которые расширение может включить в любое время.
Ценить
50
MAX_NUMBER_OF_REGEX_RULES
Максимальное количество правил регулярного выражения, которые может добавить расширение. Этот предел оценивается отдельно для набора динамических правил и указанных в файле ресурсов правил.
Ценить
1000
MAX_NUMBER_OF_SESSION_RULES
Максимальное количество правил сферы сеанса, которые может добавить расширение.
Ценить
5000
MAX_NUMBER_OF_STATIC_RULESETS
Максимальное количество статических Rulesets
расширение может указать как часть манифестного ключа "rule_resources"
.
Ценить
100
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
Максимальное количество «небезопасных» динамических правил, которые может добавить расширение.
Ценить
5000
MAX_NUMBER_OF_UNSAFE_SESSION_RULES
Максимальное количество «небезопасных» сессионных правил, которые может добавить расширение.
Ценить
5000
SESSION_RULESET_ID
Идентификатор набора правил для правил с сеансом, добавленным расширением.
Ценить
"_Session"
Методы
getAvailableStaticRuleCount()
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
callback?: function,
)
Возвращает количество статических правил, которые может включить расширение до достижения глобального ограничения статического правила .
Параметры
- перезвонить
функция необязательно
Параметр
callback
выглядит как:(count: number) => void
- считать
число
Возврат
Обещание <число>
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
getDisabledRuleIds()
chrome.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
callback?: function,
)
Возвращает список статических правил в данном Ruleset
, которые в настоящее время отключены.
Параметры
- параметры
Определяет набор правил для запроса.
- перезвонить
функция необязательно
Параметр
callback
выглядит как:(disabledRuleIds: number[]) => void
- инвалиды
число[]
Возврат
Обещание <номер []>
Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
getDynamicRules()
chrome.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
callback?: function,
)
Возвращает текущий набор динамических правил для расширения. Абоненты могут необязательно отфильтровать список извлеченных правил, указав filter
.
Параметры
- фильтр
GetRulesFilter необязательно
Хром 111+Объект для фильтрации списка извлеченных правил.
- перезвонить
функция необязательно
Параметр
callback
выглядит как:(rules: Rule[]) => void
- правила
Правило []
Возврат
Обещание < Правило []>
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
getEnabledRulesets()
chrome.declarativeNetRequest.getEnabledRulesets(
callback?: function,
)
Возвращает идентификаторы для текущего набора включенных статических наборов правил.
Параметры
- перезвонить
функция необязательно
Параметр
callback
выглядит как:(rulesetIds: string[]) => void
- Правила
нить[]
Возврат
Обещание <string []>
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
getMatchedRules()
chrome.declarativeNetRequest.getMatchedRules(
filter?: MatchedRulesFilter,
callback?: function,
)
Возвращает все правила, соответствующие расширению. Абоненты могут необязательно отфильтровать список соответствующих правил, указав filter
. Этот метод доступен только для расширений с разрешением "declarativeNetRequestFeedback"
или с разрешением "activeTab"
предоставленным для tabId
, указанного в filter
. ПРИМЕЧАНИЕ. Правила, не связанные с активным документом, который соответствовал более пяти минутам назад, не будут возвращены.
Параметры
- фильтр
MatchedRulesfilter необязательно
Объект для фильтрации списка соответствующих правил.
- перезвонить
функция необязательно
Параметр
callback
выглядит как:(details: RulesMatchedDetails) => void
- подробности
Возврат
Обещание < правила MatchedDetails >
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
getSessionRules()
chrome.declarativeNetRequest.getSessionRules(
filter?: GetRulesFilter,
callback?: function,
)
Возвращает текущий набор правил сферы сеанса для расширения. Абоненты могут необязательно отфильтровать список извлеченных правил, указав filter
.
Параметры
- фильтр
GetRulesFilter необязательно
Хром 111+Объект для фильтрации списка извлеченных правил.
- перезвонить
функция необязательно
Параметр
callback
выглядит как:(rules: Rule[]) => void
- правила
Правило []
Возврат
Обещание < Правило []>
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
isRegexSupported()
chrome.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
callback?: function,
)
Проверяет, если данное регулярное выражение будет поддерживаться как условие правила regexFilter
.
Параметры
- regexoptions
Регулярное выражение для проверки.
- перезвонить
функция необязательно
Параметр
callback
выглядит как:(result: IsRegexSupportedResult) => void
- результат
Возврат
Обещание <ISREGEXSUPPORTEDRESULT>
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
setExtensionActionOptions()
chrome.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
callback?: function,
)
Настройка, если количество действий для вкладок должно отображаться в качестве текста значка действия расширения и предоставляет способ увеличить количество действий.
Параметры
- параметры
- перезвонить
функция необязательно
Хром 89+Параметр
callback
выглядит как:() => void
Возврат
Обещание <Void>
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
testMatchOutcome()
chrome.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
callback?: function,
)
Проверяет, что какое -либо из правил DeclarativenetRequest в продлении соответствует гипотетическому запросу. Примечание. Доступно только для распакованных расширений, так как это предназначено только для развития расширения.
Параметры
- запрос
- перезвонить
функция необязательно
Параметр
callback
выглядит как:(result: TestMatchOutcomeResult) => void
- результат
Возврат
Обещание <testmatchoutcomeresult>
Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
updateDynamicRules()
chrome.declarativeNetRequest.updateDynamicRules(
options: UpdateRuleOptions,
callback?: function,
)
Изменяет текущий набор динамических правил для расширения. Правила с идентификаторами, перечисленными в options.removeRuleIds
сначала удаляются, а затем добавляются правила, приведенные в options.addRules
. Примечания:
- Это обновление происходит как одна атомная операция: либо добавляются и удаляются все указанные правила, либо возвращается ошибка.
- Эти правила сохраняются между сеансами браузера и по обновлениям расширения.
- Статические правила, указанные как часть пакета расширения, не могут быть удалены с использованием этой функции.
-
MAX_NUMBER_OF_DYNAMIC_RULES
- это максимальное количество динамических правил, которые может добавить расширение. Количество небезопасных правил не должно превышатьMAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
.
Параметры
- параметрыХром 87+
- перезвонить
функция необязательно
Параметр
callback
выглядит как:() => void
Возврат
Обещание <Void>
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
updateEnabledRulesets()
chrome.declarativeNetRequest.updateEnabledRulesets(
options: UpdateRulesetOptions,
callback?: function,
)
Обновляет набор включенных статических наборов правил для расширения. Наборы правил с идентификаторами, перечисленными в options.disableRulesetIds
, сначала удаляются, а затем добавляются наборы правил, перечисленные в options.enableRulesetIds
. Обратите внимание, что набор включенных статических наборов правил сохраняется в разных сеансах, но не по обновлениям расширения, то есть ключ Manifest rule_resources
будет определять набор включенных статических наборов правил при каждом обновлении расширения.
Параметры
- параметрыХром 87+
- перезвонить
функция необязательно
Параметр
callback
выглядит как:() => void
Возврат
Обещание <Void>
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
updateSessionRules()
chrome.declarativeNetRequest.updateSessionRules(
options: UpdateRuleOptions,
callback?: function,
)
Изменяет текущий набор правил сферы сеанса для расширения. Правила с идентификаторами, перечисленными в options.removeRuleIds
сначала удаляются, а затем добавляются правила, приведенные в options.addRules
. Примечания:
- Это обновление происходит как одна атомная операция: либо добавляются и удаляются все указанные правила, либо возвращается ошибка.
- Эти правила не сохраняются в разных сессиях и поддерживаются в памяти.
-
MAX_NUMBER_OF_SESSION_RULES
- это максимальное количество правил сеанса, которое может добавить расширение.
Параметры
- параметры
- перезвонить
функция необязательно
Параметр
callback
выглядит как:() => void
Возврат
Обещание <Void>
Хром 91+Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
updateStaticRules()
chrome.declarativeNetRequest.updateStaticRules(
options: UpdateStaticRulesOptions,
callback?: function,
)
Отключает и позволяет отдельным статическим правилам на Ruleset
. Изменения в правилах, принадлежащих к сбору Ruleset
отключения, вступят в силу в следующий раз, когда он станет включенным.
Параметры
- параметры
- перезвонить
функция необязательно
Параметр
callback
выглядит как:() => void
Возврат
Обещание <Void>
Обещания поддерживаются в Manifest V3 и позже, но обратные вызовы предоставляются для обратной совместимости. Вы не можете использовать оба на одном и том же вызове функции. Обещание решается с тем же типом, который передается обратном вызове.
События
onRuleMatchedDebug
chrome.declarativeNetRequest.onRuleMatchedDebug.addListener(
callback: function,
)
Уволен, когда правило сопоставлено с запросом. Доступно только для распакованных расширений с разрешением "declarativeNetRequestFeedback"
поскольку это предназначено для использования только для целей отладки.
Параметры
- перезвонить
функция
Параметр
callback
выглядит как:(info: MatchedRuleInfoDebug) => void
- информация