0Pricing
Browser Extensions Development (Chrome & Edge) · Урок

Динамические правила и отладка declarativeNetRequest

Добавляйте и обновляйте правила во время выполнения, управляйте идентификаторами и приоритетами правил и отслеживайте совпавшие запросы для отладки.

«Динамические правила и отладка declarativeNetRequest» — бесплатный урок Browser Extensions Development (Chrome & Edge) на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Browser Extensions Development (Chrome & Edge), и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Browser Extensions Development (Chrome & Edge) содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Static vs Dynamic Rules

declarativeNetRequest supports two rule kinds. Static rules ship in JSON files in the manifest. Dynamic rules are added at runtime and persist across restarts.

Dynamic rules let your extension adapt to user choices without an update.

Declaring the Permission

You need the declarativeNetRequest permission. For dynamic rules at runtime, that is all you require.

{
  "permissions": ["declarativeNetRequest"]
}

The Shape of a Rule

Each rule has an id, a priority, an action, and a condition. The condition decides which requests match.

{
  "id": 1,
  "priority": 1,
  "action": { "type": "block" },
  "condition": { "urlFilter": "ads.example.com" }
}

Adding Dynamic Rules

Use updateDynamicRules to add rules. Pass them in the addRules array.

chrome.declarativeNetRequest.updateDynamicRules({
  addRules: [{
    id: 1, priority: 1,
    action: { type: 'block' },
    condition: { urlFilter: 'tracker.com', resourceTypes: ['script'] }
  }]
})

Removing Rules by ID

The same call removes rules by listing their IDs in removeRuleIds. Adds and removes can happen together.

chrome.declarativeNetRequest.updateDynamicRules({
  removeRuleIds: [1]
})

Unique Rule IDs

Every dynamic rule needs a unique numeric id. Reusing an existing ID without removing it first causes an error.

const existing = await chrome.declarativeNetRequest.getDynamicRules()
const nextId = Math.max(0, ...existing.map(r => r.id)) + 1

Priorities Resolve Conflicts

When multiple rules match, priority decides which wins. Higher priority takes precedence; allow rules can override block rules at the same level.

{ "id": 2, "priority": 2, "action": { "type": "allow" }, "condition": { "urlFilter": "safe.com" } }

Session Rules

If you want rules that vanish when the browser closes, use updateSessionRules instead. They never persist to disk.

chrome.declarativeNetRequest.updateSessionRules({
  addRules: [tempRule]
})

Observing Matched Requests

For debugging, enable the feedback permission and listen to onRuleMatchedDebug to see which rule fired for each request.

chrome.declarativeNetRequest.onRuleMatchedDebug.addListener((info) => {
  console.log('Matched rule ' + info.rule.ruleId)
})

Inspecting Current Rules

Call getDynamicRules to list everything currently active. This is essential when a rule misbehaves and you need to confirm what is installed.

const rules = await chrome.declarativeNetRequest.getDynamicRules()
console.log(rules.length + ' active rules')

Staying Within Limits

There is a cap on the number of dynamic rules. Audit and remove stale rules instead of piling on, and group conditions where possible to stay efficient.

Quick Check

Test your dynamic rules knowledge.

Recap

You learned dynamic request rules:

  • Add and remove with updateDynamicRules
  • Keep IDs unique and use priority for conflicts
  • Use session rules for temporary state
  • Debug with onRuleMatchedDebug and getDynamicRules
  • Respect rule count limits

Runtime rules let your extension adapt without shipping an update.

Часто задаваемые вопросы

Урок «Динамические правила и отладка declarativeNetRequest» бесплатный?

Да — полный текст урока «Динамические правила и отладка declarativeNetRequest» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Browser Extensions Development (Chrome & Edge), подпишись на CoddyKit PRO. Курс Browser Extensions Development (Chrome & Edge) содержит 4 уроков всего.

Чему я научусь в уроке «Динамические правила и отладка declarativeNetRequest»?

Добавляйте и обновляйте правила во время выполнения, управляйте идентификаторами и приоритетами правил и отслеживайте совпавшие запросы для отладки. Ты практикуешь Browser Extensions Development (Chrome & Edge) с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Browser Extensions Development (Chrome & Edge)?

Предыдущий опыт не требуется. Browser Extensions Development (Chrome & Edge) на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Динамические правила и отладка declarativeNetRequest»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Browser Extensions Development (Chrome & Edge)?

Да. Каждый урок Browser Extensions Development (Chrome & Edge) включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Блокировка сетевых запросов
  2. Изменение заголовков запросов
  3. Перенаправление и переписывание URL
  4. Динамические правила и отладка declarativeNetRequest
← Назад к Browser Extensions Development (Chrome & Edge)