0Pricing
Browser Extensions Development (Chrome & Edge) · Leçon

Règles dynamiques et débogage de declarativeNetRequest

Ajoutez et mettez à jour des règles à l’exécution, gérez leurs identifiants et leurs priorités, puis observez les requêtes correspondantes à des fins de débogage.

Règles dynamiques et débogage de declarativeNetRequest est une leçon Browser Extensions Development (Chrome & Edge) gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Browser Extensions Development (Chrome & Edge), et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Browser Extensions Development (Chrome & Edge) comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

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.

Questions Fréquemment Posées

La leçon « Règles dynamiques et débogage de declarativeNetRequest » est-elle gratuite ?

Oui — le texte complet de « Règles dynamiques et débogage de declarativeNetRequest » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Browser Extensions Development (Chrome & Edge), passe à CoddyKit PRO. Le cours Browser Extensions Development (Chrome & Edge) comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Règles dynamiques et débogage de declarativeNetRequest » ?

Ajoutez et mettez à jour des règles à l’exécution, gérez leurs identifiants et leurs priorités, puis observez les requêtes correspondantes à des fins de débogage. Tu pratiques Browser Extensions Development (Chrome & Edge) avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Browser Extensions Development (Chrome & Edge) ?

Aucune expérience préalable n'est requise. Browser Extensions Development (Chrome & Edge) sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Règles dynamiques et débogage de declarativeNetRequest » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Browser Extensions Development (Chrome & Edge) ?

Oui. Chaque leçon Browser Extensions Development (Chrome & Edge) inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Bloquer les requêtes réseau
  2. Modifier les en-têtes des requêtes
  3. Rediriger et réécrire les URL
  4. Règles dynamiques et débogage de declarativeNetRequest
← Retour à Browser Extensions Development (Chrome & Edge)