Описание
 Примечание. Этот API устарел. Вместо этого ознакомьтесь с API declarativeNetRequest . Используйте API chrome.declarativeWebRequest для перехвата, блокировки или изменения запросов в реальном времени. Это значительно быстрее, чем API chrome.webRequest , поскольку вы можете регистрировать правила, которые оцениваются в браузере, а не в движке JavaScript, что снижает задержки в обоих направлениях и обеспечивает более высокую эффективность.
Разрешения
declarativeWebRequestЧтобы использовать этот API, вы должны объявить разрешение «declarativeWebRequest» в манифесте расширения вместе с разрешениями хоста .
{
  "name": "My extension",
  ...
  "permissions": [
    "declarativeWebRequest",
    "*://*/*"
  ],
  ...
}
Доступность
Манифест
Обратите внимание, что некоторые типы неконфиденциальных действий не требуют разрешений хоста:
-  CancelRequest
-  IgnoreRules
-  RedirectToEmptyDocument
-  RedirectToTransparentImage
 Действие SendMessageToExtension() требует разрешений хоста для всех хостов, чьи сетевые запросы вы хотите инициировать сообщение.
Для всех остальных действий требуются разрешения хоста для всех URL-адресов.
 Например, если "https://*.google.com/*" — единственное разрешение хоста, которое имеет расширение, то такое расширение может установить правило для:
-  Отмените запрос на https://www.google.comилиhttps://anything.else.com.
-  Отправьте сообщение при переходе на https://www.google.comно не наhttps://something.else.com.
 Расширение не может настроить правило для перенаправления https://www.google.com на https://mail.google.com .
Правила
 Декларативный API веб-запросов следует концепциям Декларативного API . Вы можете зарегистрировать правила в объекте события chrome.declarativeWebRequest.onRequest .
 API декларативных веб-запросов поддерживает один тип критериев соответствия — RequestMatcher . RequestMatcher сопоставляет сетевые запросы тогда и только тогда, когда все перечисленные критерии выполняются. Следующий RequestMatcher будет соответствовать сетевому запросу, когда пользователь вводит https://www.example.com в ominibox:
var matcher = new chrome.declarativeWebRequest.RequestMatcher({
  url: { hostSuffix: 'example.com', schemes: ['http'] },
  resourceType: ['main_frame']
});
 Запросы к https://www.example.com будут отклонены RequestMatcher из-за этой схемы. Кроме того, все запросы на встроенный iframe будут отклонены из-за resourceType .
Чтобы отменить все запросы к «example.com», вы можете определить правило следующим образом:
var rule = {
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: 'example.com' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
};
 Чтобы отменить все запросы к example.com и foobar.com , вы можете добавить второе условие, поскольку каждого условия достаточно для запуска всех указанных действий:
var rule2 = {
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: 'example.com' } }),
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: 'foobar.com' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
};
Правила регистрации следующие:
chrome.declarativeWebRequest.onRequest.addRules([rule2]);
Оценка условий и действий
Декларативный API веб-запросов соответствует модели жизненного цикла веб-запросов API веб-запросов . Это означает, что условия можно тестировать только на определенных этапах веб-запроса, а действия также могут выполняться только на определенных этапах. В следующих таблицах перечислены этапы запроса, совместимые с условиями и действиями.
| Этапы запроса, на которых могут обрабатываться атрибуты условий. | ||||
|---|---|---|---|---|
| Атрибут условия | onBeforeRequest | onBeforeSendHeaders | onHeadersReceived | onAuthRequired | 
| url | ✓ | ✓ | ✓ | ✓ | 
| resourceType | ✓ | ✓ | ✓ | ✓ | 
| contentType | ✓ | |||
| excludeContentType | ✓ | |||
| responseHeaders | ✓ | |||
| excludeResponseHeaders | ✓ | |||
| requestHeaders | ✓ | |||
| excludeRequestHeaders | ✓ | |||
| thirdPartyForCookies | ✓ | ✓ | ✓ | ✓ | 
| Этапы запроса, на которых могут выполняться действия. | ||||
| Событие | onBeforeRequest | onBeforeSendHeaders | onHeadersReceived | onAuthRequired | 
| AddRequestCookie | ✓ | |||
| AddResponseCookie | ✓ | |||
| AddResponseHeader | ✓ | |||
| CancelRequest | ✓ | ✓ | ✓ | ✓ | 
| EditRequestCookie | ✓ | |||
| EditResponseCookie | ✓ | |||
| IgnoreRules | ✓ | ✓ | ✓ | ✓ | 
| RedirectByRegEx | ✓ | ✓ | ||
| RedirectRequest | ✓ | ✓ | ||
| RedirectToEmptyDocument | ✓ | ✓ | ||
| RedirectToTransparentImage | ✓ | ✓ | ||
| RemoveRequestCookie | ✓ | |||
| RemoveRequestHeader | ✓ | |||
| RemoveResponseCookie | ✓ | |||
| RemoveResponseHeader | ✓ | |||
| SendMessageToExtension | ✓ | ✓ | ✓ | ✓ | 
| SetRequestHeader | ✓ | |||
Используйте приоритеты для отмены правил
 Правила можно связать с приоритетами, как описано в Events API . Этот механизм можно использовать для выражения исключений. В следующем примере блокируются все запросы к изображениям с именем evil.jpg , кроме сервера «myserver.com».
var rule1 = {
  priority: 100,
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
        url: { pathEquals: 'evil.jpg' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
};
var rule2 = {
  priority: 1000,
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: '.myserver.com' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.IgnoreRules({
      lowerPriorityThan: 1000 })
  ]
};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
 Важно понимать, что действие IgnoreRules не сохраняется на всех этапах запроса . Все условия всех правил оцениваются на каждом этапе веб-запроса. Если действие IgnoreRules выполняется, оно применяется только к другим действиям, которые выполняются для того же веб-запроса на том же этапе.
Типы
AddRequestCookie
Добавляет файл cookie в запрос или переопределяет файл cookie, если другой файл cookie с таким же именем уже существует. Обратите внимание, что предпочтительнее использовать API файлов cookie, поскольку это требует меньше вычислительных затрат.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: AddRequestCookie) => {...} - аргумент
 - возвращает
 
- печеньеФайл cookie, который будет добавлен в запрос. Ни одно поле не может быть неопределенным. 
AddResponseCookie
Добавляет файл cookie в ответ или переопределяет файл cookie, если другой файл cookie с таким же именем уже существует. Обратите внимание, что предпочтительнее использовать API файлов cookie, поскольку это требует меньше вычислительных затрат.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: AddResponseCookie) => {...} - аргумент
 - возвращает
 
- печеньеФайл cookie, который будет добавлен в ответ. Необходимо указать имя и значение. 
AddResponseHeader
Добавляет заголовок ответа к ответу на этот веб-запрос. Поскольку несколько заголовков ответа могут иметь одно и то же имя, вам необходимо сначала удалить, а затем добавить новый заголовок ответа, чтобы заменить его.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: AddResponseHeader) => {...} - аргумент
 - возвращает
 
- имянить Имя заголовка HTTP-ответа. 
- ценитьнить Значение заголовка ответа HTTP. 
CancelRequest
Декларативное действие события, которое отменяет сетевой запрос.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: CancelRequest) => {...} - аргумент
 - возвращает
 
EditRequestCookie
Редактирует один или несколько файлов cookie запроса. Обратите внимание, что предпочтительнее использовать API файлов cookie, поскольку это требует меньше вычислительных затрат.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: EditRequestCookie) => {...} - аргумент
 - возвращает
 
- фильтрОтфильтруйте файлы cookie, которые будут изменены. Все пустые записи игнорируются. 
- модификацияАтрибуты, которые должны быть переопределены в файлах cookie, соответствующих фильтру. Атрибуты, которым присвоена пустая строка, удаляются. 
EditResponseCookie
Редактирует один или несколько файлов cookie ответа. Обратите внимание, что предпочтительнее использовать API файлов cookie, поскольку это требует меньше вычислительных затрат.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: EditResponseCookie) => {...} - аргумент
 - возвращает
 
- фильтрОтфильтруйте файлы cookie, которые будут изменены. Все пустые записи игнорируются. 
- модификацияАтрибуты, которые должны быть переопределены в файлах cookie, соответствующих фильтру. Атрибуты, которым присвоена пустая строка, удаляются. 
FilterResponseCookie
Фильтр файлов cookie в ответах HTTP.
Характеристики
- возрастLowerBoundномер необязательно Включающая нижняя граница срока действия файлов cookie (указанная в секундах после текущего времени). Этому критерию соответствуют только файлы cookie, дата и время истечения срока действия которых установлены на «сейчас + ageLowerBound» или позже. Сеансовые файлы cookie не соответствуют критериям этого фильтра. Срок действия файлов cookie рассчитывается на основе атрибутов файлов cookie «max-age» или «expires». Если указаны оба параметра, для расчета срока службы файлов cookie используется «max-age». 
- возрастUpperBoundномер необязательно Включающая верхняя граница срока действия файлов cookie (указывается в секундах после текущего времени). Этому критерию соответствуют только файлы cookie, дата и время окончания срока действия которых находится в интервале [сейчас, сейчас + ageUpperBound]. Сеансовые файлы cookie и файлы cookie, срок действия которых истекает в прошлом, не соответствуют критерию этого фильтра. Срок действия cookie рассчитывается на основе атрибутов cookie «max-age» или «expires». Если указаны оба параметра, для расчета срока службы файлов cookie используется «max-age». 
- доменстрока необязательна Значение атрибута cookie домена. 
- истекаетстрока необязательна Значение атрибута cookie Expires. 
- httpOnlyстрока необязательна Наличие атрибута cookie HttpOnly. 
- МаксВозрастномер необязательно Значение атрибута cookie Max-Age 
- имястрока необязательна Имя файла cookie. 
- путьстрока необязательна Значение атрибута cookie Path. 
- безопасныйстрока необязательна Наличие атрибута Secure cookie. 
- сеансCookieлогическое значение необязательно Фильтрует файлы cookie сеанса. Сеансовые файлы cookie не имеют срока действия, указанного в атрибутах «max-age» или «expire». 
- ценитьстрока необязательна Значение файла cookie может быть заключено в двойные кавычки. 
HeaderFilter
Фильтрует заголовки запросов по различным критериям. Несколько критериев оцениваются как совокупность.
Характеристики
- имяСодержитстрока | строка[] необязательно Соответствует, если имя заголовка содержит все указанные строки. 
- имяРавнострока необязательна Соответствует, если имя заголовка равно указанной строке. 
- имяПрефиксстрока необязательна Соответствует, если имя заголовка начинается с указанной строки. 
- имяСуффиксстрока необязательна Соответствует, если имя заголовка заканчивается указанной строкой. 
- значениеСодержитстрока | строка[] необязательно Соответствует, если значение заголовка содержит все указанные строки. 
- значениеРавнострока необязательна Соответствует, если значение заголовка равно указанной строке. 
- значениеПрефиксстрока необязательна Соответствует, если значение заголовка начинается с указанной строки. 
- значениеСуффиксстрока необязательна Соответствует, если значение заголовка заканчивается указанной строкой. 
IgnoreRules
Маскирует все правила, соответствующие указанным критериям.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: IgnoreRules) => {...} - аргумент
 - возвращает
 
- имеет тегстрока необязательна Если установлено, правила с указанным тегом игнорируются. Это игнорирование не сохраняется, оно влияет только на правила и их действия на той же стадии сетевого запроса. Обратите внимание, что правила выполняются в порядке убывания их приоритетов. Это действие влияет на правила с более низким приоритетом, чем текущее правило. Правила с одинаковым приоритетом могут игнорироваться, а могут и не игнорироваться. 
- более низкий приоритет, чемномер необязательно Если установлено, правила с более низким приоритетом, чем указанное значение, игнорируются. Эта граница не сохраняется, она влияет только на правила и их действия на той же стадии сетевого запроса. 
RedirectByRegEx
Перенаправляет запрос, применяя к URL-адресу регулярное выражение. Регулярные выражения используют синтаксис RE2 .
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: RedirectByRegEx) => {...} - аргумент
 - возвращает
 
- отнить Шаблон соответствия, который может содержать группы захвата. Группы захвата упоминаются в синтаксисе Perl ($1, $2, ...) вместо синтаксиса RE2 (\1, \2, ...), чтобы быть ближе к регулярным выражениям JavaScript. 
- книть Шаблон назначения. 
RedirectRequest
Декларативное действие события, которое перенаправляет сетевой запрос.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: RedirectRequest) => {...} - аргумент
 - возвращает
 
- URL-адрес перенаправлениянить Назначение, куда перенаправляется запрос. 
RedirectToEmptyDocument
Декларативное событие, которое перенаправляет сетевой запрос в пустой документ.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: RedirectToEmptyDocument) => {...} - аргумент
 - возвращает
 
RedirectToTransparentImage
Декларативное событие, которое перенаправляет сетевой запрос на прозрачное изображение.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: RedirectToTransparentImage) => {...} - аргумент
 - возвращает
 
RemoveRequestCookie
Удаляет один или несколько файлов cookie запроса. Обратите внимание, что предпочтительнее использовать API файлов cookie, поскольку это требует меньше вычислительных затрат.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: RemoveRequestCookie) => {...} - аргумент
 - возвращает
 
- фильтрОтфильтруйте файлы cookie, которые будут удалены. Все пустые записи игнорируются. 
RemoveRequestHeader
Удаляет заголовок запроса указанного имени. Не используйте SetRequestHeader и RemoveRequestHeader с одинаковым именем заголовка в одном и том же запросе. Каждое имя заголовка запроса встречается только один раз в каждом запросе.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: RemoveRequestHeader) => {...} - аргумент
 - возвращает
 
- имянить Имя заголовка HTTP-запроса (без учета регистра). 
RemoveResponseCookie
Удаляет один или несколько файлов cookie ответа. Обратите внимание, что предпочтительнее использовать API файлов cookie, поскольку это требует меньше вычислительных затрат.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: RemoveResponseCookie) => {...} - аргумент
 - возвращает
 
- фильтрОтфильтруйте файлы cookie, которые будут удалены. Все пустые записи игнорируются. 
RemoveResponseHeader
Удаляет все заголовки ответов с указанными именами и значениями.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: RemoveResponseHeader) => {...} - аргумент
 - возвращает
 
- имянить Имя заголовка HTTP-запроса (без учета регистра). 
- ценитьстрока необязательна Значение заголовка HTTP-запроса (регистронезависимо). 
RequestCookie
Фильтр или спецификация файла cookie в HTTP-запросах.
Характеристики
- имястрока необязательна Имя файла cookie. 
- ценитьстрока необязательна Значение файла cookie может быть заключено в двойные кавычки. 
RequestMatcher
Сопоставляет сетевые события по различным критериям.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: RequestMatcher) => {...} - аргумент
 - возвращает
 
- тип контентастрока[] необязательно Соответствует, если в списке содержится тип носителя MIME ответа (из заголовка HTTP Content-Type). 
- исключатьконтенттипестрока[] необязательно Соответствует, если тип носителя MIME ответа (из заголовка HTTP Content-Type) не содержится в списке. 
- исключить заголовки запросаHeaderFilter [] необязательно Соответствует, если ни один из заголовков запроса не соответствует ни одному из HeaderFilters. 
- исключитьResponseHeadersHeaderFilter [] необязательно Соответствует, если ни один из заголовков ответа не соответствует ни одному из HeaderFilters. 
- firstPartyForCookiesUrlUrlFilter необязательно УстарелоИгнорируется с версии 82. Соответствует, если условия UrlFilter выполнены для «основного» URL-адреса запроса. «Основной» URL-адрес запроса, если он присутствует, может отличаться от целевого URL-адреса запроса и описывает то, что считается «основным» для сторонних проверок на наличие файлов cookie. 
- Заголовки запросаHeaderFilter [] необязательно Соответствует, если некоторые заголовки запроса совпадают с одним из HeaderFilters. 
- тип ресурсаТипРесурса [] необязательно Соответствует, если тип запроса содержится в списке. Запросы, которые не могут соответствовать ни одному из типов, будут отфильтрованы. 
- Заголовки ответаHeaderFilter [] необязательно Соответствует, если некоторые заголовки ответов совпадают с одним из HeaderFilters. 
- этапыЭтап [] необязательно Содержит список строк, описывающих этапы. Допустимые значения: «onBeforeRequest», «onBeforeSendHeaders», «onHeadersReceived», «onAuthRequired». Если этот атрибут присутствует, он ограничивает применимые этапы перечисленными. Обратите внимание, что все условие применимо только на этапах, совместимых со всеми атрибутами. 
- третьяпартияфоркукиеслогическое значение необязательно УстарелоИгнорируется с версии 87. Если установлено значение true, сопоставляет запросы, на которые распространяются политики сторонних файлов cookie. Если установлено значение false, соответствует всем остальным запросам. 
- URLUrlFilter необязательно Соответствует, если для URL-адреса запроса выполняются условия UrlFilter. 
ResponseCookie
Спецификация файла cookie в ответах HTTP.
Характеристики
- доменстрока необязательна Значение атрибута cookie домена. 
- истекаетстрока необязательна Значение атрибута cookie Expires. 
- httpOnlyстрока необязательна Наличие атрибута cookie HttpOnly. 
- МаксВозрастномер необязательно Значение атрибута cookie Max-Age 
- имястрока необязательна Имя файла cookie. 
- путьстрока необязательна Значение атрибута cookie Path. 
- безопасныйстрока необязательна Наличие атрибута Secure cookie. 
- ценитьстрока необязательна Значение файла cookie может быть заключено в двойные кавычки. 
SendMessageToExtension
Запускает событие declarativeWebRequest.onMessage . 
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: SendMessageToExtension) => {...} - аргумент
 - возвращает
 
- сообщениенить Значение, которое будет передано в атрибуте messageсловаря, передаваемого обработчику событий.
SetRequestHeader
Устанавливает заголовок запроса указанного имени в указанное значение. Если заголовок с указанным именем ранее не существовал, создается новый. Сравнение имен заголовков всегда нечувствительно к регистру. Каждое имя заголовка запроса встречается только один раз в каждом запросе.
Характеристики
- конструкторпустота Функция constructorвыглядит так:(arg: SetRequestHeader) => {...} - аргумент
 - возвращает
 
- имянить Имя заголовка HTTP-запроса. 
- ценитьнить Значение заголовка HTTP-запроса. 
Stage
Перечисление
 "onBeforeRequest"   "онбефоресендхедерс"   "onHeadersReceived"   "onAuthRequired" 
События
onMessage
chrome.declarativeWebRequest.onMessage.addListener(
callback: function,
)
 Запускается, когда сообщение отправляется через declarativeWebRequest.SendMessageToExtension из действия API декларативного веб-запроса. 
Параметры
- перезвонитьфункция Параметр callbackвыглядит так:(details: object) => void - подробностиобъект - идентификатор документастрока необязательна UUID документа, отправившего запрос. 
- Жизненный цикл документаЖизненный цикл, в котором находится документ. 
- идентификатор кадрачисло Значение 0 указывает, что запрос происходит в основном кадре; положительное значение указывает идентификатор подкадра, в котором происходит запрос. Если загружен документ (под)кадра ( type—main_frameилиsub_frame),frameIdуказывает идентификатор этого кадра, а не идентификатор внешнего кадра. Идентификаторы кадров уникальны в пределах вкладки.
- тип рамкиТип фрейма, в котором происходила навигация. 
- сообщениенить Сообщение, отправленное вызывающим скриптом. 
- методнить Стандартный метод HTTP. 
- родительскийDocumentIdстрока необязательна UUID родительского документа, владеющего этим фреймом. Это не установлено, если нет родителя. 
- родительскийFrameIdчисло Идентификатор кадра, который заключает в себе кадр, отправивший запрос. Установите значение -1, если родительский фрейм не существует. 
- идентификатор запросанить Идентификатор запроса. Идентификаторы запросов уникальны в рамках сеанса браузера. В результате их можно было использовать для связи разных событий одного и того же запроса. 
- этапЭтап сетевого запроса, на котором произошло событие. 
- идентификатор табуляциичисло Идентификатор вкладки, в которой происходит запрос. Установите значение -1, если запрос не связан с вкладкой. 
- метка временичисло Время срабатывания этого сигнала в миллисекундах с начала эпохи. 
- Как будет использоваться запрошенный ресурс. 
- URLнить 
 
 
onRequest
Предоставляет API декларативных событий , состоящий из addRules , removeRules и getRules .