ब्यौरा
chrome.declarativeNetRequest एपीआई का इस्तेमाल, एलान वाले नियमों को तय करके नेटवर्क अनुरोधों को ब्लॉक करने या उनमें बदलाव करने के लिए किया जाता है. इससे एक्सटेंशन, नेटवर्क अनुरोधों को इंटरसेप्ट किए बिना और उनका कॉन्टेंट देखे बिना उनमें बदलाव कर सकते हैं. इस तरह, ज़्यादा निजता मिलती है.
अनुमतियां
declarativeNetRequestdeclarativeNetRequestWithHostAccessdeclarativeNetRequestFeedbackhost_permissions
उपलब्धता
मेनिफ़ेस्ट
ऊपर बताई गई अनुमतियों के अलावा, कुछ तरह के नियम सेट के लिए "declarative_net_request" मेनिफ़ेस्ट कुंजी का एलान करना ज़रूरी होता है. खास तौर पर, स्टैटिक नियम सेट के लिए. यह एक डिक्शनरी होनी चाहिए, जिसमें "rule_resources" नाम की एक कुंजी हो. यह कुंजी, Ruleset टाइप की डिक्शनरी वाली एक कैटगरी है. इसे यहां दिखाया गया है. ध्यान दें कि मेनिफ़ेस्ट के JSON में 'Ruleset' नाम नहीं दिखता, क्योंकि यह सिर्फ़ एक ऐरे है. स्टैटिक नियमों के सेट के बारे में इस दस्तावेज़ में बाद में बताया गया है.
{
  "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/*"
  ],
  ...
}
कॉन्सेप्ट और इस्तेमाल
इस एपीआई का इस्तेमाल करने के लिए, एक या उससे ज़्यादा नियम सेट तय करें. नियमों के सेट में नियमों की एक श्रेणी होती है. एक नियम इनमें से कोई एक काम करता है:
- नेटवर्क के किसी अनुरोध को ब्लॉक करें.
- स्कीमा को अपग्रेड करें (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 ऑब्जेक्ट लेता है. इसमें चालू या बंद किए जाने वाले नियमों के आईडी की कैटगरी होती है. आईडी, Ruleset डिक्शनरी की "id" कुंजी का इस्तेमाल करके तय किए जाते हैं.
स्टैटिक नियमों के सेट को चालू या बंद करने के लिए, updateEnabledRulesets() को कॉल करें. यह तरीका, UpdateRulesetOptions ऑब्जेक्ट लेता है. इसमें चालू या बंद करने के लिए, नियमों के सेट के आईडी की कैटगरी होती है. आईडी, Ruleset डिक्शनरी की "id" कुंजी का इस्तेमाल करके तय किए जाते हैं.
नियम बनाना
टाइप कोई भी हो, नियम की शुरुआत चार फ़ील्ड से होती है. ये फ़ील्ड यहां दिखाए गए हैं. "id" और "priority" कुंजियों में संख्या का इस्तेमाल किया जाता है. वहीं, "action" और "condition" कुंजियों में, ब्लॉक करने और रीडायरेक्ट करने की कई शर्तें दी जा सकती हैं. यहां दिया गया नियम, "foo.com" से शुरू होने वाले सभी स्क्रिप्ट अनुरोधों को ब्लॉक करता है. ये अनुरोध, ऐसे किसी भी यूआरएल के लिए किए जाते हैं जिसमें "abc" सबस्ट्रिंग के तौर पर मौजूद हो.
{
  "id" : 1,
  "priority": 1,
  "action" : { "type" : "block" },
  "condition" : {
    "urlFilter" : "abc",
    "initiatorDomains" : ["foo.com"],
    "resourceTypes" : ["script"]
  }
}
urlFilter मैच करने वाले वर्ण
किसी नियम की "condition" कुंजी, किसी तय किए गए डोमेन के यूआरएल पर कार्रवाई करने के लिए "urlFilter" कुंजी की अनुमति देती है. पैटर्न मैचिंग टोकन का इस्तेमाल करके पैटर्न बनाए जाते हैं. यहाँ कुछ उदाहरण दिए गए हैं.
| 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 | 
नियमों को प्राथमिकता देना
नियम, वेब पेजों से भेजे गए अनुरोधों के आधार पर ट्रिगर होते हैं. अगर कई नियम किसी अनुरोध से मेल खाते हैं, तो नियमों को प्राथमिकता दी जानी चाहिए. इस सेक्शन में बताया गया है कि उन्हें प्राथमिकता कैसे दी जाती है. प्राथमिकता तय करने की प्रोसेस दो चरणों में होती है.
- किसी एक्सटेंशन में मौजूद नियमों के लिए प्राथमिकता तय की जाती है.
- अगर एक से ज़्यादा एक्सटेंशन, किसी अनुरोध पर नियम लागू कर सकते हैं, तो उस अनुरोध से मेल खाने वाले सभी एक्सटेंशन के लिए प्राथमिकता तय की जाती है.
इस तरह से मैच करने के बारे में सोचें: जिस नियम को कोई एक्सटेंशन प्राथमिकता देता है उसे अन्य एक्सटेंशन के नियमों के मुकाबले प्राथमिकता दी जाएगी.
एक्सटेंशन में नियम की प्राथमिकता तय करना
एक ही एक्सटेंशन में प्राथमिकता तय करने के लिए, इस प्रोसेस का इस्तेमाल किया जाता है:
- डेवलपर की तय की गई सबसे ज़्यादा प्राथमिकता वाला नियम (दूसरे शब्दों में कहें, तो "priority"फ़ील्ड) दिखाया जाता है.
- अगर डेवलपर की तय की गई प्राथमिकता के हिसाब से एक से ज़्यादा नियम सबसे ऊपर हैं, तो नियमों को - "action"फ़ील्ड का इस्तेमाल करके इस क्रम में प्राथमिकता दी जाती है:- allow
- allowAllRequests
- block
- upgradeScheme
- redirect
 
- अगर कार्रवाई का टाइप - blockया- redirectनहीं है, तो मेल खाने वाले- modifyHeadersनियमों का आकलन किया जाता है. ध्यान दें कि अगर डेवलपर की तय की गई प्राथमिकता वाले किसी नियम की प्राथमिकता,- allowऔर- allowAllRequestsके लिए तय की गई प्राथमिकता से कम है, तो ऐसे नियमों को अनदेखा कर दिया जाता है.
- अगर कई नियम एक ही हेडर में बदलाव करते हैं, तो बदलाव, डेवलपर के तय किए गए - "priority"फ़ील्ड और तय की गई कार्रवाइयों के हिसाब से होता है.- अगर कोई नियम हेडर में जुड़ता है, तो कम प्राथमिकता वाले नियम सिर्फ़ उस हेडर में जुड़ सकते हैं. सेट करने और हटाने की कार्रवाइयों की अनुमति नहीं है.
- अगर कोई नियम हेडर सेट करता है, तो कम प्राथमिकता वाले नियम सिर्फ़ उस हेडर में जोड़े जा सकते हैं. इसके अलावा, कोई और बदलाव नहीं किया जा सकता.
- अगर कोई नियम हेडर हटा देता है, तो कम प्राथमिकता वाले नियम हेडर में आगे कोई बदलाव नहीं कर सकते.
 
एक्सटेंशन के बीच नियम की प्राथमिकता
अगर किसी अनुरोध से मेल खाने वाला नियम सिर्फ़ एक एक्सटेंशन में है, तो उस नियम को लागू किया जाता है. हालांकि, अगर एक से ज़्यादा एक्सटेंशन किसी अनुरोध से मैच करते हैं, तो इस प्रोसेस का इस्तेमाल किया जाता है:
- "action"फ़ील्ड का इस्तेमाल करके, नियमों को इस क्रम में प्राथमिकता दी जाती है:- block
- redirectया- upgradeScheme
- allowया- allowAllRequests
 
- अगर एक से ज़्यादा नियम मैच होते हैं, तो हाल ही में इंस्टॉल किए गए एक्सटेंशन को प्राथमिकता दी जाती है. 
नियम की सीमाएं
ब्राउज़र में नियमों को लोड करने और उनका आकलन करने में परफ़ॉर्मेंस पर असर पड़ता है. इसलिए, एपीआई का इस्तेमाल करते समय कुछ सीमाएं लागू होती हैं. सीमाएं, इस्तेमाल किए जा रहे नियम के हिसाब से तय होती हैं.
स्टैटिक नियम
स्टैटिक नियम वे होते हैं जो मेनिफ़ेस्ट फ़ाइल में बताए गए नियमों की फ़ाइलों में तय किए जाते हैं. कोई एक्सटेंशन, "rule_resources" मेनिफ़ेस्ट कुंजी के हिस्से के तौर पर ज़्यादा से ज़्यादा 50 स्टैटिक ruleset तय कर सकता है. हालांकि, इनमें से सिर्फ़ 10 ruleset एक बार में चालू किए जा सकते हैं. दूसरे को MAX_NUMBER_OF_ENABLED_STATIC_RULESETS कहा जाता है. इन सभी नियम सेट में, कम से कम 30,000 नियम होने की गारंटी है. इसे GUARANTEED_MINIMUM_STATIC_RULES कहा जाता है.
इसके बाद, उपलब्ध नियमों की संख्या इस बात पर निर्भर करती है कि उपयोगकर्ता के ब्राउज़र पर इंस्टॉल किए गए सभी एक्सटेंशन ने कितने नियम चालू किए हैं. getAvailableStaticRuleCount() को कॉल करके, रनटाइम के दौरान इस नंबर का पता लगाया जा सकता है. कोड के उदाहरण में जाकर, इसका उदाहरण देखा जा सकता है.
डाइनैमिक और सेशन के नियम
डाइनैमिक और सेशन के नियमों पर लागू होने वाली सीमाएं, स्टैटिक नियमों की तुलना में ज़्यादा आसान होती हैं. दोनों की कुल संख्या 5,000 से ज़्यादा नहीं हो सकती. इसे MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES कहा जाता है.
रेगुलर एक्सप्रेशन का इस्तेमाल करने वाले नियम
सभी तरह के नियमों में रेगुलर एक्सप्रेशन का इस्तेमाल किया जा सकता है. हालांकि, हर टाइप के रेगुलर एक्सप्रेशन वाले नियमों की कुल संख्या 1,000 से ज़्यादा नहीं हो सकती. इसे MAX_NUMBER_OF_REGEX_RULES कहा जाता है.
इसके अलावा, कंपाइल होने के बाद हर नियम का साइज़ 2 केबी से कम होना चाहिए. यह नियम के मुश्किल होने के हिसाब से तय होता है. अगर इस सीमा से ज़्यादा बड़ा नियम लोड करने की कोशिश की जाती है, तो आपको यहां दी गई चेतावनी दिखेगी. साथ ही, उस नियम को अनदेखा कर दिया जाएगा.
rules_1.json: Rule with id 1 specified a more complext regex than allowed
as part of the "regexFilter" key.
सर्विस वर्कर के साथ इंटरैक्शन
declarativeNetRequest सिर्फ़ उन अनुरोधों पर लागू होता है जो नेटवर्क स्टैक तक पहुंचते हैं. इसमें एचटीटीपी कैश से मिले रिस्पॉन्स शामिल हैं. हालांकि, इसमें वे रिस्पॉन्स शामिल नहीं हो सकते जो सर्विस वर्कर के onfetch हैंडलर से होकर गुज़रते हैं. declarativeNetRequest, सर्विस वर्कर से जनरेट हुए या CacheStorage से वापस लाए गए रिस्पॉन्स पर असर नहीं डालेगा. हालांकि, यह सर्विस वर्कर में किए गए 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, एक्सटेंशन में नियमों को किस तरह प्राथमिकता देता है. इनकी समीक्षा करते समय, प्राथमिकता तय करने के नियमों को अलग विंडो में खोला जा सकता है.
"priority" कुंजी
इन उदाहरणों के लिए, *://*.example.com/* करने के लिए होस्ट करने की अनुमति ज़रूरी है.
किसी यूआरएल की प्राथमिकता तय करने के लिए, डेवलपर की ओर से तय की गई "priority" कुंजी, "action" कुंजी, और "urlFilter" कुंजी देखें. इन उदाहरणों में, नीचे दिखाई गई उदाहरण के तौर पर दी गई नियम फ़ाइल का इस्तेमाल किया गया है.
- https://google.com पर नेविगेट करना
- इस यूआरएल पर दो नियम लागू होते हैं: आईडी 1 और 4 वाले नियम. आईडी 1 वाला नियम लागू होता है, क्योंकि "block"कार्रवाइयों की प्राथमिकता"redirect"कार्रवाइयों से ज़्यादा होती है. बाकी नियम लागू नहीं होते, क्योंकि वे लंबे यूआरएल के लिए हैं.
- https://google.com/1234 पर नेविगेट करना
- यूआरएल लंबा होने की वजह से, आईडी 2 वाला नियम अब आईडी 1 और 4 वाले नियमों के साथ भी मैच करता है. आईडी 2 वाला नियम लागू होता है, क्योंकि "allow"की प्राथमिकता"block"और"redirect"से ज़्यादा है.
- https://google.com/12345 पर नेविगेट करना
- ये चारों नियम इस यूआरएल से मेल खाते हैं. आईडी 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 से आने वाले किसी भी अनुरोध को इंटरसेप्ट किया जा सके. "transform" में मौजूद "transform" कुंजी से पता चलता है कि सबडोमेन पर रीडायरेक्ट करने के लिए हमेशा "https" का इस्तेमाल किया जाएगा."scheme"
{
  "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" को रीडायरेक्ट किए गए यूआरएल से कैप्चर किया जाता है और इसे सब्स्टिट्यूशन में रखा जाता है.
{
  "id": 1,
  "priority": 1,
  "action": {
    "type": "redirect",
    "redirect": {
      "regexSubstitution": "https://\\1.xyz.com/"
    }
  },
  "condition": {
    "regexFilter": "^https://www\\.(abc|def)\\.xyz\\.com/",
    "resourceTypes": [
      "main_frame"
    ]
  }
}
हेडर
यहां दिए गए उदाहरण में, मुख्य फ़्रेम और सभी सब-फ़्रेम से सभी कुकी हटाने का तरीका बताया गया है.
{
  "id": 1,
  "priority": 1,
  "action": {
    "type": "modifyHeaders",
    "requestHeaders": [{ "header": "cookie", "operation": "remove" }]
  },
  "condition": { "resourceTypes": ["main_frame", "sub_frame"] }
}
टाइप
DomainType
इससे पता चलता है कि अनुरोध, उस फ़्रेम के लिए पहले या तीसरे पक्ष का है जिसमें वह शुरू हुआ था. किसी अनुरोध को पहली पार्टी का अनुरोध तब कहा जाता है, जब उसका डोमेन (eTLD+1) उस फ़्रेम के डोमेन से मेल खाता हो जिसमें अनुरोध किया गया था.
Enum
"firstParty" 
 नेटवर्क अनुरोध, उस फ़्रेम के लिए फ़र्स्ट पार्टी है जिसमें वह शुरू हुआ था.
"thirdParty" 
 यह नेटवर्क अनुरोध, उस फ़्रेम के लिए तीसरे पक्ष का अनुरोध है जिसमें यह शुरू हुआ.
ExtensionActionOptions
प्रॉपर्टी
- 
    displayActionCountAsBadgeTextबूलियन ज़रूरी नहीं है क्या किसी पेज के लिए, एक्सटेंशन के बैज टेक्स्ट के तौर पर कार्रवाई की संख्या अपने-आप दिखानी है. यह प्राथमिकता सभी सेशन में बनी रहती है. 
- 
    tabUpdateTabActionCountUpdate ज़रूरी नहीं है Chrome 89 या इसके बाद का वर्शनटैब के ऐक्शन की संख्या को कैसे अडजस्ट किया जाना चाहिए, इसकी जानकारी. 
GetDisabledRuleIdsOptions
प्रॉपर्टी
- 
    rulesetIdस्ट्रिंग यह स्टैटिक Rulesetसे जुड़ा आईडी होता है.
GetRulesFilter
प्रॉपर्टी
- 
    ruleIdsnumber[] optional अगर यह विकल्प चुना जाता है, तो सिर्फ़ वे नियम शामिल किए जाते हैं जिनके आईडी मेल खाते हैं. 
HeaderInfo
प्रॉपर्टी
- 
    excludedValuesstring[] ज़रूरी नहीं अगर यह शर्त दी गई है, तो हेडर मौजूद होने पर भी यह शर्त पूरी नहीं होगी. हालांकि, इसकी वैल्यू में इस सूची का कम से कम एक एलिमेंट शामिल होना चाहिए. इसमें valuesके जैसा ही मैच पैटर्न सिंटैक्स इस्तेमाल किया जाता है.
- 
    हेडरस्ट्रिंग हेडर का नाम. यह शर्त, नाम से सिर्फ़ तब मेल खाती है, जब valuesऔरexcludedValues, दोनों को नहीं चुना गया हो.
- 
    valuesstring[] ज़रूरी नहीं अगर यह शर्त तय की जाती है, तो यह तब मैच होती है, जब हेडर की वैल्यू इस सूची में मौजूद कम से कम एक पैटर्न से मेल खाती हो. इससे हेडर वैल्यू को केस-इनसेंसिटिव तरीके से मैच किया जा सकता है. साथ ही, यहां दिए गए कंस्ट्रक्ट का इस्तेमाल किया जा सकता है: '*' : यह किसी भी संख्या के वर्णों से मेल खाता है. '?' : इससे शून्य या एक वर्ण का मिलान होता है. '*' और '?' को बैकस्लैश से एस्केप किया जा सकता है. उदाहरण के लिए, '\*' और '\?' 
HeaderOperation
इसमें "modifyHeaders" नियम के लिए संभावित कार्रवाइयों के बारे में बताया गया है.
Enum
"append" 
 यह तय किए गए हेडर के लिए नई एंट्री जोड़ता है. अनुरोध के हेडर में बदलाव करते समय, यह कार्रवाई सिर्फ़ कुछ हेडर के लिए की जा सकती है.
"set" 
 यह विकल्प, तय किए गए हेडर के लिए नई वैल्यू सेट करता है. साथ ही, एक ही नाम वाले मौजूदा हेडर हटा देता है.
"remove" 
 इससे तय किए गए हेडर की सभी एंट्री हट जाती हैं.
IsRegexSupportedResult
प्रॉपर्टी
- 
    isSupportedबूलियन 
- 
    वजहUnsupportedRegexReason optional इससे यह पता चलता है कि रेगुलर एक्सप्रेशन का इस्तेमाल क्यों नहीं किया जा सकता. यह वैल्यू सिर्फ़ तब दी जाती है, जब isSupportedएट्रिब्यूट की वैल्यू 'गलत है' पर सेट हो.
MatchedRule
प्रॉपर्टी
- 
    ruleIdसंख्या मिलते-जुलते नियम का आईडी. 
- 
    rulesetIdस्ट्रिंग उस Rulesetका आईडी जिससे यह नियम जुड़ा है. डाइनैमिक नियमों के सेट से बने नियम के लिए, यहDYNAMIC_RULESET_IDके बराबर होगा.
MatchedRuleInfo
प्रॉपर्टी
- 
    नियम
- 
    tabIdसंख्या अगर टैब अब भी चालू है, तो उस टैब का tabId जिससे अनुरोध किया गया था. अन्यथा -1. 
- 
    timeStampसंख्या नियम के मैच होने का समय. टाइमस्टैंप, समय के लिए JavaScript के नियमों के मुताबिक होंगे. इसका मतलब है कि ये टाइमस्टैंप, epoch के बाद से मिलीसेकंड की संख्या के तौर पर दिखेंगे. 
MatchedRuleInfoDebug
प्रॉपर्टी
- 
    CANNOT TRANSLATEउस अनुरोध के बारे में जानकारी जिससे नियम मैच हुआ. 
- 
    नियम
MatchedRulesFilter
प्रॉपर्टी
- 
    minTimeStampnumber ज़रूरी नहीं अगर यह टाइमस्टैंप दिया गया है, तो सिर्फ़ उस टाइमस्टैंप के बाद के नियमों से मैच करता है. 
- 
    tabIdnumber ज़रूरी नहीं अगर यह विकल्प चुना जाता है, तो सिर्फ़ दिए गए टैब के लिए नियमों से मेल खाने वाले नतीजे दिखाए जाते हैं. अगर इसे -1 पर सेट किया जाता है, तो यह उन नियमों से मेल खाता है जो किसी भी चालू टैब से नहीं जुड़े हैं. 
ModifyHeaderInfo
प्रॉपर्टी
- 
    हेडरस्ट्रिंग बदलाव किए जाने वाले हेडर का नाम. 
- 
    कार्रवाईहेडर पर की जाने वाली कार्रवाई. 
- 
    मानstring ज़रूरी नहीं है हेडर के लिए नई वैल्यू. appendऔरsetकार्रवाइयों के लिए, इसे तय करना ज़रूरी है.
QueryKeyValue
प्रॉपर्टी
- 
    बटनस्ट्रिंग 
- 
    replaceOnlyबूलियन ज़रूरी नहीं है Chrome 94 या इसके बाद का वर्शनअगर यह वैल्यू सही है, तो क्वेरी कुंजी को सिर्फ़ तब बदला जाता है, जब वह पहले से मौजूद हो. अगर ऐसा नहीं होता है, तो कुंजी को भी जोड़ा जाता है. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है. 
- 
    मानस्ट्रिंग 
QueryTransform
प्रॉपर्टी
- 
    addOrReplaceParamsQueryKeyValue[] optional जोड़े जाने वाले या बदले जाने वाले क्वेरी की-वैल्यू पेयर की सूची. 
- 
    removeParamsstring[] ज़रूरी नहीं हटाए जाने वाली क्वेरी कुंजियों की सूची. 
Redirect
प्रॉपर्टी
- 
    extensionPathstring ज़रूरी नहीं है एक्सटेंशन डायरेक्ट्री के हिसाब से पाथ. यह '/' से शुरू होना चाहिए. 
- 
    regexSubstitutionstring ज़रूरी नहीं है regexFilterके बारे में बताने वाले नियमों के लिए सबस्टिट्यूशन पैटर्न. यूआरएल मेंregexFilterके पहले मैच को इस पैटर्न से बदल दिया जाएगा.regexSubstitutionमें, बैकस्लैश से शुरू होने वाले अंक (\1 से \9) इस्तेमाल किए जा सकते हैं, ताकि कैप्चर ग्रुप डाले जा सकें. \0 का मतलब, मेल खाने वाला पूरा टेक्स्ट होता है.
- 
    रूपांतरित करेंURLTransform ज़रूरी नहीं है यूआरएल में किए जाने वाले ट्रांसफ़ॉर्मेशन. 
- 
    urlstring ज़रूरी नहीं है रीडायरेक्ट करने वाला यूआरएल. JavaScript यूआरएल पर रीडायरेक्ट करने की अनुमति नहीं है. 
RegexOptions
प्रॉपर्टी
- 
    isCaseSensitiveबूलियन ज़रूरी नहीं है regexमें दिया गया कॉन्टेंट केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) है या नहीं. यह डिफ़ॉल्ट रूप से 'सही' पर सेट होती है.
- 
    रेगुलर एक्सप्रेशनस्ट्रिंग जांच करने के लिए रेगुलर एक्सप्रेशन. 
- 
    requireCapturingबूलियन ज़रूरी नहीं है क्या बताई गई regexको कैप्चर करना ज़रूरी है. रीडायरेक्ट करने के नियमों के लिए ही कैप्चर करना ज़रूरी है. इन नियमों मेंregexSubstitionकार्रवाई के बारे में बताया जाता है. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होता है.
RequestDetails
प्रॉपर्टी
- 
    documentIdstring ज़रूरी नहीं है Chrome 106 और इसके बाद के वर्शनअगर यह अनुरोध किसी फ़्रेम के लिए है, तो फ़्रेम के दस्तावेज़ के लिए यूनीक आइडेंटिफ़ायर. 
- 
    documentLifecycleDocumentLifecycle ज़रूरी नहीं है Chrome 106 और इसके बाद के वर्शनअगर यह अनुरोध किसी फ़्रेम के लिए है, तो फ़्रेम के दस्तावेज़ का लाइफ़साइकल. 
- 
    frameIdसंख्या वैल्यू 0 से पता चलता है कि अनुरोध मुख्य फ़्रेम में किया गया है. पॉज़िटिव वैल्यू से पता चलता है कि अनुरोध किस सबफ़्रेम में किया गया है. अगर किसी (सब-)फ़्रेम का दस्तावेज़ लोड किया जाता है ( typeहैmain_frameयाsub_frame), तोframeIdइस फ़्रेम का आईडी दिखाता है, न कि आउटर फ़्रेम का आईडी. फ़्रेम आईडी, किसी टैब में यूनीक होते हैं.
- 
    frameTypeFrameType optional Chrome 106 और इसके बाद के वर्शनअगर यह अनुरोध किसी फ़्रेम के लिए है, तो फ़्रेम का टाइप. 
- 
    शुरू करने वालाstring ज़रूरी नहीं है वह ऑरिजिन जहां से अनुरोध शुरू किया गया था. रीडाइरेक्ट करने पर, इसमें कोई बदलाव नहीं होता. अगर यह ओपेक ऑरिजिन है, तो 'null' स्ट्रिंग का इस्तेमाल किया जाएगा. 
- 
    तरीकास्ट्रिंग यह एक स्टैंडर्ड एचटीटीपी मेथड है. 
- 
    parentDocumentIdstring ज़रूरी नहीं है Chrome 106 और इसके बाद के वर्शनअगर यह अनुरोध किसी फ़्रेम के लिए है और उसका कोई पैरंट है, तो फ़्रेम के पैरंट दस्तावेज़ के लिए यूनीक आइडेंटिफ़ायर. 
- 
    parentFrameIdसंख्या उस फ़्रेम का आईडी जो अनुरोध भेजने वाले फ़्रेम को रैप करता है. अगर कोई पैरंट फ़्रेम मौजूद नहीं है, तो इसे -1 पर सेट किया जाता है. 
- 
    requestIdस्ट्रिंग अनुरोध का आईडी. अनुरोध आईडी, ब्राउज़र के किसी सेशन में यूनीक होते हैं. 
- 
    tabIdसंख्या उस टैब का आईडी जिसमें अनुरोध किया गया है. अगर अनुरोध किसी टैब से जुड़ा नहीं है, तो इसे -1 पर सेट करें. 
- 
    टाइपअनुरोध किए गए संसाधन का टाइप. 
- 
    urlस्ट्रिंग अनुरोध का यूआरएल. 
RequestMethod
इससे नेटवर्क अनुरोध के एचटीटीपी अनुरोध के तरीके के बारे में पता चलता है.
Enum
"connect" 
 
"delete" 
 
"get" 
 
"head" 
 
"options" 
 
"patch" 
 
"post" 
 
"put" 
 
"other" 
 
ResourceType
इससे नेटवर्क अनुरोध के संसाधन टाइप के बारे में पता चलता है.
Enum
"main_frame" 
 
"sub_frame" 
 
"stylesheet" 
 
"script" 
 
"image" 
 
"font" 
 
"object" 
 
"xmlhttprequest" 
 
"ping" 
 
"csp_report" 
 
"media" 
 
"websocket" 
 
"webtransport" 
 
"webbundle" 
 
"other" 
 
Rule
प्रॉपर्टी
- 
    ऐक्शन गेमइस नियम के मैच होने पर की जाने वाली कार्रवाई. 
- 
    शर्तवह शर्त जिसके पूरा होने पर यह नियम ट्रिगर होता है. 
- 
    आईडीसंख्या यह एक ऐसा आईडी होता है जो किसी नियम की खास तौर पर पहचान करता है. यह ज़रूरी है और इसकी वैल्यू 1 या इससे ज़्यादा होनी चाहिए. 
- 
    प्राथमिकताnumber ज़रूरी नहीं नियम की प्राथमिकता. डिफ़ॉल्ट वैल्यू 1 होती है. यह वैल्यू, 1 या इससे ज़्यादा होनी चाहिए. 
RuleAction
प्रॉपर्टी
- 
    रीडायरेक्ट करोरीडायरेक्ट ज़रूरी नहीं इससे पता चलता है कि रीडायरेक्ट कैसे किया जाना चाहिए. यह सिर्फ़ रीडायरेक्ट करने के नियमों के लिए मान्य है. 
- 
    requestHeadersModifyHeaderInfo[] optional Chrome 86 या इसके बाद का वर्शनअनुरोध के लिए, अनुरोध के हेडर में बदलाव करने का अनुरोध. यह सिर्फ़ तब मान्य होता है, जब RuleActionType "modifyHeaders" हो. 
- 
    responseHeadersModifyHeaderInfo[] optional Chrome 86 या इसके बाद का वर्शनअनुरोध के लिए, जवाब के हेडर में बदलाव करना. यह सिर्फ़ तब मान्य होता है, जब RuleActionType "modifyHeaders" हो. 
- 
    टाइपकार्रवाई किस तरह की है. 
RuleActionType
इससे यह पता चलता है कि अगर कोई RuleCondition मेल खाती है, तो किस तरह की कार्रवाई की जानी चाहिए.
Enum
"block" 
 नेटवर्क अनुरोध को ब्लॉक करें.
"redirect" 
 नेटवर्क अनुरोध को रीडायरेक्ट करता है.
"allow" 
 नेटवर्क अनुरोध को अनुमति दें. अगर अनुमति देने वाला कोई ऐसा नियम मौजूद है जो अनुरोध से मेल खाता है, तो अनुरोध को इंटरसेप्ट नहीं किया जाएगा.
"upgradeScheme" 
 अगर अनुरोध एचटीटीपी या एफ़टीपी है, तो नेटवर्क अनुरोध के यूआरएल की स्कीम को एचटीटीपीएस पर अपग्रेड करें.
"modifyHeaders" 
 नेटवर्क अनुरोध से अनुरोध/जवाब के हेडर में बदलाव करें.
"allowAllRequests" 
 फ़्रेम के अनुरोध के साथ-साथ, फ़्रेम के क्रम में मौजूद सभी अनुरोधों को अनुमति दें.
RuleCondition
प्रॉपर्टी
- 
    domainTypeDomainType optional इससे पता चलता है कि नेटवर्क अनुरोध, उस डोमेन के लिए पहले पक्ष का है या तीसरे पक्ष का जिससे वह शुरू हुआ है. अगर इसे शामिल नहीं किया जाता है, तो सभी अनुरोध स्वीकार कर लिए जाते हैं. 
- 
    डोमेनstring[] ज़रूरी नहीं Chrome 101 से बंद कर दिया गया हैइसके बजाय, initiatorDomainsका इस्तेमाल करेंयह नियम, सिर्फ़ domainsकी सूची से जनरेट होने वाले नेटवर्क अनुरोधों से मैच करेगा.
- 
    excludedDomainsstring[] ज़रूरी नहीं Chrome 101 से बंद कर दिया गया हैइसके बजाय, excludedInitiatorDomainsका इस्तेमाल करेंयह नियम, excludedDomainsकी सूची से आने वाले नेटवर्क अनुरोधों से मेल नहीं खाएगा.
- 
    excludedInitiatorDomainsstring[] ज़रूरी नहीं Chrome 101 या इसके बाद के वर्शनयह नियम, excludedInitiatorDomainsकी सूची से आने वाले नेटवर्क अनुरोधों से मेल नहीं खाएगा. अगर सूची खाली है या इसे शामिल नहीं किया गया है, तो किसी भी डोमेन को बाहर नहीं रखा जाता है. इसेinitiatorDomainsसे ज़्यादा प्राथमिकता दी जाती है.ध्यान दें: - "a.example.com" जैसे सब-डोमेन भी इस्तेमाल किए जा सकते हैं.
- एंट्री में सिर्फ़ ASCII वर्ण होने चाहिए.
- अंतरराष्ट्रीय डोमेन के लिए, प्यूनीकोड एन्कोडिंग का इस्तेमाल करें.
- यह अनुरोध शुरू करने वाले व्यक्ति से मैच करता है, न कि अनुरोध के यूआरएल से.
- सूची में शामिल डोमेन के सब-डोमेन को भी बाहर रखा जाता है.
 
- 
    excludedRequestDomainsstring[] ज़रूरी नहीं Chrome 101 या इसके बाद के वर्शनजब डोमेन, excludedRequestDomainsकी सूची में मौजूद किसी डोमेन से मेल खाता है, तब यह नियम नेटवर्क अनुरोधों से मेल नहीं खाएगा. अगर सूची खाली है या इसे शामिल नहीं किया गया है, तो किसी भी डोमेन को बाहर नहीं रखा जाता है. इसेrequestDomainsसे ज़्यादा प्राथमिकता दी जाती है.ध्यान दें: - "a.example.com" जैसे सब-डोमेन भी इस्तेमाल किए जा सकते हैं.
- एंट्री में सिर्फ़ ASCII वर्ण होने चाहिए.
- अंतरराष्ट्रीय डोमेन के लिए, प्यूनीकोड एन्कोडिंग का इस्तेमाल करें.
- सूची में शामिल डोमेन के सब-डोमेन को भी बाहर रखा जाता है.
 
- 
    excludedRequestMethodsRequestMethod[] optional Chrome 91 या इसके बाद के वर्शनअनुरोध के उन तरीकों की सूची जिनसे नियम मैच नहीं करेगा. requestMethodsऔरexcludedRequestMethodsमें से सिर्फ़ एक को तय करना है. अगर इनमें से किसी को भी नहीं चुना जाता है, तो अनुरोध के सभी तरीकों को मैच किया जाता है.
- 
    excludedResourceTypesResourceType[] optional उन संसाधन टाइप की सूची जिनसे यह नियम मेल नहीं खाएगा. resourceTypesऔरexcludedResourceTypesमें से सिर्फ़ एक को तय करना है. अगर इनमें से किसी भी विकल्प को नहीं चुना जाता है, तो "main_frame" को छोड़कर सभी संसाधन टाइप ब्लॉक कर दिए जाते हैं.
- 
    excludedResponseHeadersHeaderInfo[] optional Chrome 128 या इसके बाद के वर्शनअगर अनुरोध, इस सूची में दिए गए किसी भी रिस्पॉन्स हेडर की शर्त से मेल खाता है, तो नियम लागू नहीं होगा. हालांकि, ऐसा तब होगा, जब सूची में कोई शर्त दी गई हो. अगर excludedResponseHeadersऔरresponseHeaders, दोनों को शामिल किया जाता है, तोexcludedResponseHeadersप्रॉपर्टी को प्राथमिकता दी जाती है.
- 
    excludedTabIdsnumber[] optional Chrome 92 या इसके बाद का वर्शनtabs.Tab.idकी वह सूची जिससे नियम को मैच नहीं करना चाहिए.tabs.TAB_ID_NONEआईडी में, ऐसे अनुरोध शामिल नहीं होते हैं जो किसी टैब से नहीं किए गए हैं. यह सुविधा सिर्फ़ सेशन के दायरे वाले नियमों के साथ काम करती है.
- 
    initiatorDomainsstring[] ज़रूरी नहीं Chrome 101 या इसके बाद के वर्शनयह नियम, सिर्फ़ initiatorDomainsकी सूची से जनरेट होने वाले नेटवर्क अनुरोधों से मैच करेगा. अगर सूची शामिल नहीं की जाती है, तो यह नियम सभी डोमेन से किए गए अनुरोधों पर लागू होता है. खाली सूची की अनुमति नहीं है.ध्यान दें: - "a.example.com" जैसे सब-डोमेन भी इस्तेमाल किए जा सकते हैं.
- एंट्री में सिर्फ़ ASCII वर्ण होने चाहिए.
- अंतरराष्ट्रीय डोमेन के लिए, प्यूनीकोड एन्कोडिंग का इस्तेमाल करें.
- यह अनुरोध शुरू करने वाले व्यक्ति से मैच करता है, न कि अनुरोध के यूआरएल से.
- सूची में शामिल डोमेन के सब-डोमेन भी मैच किए जाते हैं.
 
- 
    isUrlFilterCaseSensitiveबूलियन ज़रूरी नहीं है urlFilterयाregexFilter(जो भी एट्रिब्यूट दिया गया है) केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) है या नहीं. डिफ़ॉल्ट रूप से, यह 'गलत' पर सेट होती है.
- 
    regexFilterstring ज़रूरी नहीं है नेटवर्क अनुरोध के यूआरएल से मेल खाने के लिए रेगुलर एक्सप्रेशन. यह RE2 सिंटैक्स के मुताबिक है. ध्यान दें: urlFilterयाregexFilterमें से सिर्फ़ एक को चुना जा सकता है.ध्यान दें: regexFilterमें सिर्फ़ ASCII वर्ण होने चाहिए. इसे ऐसे यूआरएल से मैच किया जाता है जिसमें होस्ट को punycode फ़ॉर्मैट में एन्कोड किया गया हो (अंतरराष्ट्रीय डोमेन के मामले में). साथ ही, किसी भी अन्य नॉन-आस्की वर्ण को utf-8 में यूआरएल एन्कोड किया गया हो.
- 
    requestDomainsstring[] ज़रूरी नहीं Chrome 101 या इसके बाद के वर्शनयह नियम, नेटवर्क अनुरोधों से सिर्फ़ तब मैच करेगा, जब डोमेन, requestDomainsकी सूची में मौजूद किसी डोमेन से मैच करेगा. अगर सूची शामिल नहीं की जाती है, तो यह नियम सभी डोमेन से किए गए अनुरोधों पर लागू होता है. खाली सूची की अनुमति नहीं है.ध्यान दें: - "a.example.com" जैसे सब-डोमेन भी इस्तेमाल किए जा सकते हैं.
- एंट्री में सिर्फ़ ASCII वर्ण होने चाहिए.
- अंतरराष्ट्रीय डोमेन के लिए, प्यूनीकोड एन्कोडिंग का इस्तेमाल करें.
- सूची में शामिल डोमेन के सब-डोमेन भी मैच किए जाते हैं.
 
- 
    requestMethodsRequestMethod[] optional Chrome 91 या इसके बाद के वर्शनएचटीटीपी अनुरोध के उन तरीकों की सूची जिनसे नियम मैच कर सकता है. खाली सूची की अनुमति नहीं है. ध्यान दें: requestMethodsनियम की शर्त तय करने पर, एचटीटीपी(एस) के अलावा अन्य अनुरोध भी शामिल नहीं किए जाएंगे. हालांकि,excludedRequestMethodsतय करने पर ऐसा नहीं होगा.
- 
    resourceTypesResourceType[] optional संसाधन टाइप की सूची, जिनसे नियम मैच कर सकता है. खाली सूची की अनुमति नहीं है. ध्यान दें: इसे allowAllRequestsनियमों के लिए तय करना ज़रूरी है. इसमें सिर्फ़sub_frameऔरmain_frameसंसाधन टाइप शामिल हो सकते हैं.
- 
    responseHeadersHeaderInfo[] optional Chrome 128 या इसके बाद के वर्शनअगर अनुरोध, इस सूची में दी गई किसी भी रिस्पॉन्स हेडर की शर्त से मेल खाता है, तो नियम मैच हो जाता है. हालांकि, ऐसा तब होता है, जब सूची में कोई शर्त दी गई हो. 
- 
    tabIdsnumber[] optional Chrome 92 या इसके बाद का वर्शनtabs.Tab.idकी सूची, जिससे नियम मेल खाना चाहिए.tabs.TAB_ID_NONEका आईडी, उन अनुरोधों से मेल खाता है जो किसी टैब से नहीं किए गए हैं. खाली सूची की अनुमति नहीं है. यह सुविधा सिर्फ़ सेशन के दायरे वाले नियमों के साथ काम करती है.
- 
    urlFilterstring ज़रूरी नहीं है यह पैटर्न, नेटवर्क अनुरोध के यूआरएल से मेल खाता है. इन स्ट्रक्चर के साथ काम करता है: '*' : वाइल्डकार्ड: यह किसी भी संख्या के वर्णों से मेल खाता है. '|' : लेफ्ट/राइट ऐंकर: अगर इसका इस्तेमाल पैटर्न के किसी भी हिस्से में किया जाता है, तो यह यूआरएल की शुरुआत/आखिर को दिखाता है. '||' : डोमेन नेम ऐंकर: अगर इसका इस्तेमाल पैटर्न की शुरुआत में किया जाता है, तो यह यूआरएल के (सब-)डोमेन की शुरुआत के बारे में बताता है. '^' : सेपरेटर वर्ण: यह किसी भी वर्ण से मेल खाता है. हालांकि, यह किसी अक्षर, अंक या इनमें से किसी वर्ण से मेल नहीं खाता: _,-,.या%. यह यूआरएल के आखिरी हिस्से से भी मैच करता है.इसलिए, urlFilterमें ये शामिल होते हैं: (लेफ़्ट ऐंकर/डोमेन नाम ऐंकर, यह ज़रूरी नहीं है) + पैटर्न + (राइट ऐंकर, यह ज़रूरी नहीं है).अगर इसे शामिल नहीं किया जाता है, तो सभी यूआरएल मैच किए जाते हैं. खाली स्ट्रिंग की अनुमति नहीं है. ||*से शुरू होने वाले पैटर्न की अनुमति नहीं है. इसके बजाय,*का इस्तेमाल करें.ध्यान दें: urlFilterयाregexFilterमें से सिर्फ़ एक को चुना जा सकता है.ध्यान दें: urlFilterमें सिर्फ़ ASCII वर्ण होने चाहिए. इसे ऐसे यूआरएल से मैच किया जाता है जिसमें होस्ट को punycode फ़ॉर्मैट में एन्कोड किया गया हो (अंतरराष्ट्रीय डोमेन के मामले में). साथ ही, किसी भी अन्य नॉन-आस्की वर्ण को utf-8 में यूआरएल एन्कोड किया गया हो. उदाहरण के लिए, जब अनुरोध यूआरएल http://abc.рф?q=ф होता है, तबurlFilterका मिलान http://abc.xn--p1ai/?q=%D1%84 यूआरएल से किया जाएगा.
Ruleset
प्रॉपर्टी
- 
    चालू किया गयाबूलियन यह बताता है कि नियमों का सेट डिफ़ॉल्ट रूप से चालू है या नहीं. 
- 
    आईडीस्ट्रिंग यह एक ऐसी स्ट्रिंग होती है जिसमें कोई वैल्यू मौजूद होती है. इससे नियमों के सेट की खास तौर पर पहचान की जाती है. '_' से शुरू होने वाले आईडी, सिर्फ़ अंदरूनी इस्तेमाल के लिए रिज़र्व किए गए हैं. 
- 
    पाथस्ट्रिंग एक्सटेंशन डायरेक्ट्री के हिसाब से, JSON फ़ॉर्मैट वाले नियमों के सेट का पाथ. 
RulesMatchedDetails
प्रॉपर्टी
- 
    rulesMatchedInfoदिए गए फ़िल्टर से मैच करने वाले नियम. 
TabActionCountUpdate
प्रॉपर्टी
- 
    अधिकसंख्या टैब के ऐक्शन की संख्या में बढ़ोतरी करने की रकम. नेगेटिव वैल्यू से गिनती कम हो जाएगी. 
- 
    tabIdसंख्या वह टैब जिसके लिए ऐक्शन की संख्या अपडेट करनी है. 
TestMatchOutcomeResult
प्रॉपर्टी
- 
    matchedRulesकाल्पनिक अनुरोध से मेल खाने वाले नियम (अगर कोई हो). 
TestMatchRequestDetails
प्रॉपर्टी
- 
    शुरू करने वालाstring ज़रूरी नहीं है काल्पनिक अनुरोध के लिए, अनुरोध शुरू करने वाले का यूआरएल (अगर कोई हो). 
- 
    तरीकाRequestMethod ज़रूरी नहीं है यह काल्पनिक अनुरोध का स्टैंडर्ड एचटीटीपी तरीका है. एचटीटीपी अनुरोधों के लिए, यह डिफ़ॉल्ट रूप से "get" पर सेट होता है. साथ ही, गैर-एचटीटीपी अनुरोधों के लिए इसे अनदेखा कर दिया जाता है. 
- 
    responseHeadersobject ज़रूरी नहीं है Chrome 129 और इसके बाद के वर्शनअगर अनुरोध को भेजने से पहले ब्लॉक या रीडायरेक्ट नहीं किया जाता है, तो काल्पनिक जवाब से मिले हेडर. इसे एक ऑब्जेक्ट के तौर पर दिखाया जाता है. यह ऑब्जेक्ट, हेडर के नाम को स्ट्रिंग वैल्यू की सूची से मैप करता है. अगर यह जानकारी नहीं दी जाती है, तो काल्पनिक जवाब में खाली रिस्पॉन्स हेडर दिखेंगे. ये ऐसे नियमों से मेल खा सकते हैं जो हेडर के मौजूद न होने पर लागू होते हैं. उदा. {"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}
- 
    tabIdnumber ज़रूरी नहीं उस टैब का आईडी जिसमें हाइपोथेटिकल अनुरोध किया जाता है. इसका किसी असली टैब आईडी से मेल खाना ज़रूरी नहीं है. डिफ़ॉल्ट वैल्यू -1 होती है. इसका मतलब है कि अनुरोध किसी टैब से जुड़ा नहीं है. 
- 
    टाइपकाल्पनिक अनुरोध का संसाधन टाइप. 
- 
    urlस्ट्रिंग काल्पनिक अनुरोध का यूआरएल. 
UnsupportedRegexReason
इस वजह के बारे में बताता है कि दिए गए रेगुलर एक्सप्रेशन का इस्तेमाल क्यों नहीं किया जा सकता.
Enum
"syntaxError" 
 रेगुलर एक्सप्रेशन का सिंटैक्स गलत है या इसमें ऐसी सुविधाओं का इस्तेमाल किया गया है जो RE2 सिंटैक्स में उपलब्ध नहीं हैं.
"memoryLimitExceeded" 
 रेगुलर एक्सप्रेशन, मेमोरी की सीमा से ज़्यादा है.
UpdateRuleOptions
प्रॉपर्टी
- 
    addRulesRule[] optional जोड़ने के लिए नियम. 
- 
    removeRuleIdsnumber[] optional हटाए जाने वाले नियमों के आईडी. अमान्य आईडी को अनदेखा कर दिया जाएगा. 
UpdateRulesetOptions
प्रॉपर्टी
UpdateStaticRulesOptions
प्रॉपर्टी
URLTransform
प्रॉपर्टी
- 
    फ़्रैगमेंटstring ज़रूरी नहीं है अनुरोध के लिए नया फ़्रैगमेंट. यह खाली होना चाहिए. ऐसा होने पर, मौजूदा फ़्रैगमेंट मिट जाता है. इसके अलावा, यह '#' से शुरू होना चाहिए. 
- 
    होस्टstring ज़रूरी नहीं है अनुरोध के लिए नया होस्ट. 
- 
    पासवर्डstring ज़रूरी नहीं है अनुरोध के लिए नया पासवर्ड. 
- 
    पाथstring ज़रूरी नहीं है अनुरोध के लिए नया पाथ. अगर यह खाली है, तो मौजूदा पाथ मिटा दिया जाता है. 
- 
    पोर्टstring ज़रूरी नहीं है अनुरोध के लिए नया पोर्ट. अगर यह फ़ील्ड खाली है, तो मौजूदा पोर्ट को हटा दिया जाता है. 
- 
    क्वेरीstring ज़रूरी नहीं है अनुरोध के लिए नई क्वेरी. यह खाली होना चाहिए. ऐसा होने पर, मौजूदा क्वेरी मिटा दी जाती है. इसके अलावा, यह '?' से शुरू होना चाहिए. 
- 
    queryTransformQueryTransform ज़रूरी नहीं है क्वेरी के की-वैल्यू पेयर जोड़ें, हटाएं या बदलें. 
- 
    स्कीमstring ज़रूरी नहीं है अनुरोध के लिए नई स्कीम. इन वैल्यू का इस्तेमाल किया जा सकता है: "http", "https", "ftp", और "chrome-extension". 
- 
    उपयोगकर्ता नामstring ज़रूरी नहीं है अनुरोध के लिए नया उपयोगकर्ता नाम. 
प्रॉपर्टी
DYNAMIC_RULESET_ID
एक्सटेंशन के ज़रिए जोड़े गए डाइनैमिक नियमों के लिए, नियमों के सेट का आईडी.
मान
"_dynamic" 
 
GETMATCHEDRULES_QUOTA_INTERVAL
यह वह समयावधि होती है जिसमें MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules कॉल किए जा सकते हैं. इसे मिनटों में दिखाया जाता है. इसके बाद किए जाने वाले कॉल तुरंत फ़ेल हो जाएंगे और runtime.lastError के तौर पर सेट हो जाएंगे. ध्यान दें: उपयोगकर्ता के जेस्चर से जुड़े getMatchedRules कॉल, कोटे से बाहर रखे जाते हैं.
मान
10 
 
GUARANTEED_MINIMUM_STATIC_RULES
यह एक्सटेंशन के लिए, चालू किए गए स्टैटिक नियमों के सेट में कम से कम स्टैटिक नियमों की संख्या होती है. इस सीमा से ज़्यादा के सभी नियमों को ग्लोबल स्टैटिक नियम की सीमा में गिना जाएगा.
मान
30000 
 
MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL
GETMATCHEDRULES_QUOTA_INTERVAL की अवधि में getMatchedRules को इतनी बार कॉल किया जा सकता है.
मान
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
एक्सटेंशन, "rule_resources" मेनिफ़ेस्ट कुंजी के हिस्से के तौर पर ज़्यादा से ज़्यादा Rulesets स्टैटिक इमेज तय कर सकता है.
मान
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,
): Promise<number>
इससे यह पता चलता है कि एक्सटेंशन, स्टैटिक नियमों की ग्लोबल सीमा तक पहुंचने से पहले, कितने स्टैटिक नियमों को चालू कर सकता है.
पैरामीटर
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(count: number) => void - 
    सोलर पैनलों की संख्यासंख्या 
 
- 
    
रिटर्न
- 
            Promise<number> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
getDisabledRuleIds()
chrome.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
callback?: function,
): Promise<number[]>
यह फ़ंक्शन, दिए गए Ruleset में मौजूद उन स्टैटिक नियमों की सूची दिखाता है जो फ़िलहाल बंद हैं.
पैरामीटर
- 
    विकल्पक्वेरी करने के लिए नियमों का सेट तय करता है. 
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(disabledRuleIds: number[]) => void - 
    disabledRuleIdsnumber[] 
 
- 
    
रिटर्न
- 
            Promise<number[]> प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
getDynamicRules()
chrome.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
callback?: function,
): Promise<Rule[]>
यह एक्सटेंशन के लिए, डाइनैमिक नियमों का मौजूदा सेट दिखाता है. कॉल करने वाले लोग, फ़ेच किए गए नियमों की सूची को फ़िल्टर कर सकते हैं. इसके लिए, उन्हें filter तय करना होगा.
पैरामीटर
- 
    फ़िल्टर करेंGetRulesFilter ज़रूरी नहीं है Chrome 111 या इसके बाद का वर्शनफ़ेच किए गए नियमों की सूची को फ़िल्टर करने के लिए कोई ऑब्जेक्ट. 
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(rules: Rule[]) => void - 
    नियमRule[] 
 
- 
    
रिटर्न
- 
            Promise<Rule[]> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
getEnabledRulesets()
chrome.declarativeNetRequest.getEnabledRulesets(
callback?: function,
): Promise<string[]>
चालू किए गए स्टैटिक नियमों के मौजूदा सेट के आईडी दिखाता है.
पैरामीटर
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(rulesetIds: string[]) => void - 
    rulesetIdsstring[] 
 
- 
    
रिटर्न
- 
            Promise<string[]> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
getMatchedRules()
chrome.declarativeNetRequest.getMatchedRules(
filter?: MatchedRulesFilter,
callback?: function,
): Promise<RulesMatchedDetails>
यह एक्सटेंशन से मेल खाने वाले सभी नियमों को दिखाता है. कॉल करने वाले लोग, मैच किए गए नियमों की सूची को फ़िल्टर कर सकते हैं. इसके लिए, उन्हें filter तय करना होगा. यह तरीका सिर्फ़ उन एक्सटेंशन के लिए उपलब्ध है जिनके पास "declarativeNetRequestFeedback" की अनुमति है या जिन्हें filter में बताए गए tabId के लिए "activeTab" की अनुमति दी गई है. ध्यान दें: अगर कोई नियम किसी ऐसे दस्तावेज़ से जुड़ा है जो चालू नहीं है और उसका मिलान पांच मिनट से ज़्यादा समय पहले हुआ था, तो उसे वापस नहीं लाया जा सकेगा.
पैरामीटर
- 
    फ़िल्टर करेंMatchedRulesFilter ज़रूरी नहीं है मिलते-जुलते नियमों की सूची को फ़िल्टर करने के लिए ऑब्जेक्ट. 
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(details: RulesMatchedDetails) => void - 
    विवरण
 
- 
    
रिटर्न
- 
            Promise<RulesMatchedDetails> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
getSessionRules()
chrome.declarativeNetRequest.getSessionRules(
filter?: GetRulesFilter,
callback?: function,
): Promise<Rule[]>
यह एक्सटेंशन के लिए, सेशन के स्कोप वाले नियमों का मौजूदा सेट दिखाता है. कॉल करने वाले लोग, फ़ेच किए गए नियमों की सूची को फ़िल्टर कर सकते हैं. इसके लिए, उन्हें filter तय करना होगा.
पैरामीटर
- 
    फ़िल्टर करेंGetRulesFilter ज़रूरी नहीं है Chrome 111 या इसके बाद का वर्शनफ़ेच किए गए नियमों की सूची को फ़िल्टर करने के लिए कोई ऑब्जेक्ट. 
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(rules: Rule[]) => void - 
    नियमRule[] 
 
- 
    
रिटर्न
- 
            Promise<Rule[]> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
isRegexSupported()
chrome.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
callback?: function,
): Promise<IsRegexSupportedResult>
यह फ़ंक्शन, यह जांच करता है कि दिया गया रेगुलर एक्सप्रेशन, regexFilter के नियम की शर्त के तौर पर इस्तेमाल किया जा सकता है या नहीं.
पैरामीटर
- 
    regexOptionsजांच करने के लिए रेगुलर एक्सप्रेशन. 
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(result: IsRegexSupportedResult) => void - 
    नतीजा
 
- 
    
रिटर्न
- 
            Promise<IsRegexSupportedResult> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
setExtensionActionOptions()
chrome.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
callback?: function,
): Promise<void>
इस कुकी से यह कॉन्फ़िगर किया जाता है कि टैब के लिए ऐक्शन की संख्या को एक्सटेंशन ऐक्शन के बैज टेक्स्ट के तौर पर दिखाया जाना चाहिए या नहीं. साथ ही, यह ऐक्शन की संख्या को बढ़ाने का तरीका भी उपलब्ध कराती है.
पैरामीटर
- 
    विकल्प
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं Chrome 89 या इसके बाद का वर्शनcallbackपैरामीटर ऐसा दिखता है:() => void 
रिटर्न
- 
            Promise<void> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
testMatchOutcome()
chrome.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
callback?: function,
): Promise<TestMatchOutcomeResult>
इस फ़ंक्शन से यह पता चलता है कि एक्सटेंशन के declarativeNetRequest नियमों में से कोई नियम, काल्पनिक अनुरोध से मेल खाता है या नहीं. ध्यान दें: यह सुविधा सिर्फ़ अनपैक किए गए एक्सटेंशन के लिए उपलब्ध है, क्योंकि इसका इस्तेमाल सिर्फ़ एक्सटेंशन डेवलपमेंट के दौरान किया जाना चाहिए.
पैरामीटर
- 
    CANNOT TRANSLATE
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:(result: TestMatchOutcomeResult) => void - 
    नतीजा
 
- 
    
रिटर्न
- 
            Promise<TestMatchOutcomeResult> प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
updateDynamicRules()
chrome.declarativeNetRequest.updateDynamicRules(
options: UpdateRuleOptions,
callback?: function,
): Promise<void>
यह एक्सटेंशन के लिए, डाइनैमिक नियमों के मौजूदा सेट में बदलाव करता है. options.removeRuleIds में दिए गए आईडी वाले नियमों को सबसे पहले हटाया जाता है. इसके बाद, options.addRules में दिए गए नियमों को जोड़ा जाता है. ध्यान दें:
- यह अपडेट एक ही ऐटॉमिक ऑपरेशन के तौर पर होता है: या तो तय किए गए सभी नियम जोड़े और हटाए जाते हैं या गड़बड़ी का मैसेज दिखता है.
- ये नियम, ब्राउज़र सेशन और एक्सटेंशन अपडेट के दौरान बने रहते हैं.
- एक्सटेंशन पैकेज के हिस्से के तौर पर तय किए गए स्टैटिक नियमों को इस फ़ंक्शन का इस्तेमाल करके नहीं हटाया जा सकता.
- एक्सटेंशन, ज़्यादा से ज़्यादा MAX_NUMBER_OF_DYNAMIC_RULESडाइनैमिक नियम जोड़ सकता है. असुरक्षित नियमों की संख्याMAX_NUMBER_OF_UNSAFE_DYNAMIC_RULESसे ज़्यादा नहीं होनी चाहिए.
पैरामीटर
- 
    विकल्पChrome 87 या इसके बाद के वर्शन
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:() => void 
रिटर्न
- 
            Promise<void> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
updateEnabledRulesets()
chrome.declarativeNetRequest.updateEnabledRulesets(
options: UpdateRulesetOptions,
callback?: function,
): Promise<void>
यह एक्सटेंशन के लिए, चालू की गई स्टैटिक नियमों के सेट को अपडेट करता है. options.disableRulesetIds में दिए गए आईडी वाले नियम सेट पहले हटाए जाते हैं. इसके बाद, options.enableRulesetIds में दिए गए नियम सेट जोड़े जाते हैं.
ध्यान दें कि चालू की गई स्टैटिक रूलसेट का सेट, अलग-अलग सेशन में बना रहता है.हालांकि, एक्सटेंशन अपडेट होने पर यह सेट नहीं बना रहता. इसका मतलब है कि rule_resources मेनिफ़ेस्ट कुंजी, एक्सटेंशन के हर अपडेट पर चालू की गई स्टैटिक रूलसेट का सेट तय करेगी.
पैरामीटर
- 
    विकल्पChrome 87 या इसके बाद के वर्शन
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:() => void 
रिटर्न
- 
            Promise<void> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
updateSessionRules()
chrome.declarativeNetRequest.updateSessionRules(
options: UpdateRuleOptions,
callback?: function,
): Promise<void>
यह एक्सटेंशन के लिए, सेशन के स्कोप वाले नियमों के मौजूदा सेट में बदलाव करता है. options.removeRuleIds में दिए गए आईडी वाले नियमों को सबसे पहले हटाया जाता है. इसके बाद, options.addRules में दिए गए नियमों को जोड़ा जाता है. ध्यान दें:
- यह अपडेट एक ही ऐटॉमिक ऑपरेशन के तौर पर होता है: या तो तय किए गए सभी नियम जोड़े और हटाए जाते हैं या गड़बड़ी का मैसेज दिखता है.
- ये नियम, सेशन के दौरान सेव नहीं किए जाते हैं. इन्हें मेमोरी में सेव किया जाता है.
- MAX_NUMBER_OF_SESSION_RULES, सेशन के नियमों की वह ज़्यादा से ज़्यादा संख्या है जिसे कोई एक्सटेंशन जोड़ सकता है.
पैरामीटर
- 
    विकल्प
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:() => void 
रिटर्न
- 
            Promise<void> Chrome 91 या इसके बाद के वर्शनप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
updateStaticRules()
chrome.declarativeNetRequest.updateStaticRules(
options: UpdateStaticRulesOptions,
callback?: function,
): Promise<void>
इस कुकी का इस्तेमाल, Ruleset में मौजूद अलग-अलग स्टैटिक नियमों को बंद और चालू करने के लिए किया जाता है. बंद किए गए Ruleset से जुड़े नियमों में किए गए बदलाव, अगली बार इसे चालू करने पर लागू होंगे.
पैरामीटर
- 
    विकल्प
- 
    कॉलबैकफ़ंक्शन ज़रूरी नहीं callbackपैरामीटर ऐसा दिखता है:() => void 
रिटर्न
- 
            Promise<void> प्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म को कॉलबैक का इस्तेमाल करना होगा. 
इवेंट
onRuleMatchedDebug
chrome.declarativeNetRequest.onRuleMatchedDebug.addListener(
callback: function,
)
यह इवेंट तब ट्रिगर होता है, जब कोई नियम किसी अनुरोध से मेल खाता है. यह सुविधा सिर्फ़ अनपैक किए गए एक्सटेंशन के लिए उपलब्ध है. साथ ही, इसके लिए "declarativeNetRequestFeedback" अनुमति ज़रूरी है, क्योंकि इसका इस्तेमाल सिर्फ़ डीबग करने के लिए किया जाता है.
पैरामीटर
- 
    कॉलबैकफ़ंक्शन callbackपैरामीटर ऐसा दिखता है:(info: MatchedRuleInfoDebug) => void - 
    जानकारी
 
-