browser.declarativeNetRequest

বিবরণ

chrome.declarativeNetRequest API ব্যবহার করে ডিক্লারেটিভ নিয়ম উল্লেখ করার মাধ্যমে নেটওয়ার্ক রিকোয়েস্ট ব্লক বা পরিবর্তন করা হয়। এর ফলে এক্সটেনশন নেটওয়ার্ক অনুরোধ ইন্টারসেপ্ট না করে এবং তার কন্টেন্ট না দেখেই তা পরিবর্তন করতে পারে, যার ফলে আরও বেশি গোপনীয়তা প্রদান করা হয়।

অনুমতি

declarativeNetRequest
declarativeNetRequestWithHostAccess

"declarativeNetRequest" এবং "declarativeNetRequestWithHostAccess" অনুমতি একই ক্ষমতা প্রদান করে। তাদের মধ্যে পার্থক্য হল কখন অনুমতি অনুরোধ করা বা মঞ্জুর করা হয়।

"declarativeNetRequest"
ইনস্টল করার সময় অনুমতি সংক্রান্ত সতর্কতা ট্রিগার করে, তবে allow, allowAllRequests ও block নিয়মে ইমপ্লিসিট অ্যাক্সেস প্রদান করে। হোস্টের কাছে সম্পূর্ণ অ্যাক্সেসের অনুরোধ করার প্রয়োজন এড়াতে, সম্ভব হলে এটি ব্যবহার করুন।
"declarativeNetRequestFeedback"
আনপ্যাক করা এক্সটেনশনের জন্য ডিবাগিং ফিচার চালু করে, বিশেষ করে getMatchedRules() এবং onRuleMatchedDebug।
"declarativeNetRequestWithHostAccess"
ইনস্টল করার সময় অনুমতির সতর্কতা দেখানো হয় না, তবে হোস্টের উপর কোনও অ্যাকশন নেওয়ার আগে আপনাকে অবশ্যই হোস্টের অনুমতির জন্য অনুরোধ করতে হবে। এটি তখনই উপযুক্ত যখন আপনি অতিরিক্ত সতর্কতা তৈরি না করেই হোস্টের অনুমতি আছে এমন একটি এক্সটেনশনে ডিক্লারেটিভ নেট অনুরোধের নিয়ম ব্যবহার করতে চান।

উপলভ্যতা

Chrome 84+ Chrome 148 থেকে browser.*

ম্যানিফেস্ট

আগে বর্ণনা করা অনুমতির পাশাপাশি, নির্দিষ্ট ধরনের রুলসেট, বিশেষ করে স্ট্যাটিক রুলসেটের জন্য "declarative_net_request" ম্যানিফেস্ট কী ঘোষণা করতে হয়, যা "rule_resources" নামে একটি কী সহ ডিকশনারি হতে হবে। এই 'কী' হল একটি অ্যারে যাতে Ruleset ধরনের ডিকশনারি থাকে, যেমন নিচে দেখানো হয়েছে। (মনে রাখবেন যে '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)।
  • কোনও অনুরোধ ব্লক হওয়া আটকাতে, ব্লক করার জন্য ম্যাচ করা যেকোনও নিয়মকে নেগেট করুন।
  • নেটওয়ার্ক রিকোয়েস্ট রিডাইরেক্ট করুন।
  • অনুরোধ বা রেসপন্স হেডার পরিবর্তন করুন।

তিন ধরনের রুলসেট আছে, যেগুলি সামান্য আলাদা আলাদা উপায়ে ম্যানেজ করা হয়।

ডায়নামিক
ব্রাউজার সেশন এবং এক্সটেনশন আপগ্রেড জুড়ে থাকে এবং এক্সটেনশন ব্যবহার করার সময় জাভাস্ক্রিপ্ট ব্যবহার করে ম্যানেজ করা হয়।
সেশন
ব্রাউজার বন্ধ হয়ে গেলে এবং এক্সটেনশনের নতুন ভার্সন ইনস্টল করা হলে মুছে যায়। এক্সটেনশন ব্যবহার করার সময় জাভাস্ক্রিপ্ট ব্যবহার করে সেশন সংক্রান্ত নিয়ম ম্যানেজ করা হয়।
স্থির
কোনও এক্সটেনশন ইনস্টল বা আপগ্রেড করা হলে প্যাকেজ, ইনস্টল ও আপডেট করা হয়। স্ট্যাটিক নিয়ম JSON-ফর্ম্যাট করা নিয়ম ফাইলে স্টোর করা হয় এবং ম্যানিফেস্ট ফাইলে তালিকাভুক্ত করা হয়।

ডায়নামিক ও সেশন-স্কোপড রুলসেট

এক্সটেনশন ব্যবহার করার সময় জাভাস্ক্রিপ্ট ব্যবহার করে ডায়নামিক ও সেশন রুলসেট ম্যানেজ করা হয়।

  • ব্রাউজার সেশন ও এক্সটেনশন আপগ্রেড জুড়ে ডায়নামিক নিয়ম বজায় থাকে।
  • ব্রাউজার বন্ধ হয়ে গেলে এবং এক্সটেনশনের নতুন ভার্সন ইনস্টল করা হলে সেশন সংক্রান্ত নিয়ম মুছে যায়।

এই ধরনের রুলসেট একটিই আছে। নিয়মের সীমা অতিক্রম না করলে, কোনও এক্সটেনশন 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" সহ যেকোনও URL অন্তর্ভুক্ত।

{
  "id" : 1,
  "priority": 1,
  "action" : { "type" : "block" },
  "condition" : {
    "urlFilter" : "abc",
    "initiatorDomains" : ["foo.com"],
    "resourceTypes" : ["script"]
  }
}

URL ম্যাচিং

Declarative Net Request, প্যাটার্ন ম্যাচিং সিনট্যাক্স বা রেগুলার এক্সপ্রেশনের মাধ্যমে URL ম্যাচ করার সুবিধা প্রদান করে।

URL ফিল্টার সিনট্যাক্স

একটি নিয়মের "condition" কী, নির্দিষ্ট ডোমেনের অধীনে URL-এ কাজ করার জন্য "urlFilter" কী-কে অনুমতি দেয়। আপনি প্যাটার্ন ম্যাচিং টোকেন ব্যবহার করে প্যাটার্ন তৈরি করেন। এখানে কিছু উদাহরণ দেওয়া হল।

urlFilter ম্যাচ না মেলা URL
"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://a.example.company
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

রেগুলার এক্সপ্রেশন

শর্তে রেগুলার এক্সপ্রেশনও ব্যবহার করা যেতে পারে। "regexFilter" কী দেখুন। এইসব শর্তের ক্ষেত্রে প্রযোজ্য সীমা সম্পর্কে জানতে, রেগুলার এক্সপ্রেশন ব্যবহার করে এমন নিয়ম দেখুন।

URL-এর জন্য ভাল শর্ত লিখুন

নিয়ম লেখার সময় খেয়াল রাখবেন যাতে সবসময় সম্পূর্ণ ডোমেন ম্যাচ করে। অন্যথায়, আপনার নিয়ম অপ্রত্যাশিত পরিস্থিতিতেও ম্যাচ করতে পারে। যেমন, প্যাটার্ন ম্যাচিং সিনট্যাক্স ব্যবহার করার সময়:

  • google.com-এর সাথে https://example.com/?param=google.com ভুলভাবে ম্যাচ করছে
  • ||google.com-এর সাথে https://google.company ভুলভাবে ম্যাচ করছে
  • https://www.google.com-এর সাথে https://example.com/?param=https://www.google.com ভুলভাবে ম্যাচ করছে

এগুলি ব্যবহার করার কথা বিবেচনা করুন:

  • ||google.com/, যা সব পাথ ও সাবডোমেনের সাথে ম্যাচ করে।
  • |https://www.google.com/ যা সব পাথের সাথে মেলে এবং কোনও সাবডোমেনের সাথে মেলে না।

একইভাবে, রেগুলার এক্সপ্রেশন অ্যাঙ্কর করতে ^ এবং / অক্ষর ব্যবহার করুন। যেমন, ^https:\/\/www\.google\.com\/, https://www.google.com-এর যেকোনও পাথের সাথে ম্যাচ করে।

নিয়ম মূল্যায়ন

নেটওয়ার্ক অনুরোধের লাইফসাইকেলের বিভিন্ন পর্যায়ে ব্রাউজার 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 ব্যবহার করার সময় কিছু সীমাবদ্ধতা প্রযোজ্য হয়। আপনি যে ধরনের নিয়ম ব্যবহার করছেন তার উপর সীমা নির্ভর করে।

স্ট্যাটিক নিয়ম

ম্যানিফেস্ট ফাইলে ঘোষণা করা নিয়ম ফাইলে উল্লেখ করা নিয়মগুলিই হল স্ট্যাটিক নিয়ম। একটি এক্সটেনশন "rule_resources" ম্যানিফেস্ট কী-এর অংশ হিসেবে সর্বাধিক ১০০টি স্ট্যাটিক রুলসেট নির্দিষ্ট করতে পারে, তবে এইসব রুলসেটের মধ্যে একবারে মাত্র ৫০টি চালু করা যেতে পারে। পরেরটিকে MAX_NUMBER_OF_ENABLED_STATIC_RULESETS বলা হয়। সামগ্রিকভাবে, সেইসব রুলসেটে কমপক্ষে ৩০,০০০ নিয়ম আছে। এটিকে GUARANTEED_MINIMUM_STATIC_RULES বলা হয়।

তারপরে কতগুলি নিয়ম উপলভ্য থাকবে তা নির্ভর করে ব্যবহারকারীর ব্রাউজারে ইনস্টল করা সমস্ত এক্সটেনশন দ্বারা কতগুলি নিয়ম চালু করা হয়েছে তার উপর। আপনি রানটাইমে getAvailableStaticRuleCount()-এ কল করে এই নম্বরটি খুঁজে পেতে পারেন। আপনি কোডের উদাহরণ-এর মধ্যে এর একটি উদাহরণ দেখতে পাবেন।

সেশনের নিয়ম

একটি এক্সটেনশনে সর্বাধিক ৫০০০টি সেশন রুল থাকতে পারে। এটি MAX_NUMBER_OF_SESSION_RULES হিসেবে দেখানো হয়।

Chrome 120-এর আগে, ডাইনামিক ও সেশন রুল মিলিয়ে সর্বাধিক ৫০০০টি রুল ব্যবহার করা যেত।

ডায়নামিক নিয়ম

একটি এক্সটেনশনে অন্তত ৫০০০টি ডায়নামিক নিয়ম থাকতে পারে। এটি MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES হিসেবে দেখানো হয়।

Chrome 121 থেকে শুরু করে, নিরাপদ ডায়নামিক নিয়মের জন্য 30,000 নিয়মের একটি বড় সীমা উপলভ্য আছে, যা MAX_NUMBER_OF_DYNAMIC_RULES হিসেবে দেখানো হয়েছে। ৫০০০-এর সীমার মধ্যে যোগ করা যেকোনও অসুরক্ষিত নিয়মও এই সীমার মধ্যে ধরা হবে।

Chrome 120-এর আগে, ৫০০০টি সম্মিলিত ডায়নামিক ও সেশন রুলের সীমা ছিল।

রেগুলার এক্সপ্রেশন ব্যবহার করে এমন নিয়ম

সব ধরনের নিয়মে রেগুলার এক্সপ্রেশন ব্যবহার করা যেতে পারে; তবে, প্রতিটি ধরনের রেগুলার এক্সপ্রেশন নিয়মের মোট সংখ্যা ১০০০-এর বেশি হতে পারবে না। একে MAX_NUMBER_OF_REGEX_RULES বলা হয়।

এছাড়াও, প্রতিটি নিয়ম কম্পাইল করার পরে ২ কেবির কম হতে হবে। এটি মোটামুটিভাবে নিয়মের জটিলতার সাথে সম্পর্কিত। আপনি যদি এই সীমা অতিক্রম করে এমন কোনও নিয়ম লোড করার চেষ্টা করেন, তাহলে আপনি নিম্নলিখিত সতর্কবার্তা দেখতে পাবেন এবং নিয়মটি উপেক্ষা করা হবে।

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. এই অনুমোদিত তালিকায় ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয় (বাগ 449152902)।

অনুরোধ বা রেসপন্স হেডারে যোগ করার সময়, ব্রাউজার যেখানে সম্ভব উপযুক্ত বিভাজক ব্যবহার করবে।

উদাহরণ

কোডের উদাহরণ

ডায়নামিক নিয়ম আপডেট করুন

updateDynamicRules()-কে কীভাবে কল করতে হয় তা নিম্নলিখিত উদাহরণ থেকে দেখুন। updateSessionRules()-এর জন্য পদ্ধতি একই।

// Get arrays containing new and old rules
const newRules = await getNewRules();
const oldRules = await browser.declarativeNetRequest.getDynamicRules();
const oldRuleIds = oldRules.map(rule => rule.id);

// Use the arrays to update the dynamic rules
await browser.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 browser.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 > browser.declarativeNetRequest.MAX_NUMBER_OF_ENABLED_STATIC_RULESETS) {
    options.disableRulesetIds = disableCandidateIds
  }
  // Update the enabled static rules
  await browser.declarativeNetRequest.updateEnabledRulesets(options);
}

নিয়মের উদাহরণ

Chrome কীভাবে এক্সটেনশনে নিয়মকে অগ্রাধিকার দেয় তা নিম্নলিখিত উদাহরণ থেকে বোঝা যায়। সেগুলি পর্যালোচনা করার সময়, আপনি একটি পৃথক উইন্ডোতে অগ্রাধিকার নিয়মগুলি খুলতে চাইতে পারেন।

"অগ্রাধিকার" কী

এইসব উদাহরণের ক্ষেত্রে *://*.example.com/*-এর জন্য হোস্টের অনুমতি প্রয়োজন।

কোনও নির্দিষ্ট URL-এর অগ্রাধিকার নির্ধারণ করতে, (ডেভেলপার-নির্ধারিত) "priority" কী, "action" কী এবং "urlFilter" কী দেখুন। এইসব উদাহরণ নিচে দেখানো উদাহরণ রুল ফাইলকে রেফার করে।

https://google.com-এ নেভিগেশন
দুটি নিয়ম এই URL-এর ক্ষেত্রে প্রযোজ্য: ১ ও ৪ আইডি সহ নিয়ম। আইডি ১ সহ নিয়মটি প্রযোজ্য হয় কারণ "block" অ্যাকশনের অগ্রাধিকার "redirect" অ্যাকশনের চেয়ে বেশি। বাকি নিয়মগুলি প্রযোজ্য নয় কারণ সেগুলি আরও বড় URL-এর জন্য।
https://google.com/1234-এ নেভিগেট করা
URL-এর দৈর্ঘ্য বেশি হওয়ার কারণে, আইডি ২-এর নিয়ম এখন আইডি ১ ও ৪-এর নিয়মের সাথেও ম্যাচ করে। আইডি ২ সহ নিয়মটি প্রযোজ্য কারণ "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"]
  }
}

নিম্নলিখিত উদাহরণে, example.com-এর সাবডোমেনে রিডাইরেক্ট করতে "transform" কী ব্যবহার করা হয়েছে। example.com থেকে যেকোনও স্কিম সহ অনুরোধ ইন্টারসেপ্ট করতে এটি ডোমেন নেম অ্যাঙ্কর ("||") ব্যবহার করে। "transform"-এ "scheme" কী নির্দিষ্ট করে যে সাবডোমেনে রিডাইরেক্ট করার সময় সবসময় "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" ব্যবহার করে রেগুলার এক্সপ্রেশনের প্রথম রিটার্ন করা ম্যাচ নির্দিষ্ট করে। এই ক্ষেত্রে, রিডাইরেক্ট করা URL থেকে "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

Chrome 88+ Chrome 148 থেকে browser.*

প্রপার্টি

  • displayActionCountAsBadgeText

    বুলিয়ান ঐচ্ছিক

    এক্সটেনশনের ব্যাজ টেক্সট হিসেবে কোনও পৃষ্ঠার জন্য অ্যাকশন কাউন্ট অটোমেটিক দেখানো হবে কিনা। এই পছন্দ সেশন জুড়ে বজায় থাকে।

  • tabUpdate

    TabActionCountUpdate ঐচ্ছিক

    Chrome 89+ Chrome 148 থেকে browser.*

    ট্যাবের অ্যাকশন কাউন্ট কীভাবে অ্যাডজাস্ট করা উচিত তার বিবরণ।

GetDisabledRuleIdsOptions

Chrome 111+ Chrome 148 থেকে browser.*

প্রপার্টি

  • rulesetId

    স্ট্রিং

    স্ট্যাটিক Ruleset-এর সাথে সংশ্লিষ্ট আইডি।

GetRulesFilter

Chrome 111+ Chrome 148 থেকে browser.*

প্রপার্টি

  • ruleIds

    number[] ঐচ্ছিক

    উল্লেখ করা থাকলে, শুধুমাত্র ম্যাচিং আইডি সহ নিয়ম অন্তর্ভুক্ত করা হয়।

HeaderInfo

Chrome 128+ Chrome 148 থেকে browser.*

প্রপার্টি

  • excludedValues

    string[] ঐচ্ছিক

    উল্লেখ করা থাকলে, হেডার থাকলেও এই শর্ত মিলবে না, তবে এর ভ্যালুতে এই তালিকার অন্তত একটি এলিমেন্ট থাকবে। এটি values-এর মতো একই ম্যাচ প্যাটার্ন সিনট্যাক্স ব্যবহার করে।

  • হেডার

    স্ট্রিং

    হেডারের নাম। values এবং excludedValues, দুটির কোনওটিই উল্লেখ করা না থাকলে, এই শর্তটি শুধুমাত্র নামের সাথে ম্যাচ করে।

  • মান

    string[] ঐচ্ছিক

    উল্লেখ করা থাকলে, হেডারের ভ্যালু এই তালিকার অন্তত একটি প্যাটার্নের সাথে মিললে এই শর্তটি মিলে যায়। এটি কেস-ইনসেনসিটিভ হেডার ভ্যালু ম্যাচিং এবং নিম্নলিখিত কনস্ট্রাক্টকে সাপোর্ট করে:

    '*' : যেকোনও সংখ্যক অক্ষরের সাথে মেলে।

    '?' : শূন্য বা একটি অক্ষরের সাথে মেলে।

    '*' এবং '?' ব্যাকস্ল্যাশ দিয়ে এড়ানো যেতে পারে, যেমন '\*' এবং '\?'

HeaderOperation

Chrome 86+ Chrome 148 থেকে browser.*

এটি "modifyHeaders" নিয়মের জন্য সম্ভাব্য অপারেশন বর্ণনা করে।

Enum

"append"
নির্দিষ্ট হেডারের জন্য নতুন এন্ট্রি যোগ করে। অনুরোধের হেডার পরিবর্তন করার সময়, এই অপারেশনটি শুধুমাত্র নির্দিষ্ট হেডারের জন্য কাজ করে।

"set"
নির্দিষ্ট হেডারের জন্য নতুন ভ্যালু সেট করে, একই নামের যেকোনও বিদ্যমান হেডার সরিয়ে দেয়।

"remove"
নির্দিষ্ট হেডারের জন্য সব এন্ট্রি সরিয়ে দেয়।

IsRegexSupportedResult

Chrome 87+ Chrome 148 থেকে browser.*

প্রপার্টি

  • isSupported

    বুলিয়ান

  • কারণ

    UnsupportedRegexReason ঐচ্ছিক

    রেগুলার এক্সপ্রেশন কেন কাজ করে না তার কারণ উল্লেখ করে। isSupported ফলস হলে তবেই প্রদান করা হয়।

MatchedRule

প্রপার্টি

  • ruleId

    নম্বর

    ম্যাচিং নিয়মের আইডি।

  • rulesetId

    স্ট্রিং

    এই নিয়মটি যে Ruleset-এর অন্তর্গত, তার আইডি। ডায়নামিক নিয়মের সেট থেকে তৈরি হওয়া নিয়মের ক্ষেত্রে, এটি DYNAMIC_RULESET_ID-এর সমান হবে।

MatchedRuleInfo

প্রপার্টি

  • নিয়ম
  • tabId

    নম্বর

    ট্যাবটি এখনও অ্যাক্টিভ থাকলে, যে ট্যাব থেকে অনুরোধটি এসেছে সেটির tabId। অন্যথায় -১।

  • timeStamp

    নম্বর

    যে সময়ে নিয়মটি মিলেছে। টাইমস্ট্যাম্প সময়ের জন্য Javascript কনভেনশন অনুযায়ী হবে, অর্থাৎ যুগ থেকে মিলিসেকেন্ডের সংখ্যা।

MatchedRuleInfoDebug

প্রপার্টি

  • অনুরোধ

    যে অনুরোধের জন্য নিয়মটি মিলেছে তার বিবরণ।

  • নিয়ম

MatchedRulesFilter

প্রপার্টি

  • minTimeStamp

    নম্বর ঐচ্ছিক

    উল্লেখ করা থাকলে, শুধুমাত্র প্রদত্ত টাইমস্ট্যাম্পের পরে নিয়ম মেলে।

  • tabId

    নম্বর ঐচ্ছিক

    উল্লেখ করা থাকলে, শুধুমাত্র প্রদত্ত ট্যাবের জন্য নিয়ম মেলে। -১-এ সেট করা থাকলে, কোনও অ্যাক্টিভ ট্যাবের সাথে যুক্ত নয় এমন নিয়মের সাথে ম্যাচ করে।

ModifyHeaderInfo

Chrome 86+ Chrome 148 থেকে browser.*

প্রপার্টি

  • হেডার

    স্ট্রিং

    যে হেডারের নাম পরিবর্তন করতে হবে।

  • অপারেশন

    হেডারে যে অপারেশনটি করা হবে।

  • মান

    স্ট্রিং ঐচ্ছিক

    হেডারের জন্য নতুন ভ্যালু। append এবং set অপারেশনের জন্য অবশ্যই নির্দিষ্ট করতে হবে।

QueryKeyValue

প্রপার্টি

  • কী

    স্ট্রিং

  • replaceOnly

    বুলিয়ান ঐচ্ছিক

    Chrome 94+ Chrome 148 থেকে browser.*

    সত্য হলে, কোয়েরি কী আগে থেকেই থাকলে তবেই সেটি পরিবর্তন করা হয়। অন্যথায়, 'কী' না থাকলে সেটিও যোগ করা হয়। ডিফল্ট হিসেবে false সেট করা থাকে।

  • মান

    স্ট্রিং

QueryTransform

প্রপার্টি

  • addOrReplaceParams

    QueryKeyValue[] ঐচ্ছিক

    কোয়েরি কী-ভ্যালু পেয়ারের তালিকা যোগ বা পরিবর্তন করতে হবে।

  • removeParams

    string[] ঐচ্ছিক

    কোয়েরি কী-এর তালিকা সরিয়ে দিতে হবে।

Redirect

প্রপার্টি

  • extensionPath

    স্ট্রিং ঐচ্ছিক

    এক্সটেনশন ডিরেক্টরির সাথে সম্পর্কিত পাথ। '/' দিয়ে শুরু হতে হবে।

  • regexSubstitution

    স্ট্রিং ঐচ্ছিক

    regexFilter নির্দিষ্ট করে এমন নিয়মের জন্য সাবস্টিটিউশন প্যাটার্ন। URL-এর মধ্যে regexFilter-এর প্রথম ম্যাচ এই প্যাটার্ন দিয়ে পরিবর্তন করা হবে। regexSubstitution-এর মধ্যে, ব্যাকস্ল্যাশ-এস্কেপ করা সংখ্যা (\১ থেকে \৯) ব্যবহার করে সংশ্লিষ্ট ক্যাপচার গ্রুপ যোগ করা যেতে পারে। \0 সম্পূর্ণ ম্যাচিং টেক্সটকে বোঝায়।

  • রূপান্তর করুন

    URLTransform ঐচ্ছিক

    URL ট্রান্সফর্মেশন পারফর্ম করতে হবে।

  • URL

    স্ট্রিং ঐচ্ছিক

    রিডাইরেক্ট URL। জাভাস্ক্রিপ্ট URL-এ রিডাইরেক্ট করার অনুমতি নেই।

RegexOptions

Chrome 87+ Chrome 148 থেকে browser.*

প্রপার্টি

  • isCaseSensitive

    বুলিয়ান ঐচ্ছিক

    regex-এ ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করা হয় কিনা। ডিফল্ট হল সত্য।

  • regex

    স্ট্রিং

    চেক করার জন্য রেগুলার এক্সপ্রেশন।

  • requireCapturing

    বুলিয়ান ঐচ্ছিক

    নির্দিষ্ট করা regex ক্যাপচার করতে হবে কিনা। শুধুমাত্র রিডাইরেক্ট নিয়মের জন্য ক্যাপচার করা প্রয়োজন যা regexSubstition অ্যাকশন নির্দিষ্ট করে। ডিফল্ট হল false।

RequestDetails

প্রপার্টি

  • documentId

    স্ট্রিং ঐচ্ছিক

    Chrome 106+ Chrome 148 থেকে browser.*

    এই অনুরোধটি ফ্রেমের জন্য হলে, ফ্রেমের ডকুমেন্টের অনন্য শনাক্তকারী।

  • documentLifecycle

    DocumentLifecycle ঐচ্ছিক

    Chrome 106+ Chrome 148 থেকে browser.*

    ফ্রেমের ডকুমেন্টের লাইফসাইকেল, যদি এই অনুরোধ কোনও ফ্রেমের জন্য হয়।

  • frameId

    নম্বর

    0 ভ্যালু থেকে বোঝা যায় যে অনুরোধটি মূল ফ্রেমে করা হয়েছে; পজিটিভ ভ্যালু থেকে বোঝা যায় যে অনুরোধটি সাবফ্রেমের আইডিতে করা হয়েছে। (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হলে (type হল main_frame বা sub_frame), frameId এই ফ্রেমের আইডি দেখায়, বাইরের ফ্রেমের আইডি নয়। ফ্রেম আইডি একটি ট্যাবের মধ্যে অনন্য।

  • frameType

    FrameType ঐচ্ছিক

    Chrome 106+ Chrome 148 থেকে browser.*

    এই অনুরোধটি ফ্রেমের জন্য হলে, ফ্রেমের ধরন।

  • ইনিশিয়েটর

    স্ট্রিং ঐচ্ছিক

    যেখান থেকে অনুরোধটি শুরু করা হয়েছিল। রিডাইরেক্টের মাধ্যমে এটি পরিবর্তন হয় না। এটি যদি একটি অস্বচ্ছ উৎস হয়, তাহলে 'null' স্ট্রিং ব্যবহার করা হবে।

  • মেথড

    স্ট্রিং

    স্ট্যান্ডার্ড HTTP পদ্ধতি।

  • parentDocumentId

    স্ট্রিং ঐচ্ছিক

    Chrome 106+ Chrome 148 থেকে browser.*

    ফ্রেমের পেরেন্ট ডকুমেন্টের অনন্য শনাক্তকারী, যদি এই অনুরোধটি কোনও ফ্রেমের জন্য হয় এবং তার কোনও পেরেন্ট থাকে।

  • parentFrameId

    নম্বর

    অনুরোধ পাঠানো ফ্রেমকে যে ফ্রেম র‍্যাপ করে সেটির আইডি। কোনও পেরেন্ট ফ্রেম না থাকলে -১ হিসেবে সেট করুন।

  • requestId

    স্ট্রিং

    অনুরোধের আইডি। অনুরোধ আইডি ব্রাউজার সেশনে অনন্য।

  • tabId

    নম্বর

    যে ট্যাবে অনুরোধ করা হয়েছে সেটির আইডি। অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত না হলে -১-এ সেট করুন।

  • ধরন

    অনুরোধের রিসোর্সের ধরন।

  • URL

    স্ট্রিং

    অনুরোধের URL।

RequestMethod

Chrome 91+ Chrome 148 থেকে browser.*

এটি নেটওয়ার্ক অনুরোধের HTTP অনুরোধ পদ্ধতি বর্ণনা করে।

Enum

"কানেক্ট"

"মুছুন"

"get"

"head"

"বিকল্প"

"প্যাচ"

"পোস্ট"

"put"

"অন্যান্য"

ResourceType

এটি নেটওয়ার্ক অনুরোধের রিসোর্সের ধরন বর্ণনা করে।

Enum

"main_frame"

"sub_frame"

"স্টাইলশিট"

"স্ক্রিপ্ট"

"ছবি"

"font"

"অবজেক্ট"

"xmlhttprequest"

"পিং"

"csp_report"

"মিডিয়া"

"websocket"

"webtransport"

"webbundle"

"অন্যান্য"

Rule

প্রপার্টি

  • অ্যাকশন

    এই নিয়ম ম্যাচ করলে যে অ্যাকশন নেওয়া হবে।

  • শর্ত

    যে শর্তের অধীনে এই নিয়ম ট্রিগার করা হয়।

  • id

    নম্বর

    একটি আইডি যা অনন্যভাবে একটি নিয়ম শনাক্ত করে। বাধ্যতামূলক এবং >= ১ হতে হবে।

  • অগ্রাধিকার

    নম্বর ঐচ্ছিক

    নিয়মের অগ্রাধিকার। ডিফল্ট হিসেবে ১ সেট করা থাকে। নির্দিষ্ট করা থাকলে, >= ১ হতে হবে।

RuleAction

প্রপার্টি

  • রিডাইরেক্ট

    রিডাইরেক্ট ঐচ্ছিক

    কীভাবে রিডাইরেক্ট করা হবে তা বর্ণনা করে। শুধুমাত্র রিডাইরেক্ট নিয়মের ক্ষেত্রে প্রযোজ্য।

  • requestHeaders

    ModifyHeaderInfo[] ঐচ্ছিক

    Chrome 86+ Chrome 148 থেকে browser.*

    অনুরোধের জন্য পরিবর্তন করতে হবে এমন অনুরোধের হেডার। RuleActionType "modifyHeaders" হলে তবেই এটি সঠিক বলে গণ্য হবে।

  • responseHeaders

    ModifyHeaderInfo[] ঐচ্ছিক

    Chrome 86+ Chrome 148 থেকে browser.*

    অনুরোধের জন্য পরিবর্তন করার রেসপন্স হেডার। RuleActionType "modifyHeaders" হলে তবেই এটি সঠিক বলে গণ্য হবে।

  • ধরন

    যে ধরনের অ্যাকশন পারফর্ম করতে হবে।

RuleActionType

প্রদত্ত RuleCondition ম্যাচ করলে কী ধরনের অ্যাকশন নিতে হবে তা বর্ণনা করে।

Enum

"ব্লক"
নেটওয়ার্ক অনুরোধ ব্লক করুন।

"redirect"
নেটওয়ার্ক অনুরোধ রিডাইরেক্ট করুন।

"অনুমতি দিন"
নেটওয়ার্ক রিকোয়েস্টে অনুমতি দিন। অনুরোধের সাথে মিলে যায় এমন কোনও অনুমোদনের নিয়ম থাকলে, অনুরোধটি ইন্টারসেপ্ট করা হবে না।

"upgradeScheme"
নেটওয়ার্ক অনুরোধের url-এর স্কিম http বা ftp হলে, সেটিকে https-এ আপগ্রেড করুন।

"modifyHeaders"
নেটওয়ার্ক অনুরোধ থেকে অনুরোধ/প্রতিক্রিয়া হেডার পরিবর্তন করুন।

"allowAllRequests"
ফ্রেম অনুরোধ সহ ফ্রেম হায়ারার্কির মধ্যে সব অনুরোধের অনুমতি দিন।

RuleCondition

প্রপার্টি

  • domainType

    DomainType ঐচ্ছিক

    নেটওয়ার্ক অনুরোধটি যে ডোমেন থেকে এসেছে তার ফার্স্ট-পার্টি নাকি থার্ড-পার্টি তা উল্লেখ করে। বাদ দেওয়া হলে, সব অনুরোধ গ্রহণ করা হয়।

  • ডোমেন

    string[] ঐচ্ছিক

    Chrome 101 থেকে বন্ধ করা হয়েছে

    পরিবর্তে initiatorDomains ব্যবহার করুন

    নিয়মটি শুধুমাত্র domains-এর তালিকা থেকে আসা নেটওয়ার্ক অনুরোধের সাথে মিলবে।

  • excludedDomains

    string[] ঐচ্ছিক

    Chrome 101 থেকে বন্ধ করা হয়েছে

    পরিবর্তে excludedInitiatorDomains ব্যবহার করুন

    excludedDomains-এর তালিকা থেকে শুরু হওয়া নেটওয়ার্ক অনুরোধের সাথে নিয়মটি মিলবে না।

  • excludedInitiatorDomains

    string[] ঐচ্ছিক

    Chrome 101+ Chrome 148 থেকে browser.*

    excludedInitiatorDomains-এর তালিকা থেকে শুরু হওয়া নেটওয়ার্ক অনুরোধের সাথে নিয়মটি মিলবে না। তালিকাটি খালি থাকলে বা বাদ দেওয়া হলে, কোনও ডোমেন বাদ দেওয়া হয় না। এটি initiatorDomains-এর চেয়ে বেশি অগ্রাধিকার পায়।

    মনে রাখবেন:

    • "a.example.com"-এর মতো সাব-ডোমেনও অনুমোদিত।
    • এন্ট্রিতে শুধুমাত্র ascii অক্ষর থাকতে হবে।
    • আন্তর্জাতিক ডোমেনের জন্য পিউনিকোড এনকোডিং ব্যবহার করুন।
    • এটি অনুরোধের URL-এর সাথে নয়, অনুরোধকারীর সাথে ম্যাচ করে।
    • তালিকাভুক্ত ডোমেনের সাব-ডোমেনও বাদ দেওয়া হয়েছে।
  • excludedRequestDomains

    string[] ঐচ্ছিক

    Chrome 101+ Chrome 148 থেকে browser.*

    ডোমেন excludedRequestDomains-এর তালিকা থেকে কোনও একটির সাথে মিলে গেলে, নিয়মটি নেটওয়ার্ক অনুরোধের সাথে মিলবে না। তালিকাটি খালি থাকলে বা বাদ দেওয়া হলে, কোনও ডোমেন বাদ দেওয়া হয় না। এটি requestDomains-এর চেয়ে বেশি অগ্রাধিকার পায়।

    মনে রাখবেন:

    • "a.example.com"-এর মতো সাব-ডোমেনও অনুমোদিত।
    • এন্ট্রিতে শুধুমাত্র ascii অক্ষর থাকতে হবে।
    • আন্তর্জাতিক ডোমেনের জন্য পিউনিকোড এনকোডিং ব্যবহার করুন।
    • তালিকাভুক্ত ডোমেনের সাব-ডোমেনও বাদ দেওয়া হয়েছে।
  • excludedRequestMethods

    RequestMethod[] ঐচ্ছিক

    Chrome 91+ Chrome 148 থেকে browser.*

    নিয়মের সাথে মিলবে না এমন অনুরোধ পদ্ধতির তালিকা। requestMethods এবং excludedRequestMethods-এর মধ্যে যেকোনও একটি উল্লেখ করতে হবে। এর মধ্যে কোনওটিই নির্দিষ্ট করা না থাকলে, সব অনুরোধের পদ্ধতি ম্যাচ করা হয়।

  • excludedResourceTypes

    ResourceType[] ঐচ্ছিক

    রিসোর্সের ধরনের তালিকা যার সাথে নিয়মটি মিলবে না। resourceTypes এবং excludedResourceTypes-এর মধ্যে যেকোনও একটি উল্লেখ করতে হবে। এর মধ্যে কোনওটিই উল্লেখ করা না থাকলে, "main_frame" ছাড়া সব ধরনের রিসোর্স ব্লক করা হয়।

  • excludedResponseHeaders

    HeaderInfo[] ঐচ্ছিক

    Chrome 128+ Chrome 148 থেকে browser.*

    অনুরোধটি এই তালিকার কোনও রেসপন্স হেডার শর্তের সাথে মিললে (যদি নির্দিষ্ট করা থাকে) নিয়মটি মেলে না। excludedResponseHeaders এবং responseHeaders, দুটিই উল্লেখ করা থাকলে, excludedResponseHeaders প্রপার্টিকে অগ্রাধিকার দেওয়া হয়।

  • excludedTabIds

    number[] ঐচ্ছিক

    Chrome 92+ browser.* Chrome 148 থেকে

    tabs.Tab.id-এর তালিকা যার সাথে নিয়মটি ম্যাচ করা উচিত নয়। tabs.TAB_ID_NONE-এর আইডি সেইসব অনুরোধ বাদ দেয় যেগুলি কোনও ট্যাব থেকে শুরু হয় না। শুধুমাত্র সেশন-স্কোপড নিয়মের জন্য কাজ করে।

  • excludedTopDomains

    string[] ঐচ্ছিক

    Chrome 145+ Chrome 148 থেকে browser.*

    সংশ্লিষ্ট টপ-লেভেল ফ্রেমের ডোমেন excludedTopDomains-এর তালিকার কোনও একটির সাথে মিলে গেলে, নিয়মটি নেটওয়ার্ক অনুরোধের সাথে মিলবে না। তালিকাটি খালি থাকলে বা বাদ দেওয়া হলে, কোনও ডোমেন বাদ দেওয়া হয় না। এটি topDomains-এর চেয়ে বেশি অগ্রাধিকার পায়।

    মনে রাখবেন:

    • "a.example.com"-এর মতো সাব-ডোমেনও অনুমোদিত।
    • এন্ট্রিতে শুধুমাত্র ascii অক্ষর থাকতে হবে।
    • আন্তর্জাতিক ডোমেনের জন্য পিউনিকোড এনকোডিং ব্যবহার করুন।
    • তালিকাভুক্ত ডোমেনের সাব-ডোমেনও বাদ দেওয়া হয়েছে।
    • কোনও সম্পর্কিত টপ-লেভেল ফ্রেম ছাড়া অনুরোধের ক্ষেত্রে (যেমন, ServiceWorker-এর মাধ্যমে শুরু করা অনুরোধ), পরিবর্তে অনুরোধ শুরুকারীর ডোমেন বিবেচনা করা হয়।
  • initiatorDomains

    string[] ঐচ্ছিক

    Chrome 101+ Chrome 148 থেকে browser.*

    নিয়মটি শুধুমাত্র initiatorDomains-এর তালিকা থেকে আসা নেটওয়ার্ক অনুরোধের সাথে মিলবে। তালিকা বাদ দেওয়া হলে, সব ডোমেন থেকে আসা অনুরোধের ক্ষেত্রে নিয়মটি প্রযোজ্য হয়। খালি তালিকা অনুমোদিত নয়।

    মনে রাখবেন:

    • "a.example.com"-এর মতো সাব-ডোমেনও অনুমোদিত।
    • এন্ট্রিতে শুধুমাত্র ascii অক্ষর থাকতে হবে।
    • আন্তর্জাতিক ডোমেনের জন্য পিউনিকোড এনকোডিং ব্যবহার করুন।
    • এটি অনুরোধের URL-এর সাথে নয়, অনুরোধকারীর সাথে ম্যাচ করে।
    • তালিকাভুক্ত ডোমেনের সাব-ডোমেনও ম্যাচ করা হয়।
  • isUrlFilterCaseSensitive

    বুলিয়ান ঐচ্ছিক

    urlFilter বা regexFilter (যেটি উল্লেখ করা হয়েছে) ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য করে কিনা। ডিফল্ট হল মিথ্যা।

  • regexFilter

    স্ট্রিং ঐচ্ছিক

    নেটওয়ার্ক অনুরোধের url-এর সাথে ম্যাচ করার জন্য রেগুলার এক্সপ্রেশন। এটি RE2 সিনট্যাক্স অনুসরণ করে।

    মনে রাখবেন: urlFilter বা regexFilter-এর মধ্যে যেকোনও একটি উল্লেখ করা যেতে পারে।

    মনে রাখবেন: regexFilter-এ শুধুমাত্র ASCII অক্ষর থাকতে হবে। এটি এমন একটি URL-এর সাথে ম্যাচ করা হয় যেখানে হোস্টকে পিউনিকোড ফর্ম্যাটে এনকোড করা হয় (আন্তর্জাতিক ডোমেনের ক্ষেত্রে) এবং অন্য যেকোনও নন-ascii অক্ষরকে utf-8-এ URL এনকোড করা হয়।

  • requestDomains

    string[] ঐচ্ছিক

    Chrome 101+ Chrome 148 থেকে browser.*

    ডোমেনটি requestDomains-এর তালিকার সাথে মিললে তবেই নিয়মটি নেটওয়ার্ক অনুরোধের সাথে মিলবে। তালিকা বাদ দেওয়া হলে, সব ডোমেন থেকে আসা অনুরোধের ক্ষেত্রে নিয়মটি প্রযোজ্য হয়। খালি তালিকা অনুমোদিত নয়।

    মনে রাখবেন:

    • "a.example.com"-এর মতো সাব-ডোমেনও অনুমোদিত।
    • এন্ট্রিতে শুধুমাত্র ascii অক্ষর থাকতে হবে।
    • আন্তর্জাতিক ডোমেনের জন্য পিউনিকোড এনকোডিং ব্যবহার করুন।
    • তালিকাভুক্ত ডোমেনের সাব-ডোমেনও ম্যাচ করা হয়।
  • requestMethods

    RequestMethod[] ঐচ্ছিক

    Chrome 91+ Chrome 148 থেকে browser.*

    HTTP অনুরোধ পদ্ধতির তালিকা যা নিয়মের সাথে মিলতে পারে। খালি তালিকা অনুমোদিত নয়।

    মনে রাখবেন: requestMethods নিয়মের শর্ত উল্লেখ করলে, HTTP(s) নয় এমন অনুরোধও বাদ দেওয়া হবে, তবে excludedRequestMethods উল্লেখ করলে তা হবে না।

  • resourceTypes

    ResourceType[] ঐচ্ছিক

    রুল ম্যাচ করতে পারে এমন রিসোর্সের ধরনের তালিকা। খালি তালিকা অনুমোদিত নয়।

    মনে রাখবেন: এটি অবশ্যই allowAllRequests নিয়মের জন্য নির্দিষ্ট করতে হবে এবং এতে শুধুমাত্র sub_frame এবং main_frame রিসোর্সের ধরন অন্তর্ভুক্ত থাকতে পারে।

  • responseHeaders

    HeaderInfo[] ঐচ্ছিক

    Chrome 128+ Chrome 148 থেকে browser.*

    অনুরোধটি এই তালিকার (যদি নির্দিষ্ট করা থাকে) কোনও রেসপন্স হেডার শর্তের সাথে মিললে নিয়মটি মিলে যায়।

  • tabIds

    number[] ঐচ্ছিক

    Chrome 92+ browser.* Chrome 148 থেকে

    tabs.Tab.id-এর তালিকা যার সাথে নিয়মটি মিলতে হবে। tabs.TAB_ID_NONE-এর আইডি সেইসব অনুরোধের সাথে মিলে যায় যেগুলি কোনও ট্যাব থেকে শুরু হয় না। খালি তালিকা অনুমোদিত নয়। শুধুমাত্র সেশন-স্কোপড নিয়মের জন্য কাজ করে।

  • topDomains

    string[] ঐচ্ছিক

    Chrome 145+ Chrome 148 থেকে browser.*

    নিয়মটি শুধুমাত্র তখনই নেটওয়ার্ক অনুরোধের সাথে মিলবে যখন সংশ্লিষ্ট টপ-লেভেল ফ্রেমের ডোমেন topDomains-এর তালিকার কোনও একটির সাথে মিলবে। তালিকা বাদ দেওয়া হলে, সব টপ-লেভেল ফ্রেম ডোমেনের সাথে যুক্ত অনুরোধের ক্ষেত্রে নিয়মটি প্রযোজ্য হয়। খালি তালিকা অনুমোদিত নয়।

    মনে রাখবেন:

    • "a.example.com"-এর মতো সাব-ডোমেনও অনুমোদিত।
    • এন্ট্রিতে শুধুমাত্র ascii অক্ষর থাকতে হবে।
    • আন্তর্জাতিক ডোমেনের জন্য পিউনিকোড এনকোডিং ব্যবহার করুন।
    • তালিকাভুক্ত ডোমেনের সাব-ডোমেনও ম্যাচ করা হয়।
    • কোনও সম্পর্কিত টপ-লেভেল ফ্রেম ছাড়া অনুরোধের ক্ষেত্রে (যেমন, ServiceWorker-এর মাধ্যমে শুরু করা অনুরোধ), পরিবর্তে অনুরোধ শুরুকারীর ডোমেন বিবেচনা করা হয়।
  • urlFilter

    স্ট্রিং ঐচ্ছিক

    নেটওয়ার্ক অনুরোধের URL-এর সাথে যে প্যাটার্ন ম্যাচ করে। কাজ করে এমন কনস্ট্রাক্ট:

    '*' : ওয়াইল্ডকার্ড: যেকোনও সংখ্যক অক্ষরের সাথে ম্যাচ করে।

    '|' : বাঁদিকের/ডানদিকের অ্যাঙ্কর: প্যাটার্নের যেকোনও প্রান্তে ব্যবহার করা হলে, যথাক্রমে URL-এর শুরু/শেষ নির্দিষ্ট করে।

    '||' : ডোমেন নেম অ্যাঙ্কর: প্যাটার্নের শুরুতে ব্যবহার করা হলে, URL-এর (সাব-)ডোমেনের শুরু নির্দিষ্ট করে।

    '^' : বিভাজক অক্ষর: এটি অক্ষর, সংখ্যা বা নিম্নলিখিতগুলির মধ্যে যেকোনও একটি ছাড়া অন্য যেকোনও কিছুর সাথে মেলে: _, -, . বা %। এটি URL-এর শেষের সাথেও ম্যাচ করে।

    তাই urlFilter নিম্নলিখিত অংশগুলি নিয়ে গঠিত: (ঐচ্ছিক বাঁদিকের/ডোমেন নামের অ্যাঙ্কর) + প্যাটার্ন + (ঐচ্ছিক ডানদিকের অ্যাঙ্কর)।

    বাদ দেওয়া হলে, সব URL ম্যাচ করা হয়। খালি স্ট্রিং অনুমোদিত নয়।

    ||* দিয়ে শুরু হওয়া প্যাটার্ন অনুমোদিত নয়। এর পরিবর্তে * ব্যবহার করুন।

    মনে রাখবেন: urlFilter বা regexFilter-এর মধ্যে যেকোনও একটি উল্লেখ করা যেতে পারে।

    মনে রাখবেন: urlFilter-এ শুধুমাত্র ASCII অক্ষর থাকতে হবে। এটি এমন একটি URL-এর সাথে ম্যাচ করা হয় যেখানে হোস্টকে পিউনিকোড ফর্ম্যাটে এনকোড করা হয় (আন্তর্জাতিক ডোমেনের ক্ষেত্রে) এবং অন্য যেকোনও নন-ascii অক্ষরকে utf-8-এ URL এনকোড করা হয়। যেমন, অনুরোধের URL http://abc.рф?q=ф হলে, urlFilter http://abc.xn--p1ai/?q=%D1%84 URL-এর সাথে ম্যাচ করা হবে।

RuleConditionKeys

Chrome 145+ Chrome 148 থেকে browser.*

Enum

"urlFilter"

"regexFilter"

"isUrlFilterCaseSensitive"

"initiatorDomains"

"excludedInitiatorDomains"

"requestDomains"

"excludedRequestDomains"

"topDomains"

"excludedTopDomains"

"ডোমেন"

"excludedDomains"

"resourceTypes"

"excludedResourceTypes"

"requestMethods"

"excludedRequestMethods"

"domainType"

"tabIds"

"excludedTabIds"

"responseHeaders"

"excludedResponseHeaders"

Ruleset

প্রপার্টি

  • সক্ষমিত

    বুলিয়ান

    নিয়মাবলী ডিফল্ট হিসেবে চালু করা আছে কিনা।

  • id

    স্ট্রিং

    একটি নন-এম্পটি স্ট্রিং যা অনন্যভাবে রুলসেট শনাক্ত করে। '_' দিয়ে শুরু হওয়া আইডি ইন্টার্নাল ব্যবহারের জন্য রিজার্ভ করা থাকে।

  • পথ

    স্ট্রিং

    এক্সটেনশন ডিরেক্টরির সাথে সম্পর্কিত JSON রুলসেটের পাথ।

RulesMatchedDetails

প্রপার্টি

  • rulesMatchedInfo

    প্রদত্ত ফিল্টারের সাথে ম্যাচ করা নিয়ম।

TabActionCountUpdate

Chrome 89+ Chrome 148 থেকে browser.*

প্রপার্টি

  • বৃদ্ধি হয়েছে

    নম্বর

    ট্যাবের অ্যাকশন কাউন্ট কতটা বাড়াতে হবে। নেগেটিভ মান থাকলে গণনা কমবে।

  • tabId

    নম্বর

    যে ট্যাবের জন্য অ্যাকশন কাউন্ট আপডেট করতে হবে।

TestMatchOutcomeResult

Chrome 103+ Chrome 148 থেকে browser.*

প্রপার্টি

  • matchedRules

    কাল্পনিক অনুরোধের সাথে মিলে যায় এমন নিয়ম (যদি থাকে)।

TestMatchRequestDetails

Chrome 103+ Chrome 148 থেকে browser.*

প্রপার্টি

  • ইনিশিয়েটর

    স্ট্রিং ঐচ্ছিক

    হাইপোথেটিক্যাল অনুরোধের জন্য ইনিশিয়েটর URL (যদি থাকে)।

  • মেথড

    RequestMethod ঐচ্ছিক

    কাল্পনিক অনুরোধের স্ট্যান্ডার্ড HTTP পদ্ধতি। HTTP অনুরোধের জন্য ডিফল্ট হিসেবে "get" সেট করা থাকে এবং HTTP নয় এমন অনুরোধের জন্য উপেক্ষা করা হয়।

  • responseHeaders

    অবজেক্ট ঐচ্ছিক

    Chrome 129+ Chrome 148 থেকে browser.*

    অনুরোধটি পাঠানোর আগে ব্লক বা রিডাইরেক্ট করা না হলে, কাল্পনিক উত্তর দ্বারা প্রদান করা হেডার। একটি অবজেক্ট হিসেবে দেখানো হয় যা স্ট্রিং ভ্যালুর একটি তালিকার সাথে একটি হেডার নাম ম্যাপ করে। উল্লেখ করা না থাকলে, কাল্পনিক রেসপন্স খালি রেসপন্স হেডার ফিরিয়ে দেবে, যা হেডারের অনুপস্থিতির সাথে মেলে এমন নিয়মের সাথে মিলতে পারে। যেমন, {"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}

  • tabId

    নম্বর ঐচ্ছিক

    যে ট্যাবে হাইপোথেটিক্যাল অনুরোধ করা হয় সেটির আইডি। আসল ট্যাব আইডির সাথে মিলতে হবে না। ডিফল্ট হল -১, যার অর্থ হল অনুরোধটি কোনও ট্যাবের সাথে সম্পর্কিত নয়।

  • topUrl

    স্ট্রিং ঐচ্ছিক

    Chrome 145+ Chrome 148 থেকে browser.*

    অনুরোধের জন্য সংশ্লিষ্ট টপ-লেভেল ফ্রেম URL (যদি থাকে)।

  • ধরন

    কাল্পনিক অনুরোধের রিসোর্স টাইপ।

  • URL

    স্ট্রিং

    কাল্পনিক অনুরোধের URL।

UnsupportedRegexReason

Chrome 87+ Chrome 148 থেকে browser.*

প্রদত্ত রেগুলার এক্সপ্রেশন কেন কাজ করে না তার কারণ বর্ণনা করে।

Enum

"syntaxError"
রেগুলার এক্সপ্রেশনের সিনট্যাক্স ভুল অথবা এতে এমন ফিচার ব্যবহার করা হয়েছে যা RE2 সিনট্যাক্সে উপলভ্য নয়।

"memoryLimitExceeded"
রেগুলার এক্সপ্রেশন মেমরির সীমা ছাড়িয়ে গেছে।

UpdateRuleOptions

Chrome 87+ Chrome 148 থেকে browser.*

প্রপার্টি

  • addRules

    নিয়ম[] ঐচ্ছিক

    যোগ করার নিয়ম।

  • removeRuleIds

    number[] ঐচ্ছিক

    যেসব নিয়ম সরাতে হবে সেগুলির আইডি। যেকোনও ভুল আইডি এড়িয়ে যাওয়া হবে।

UpdateRulesetOptions

Chrome 87+ Chrome 148 থেকে browser.*

প্রপার্টি

  • disableRulesetIds

    string[] ঐচ্ছিক

    স্ট্যাটিক Ruleset-এর সাথে সম্পর্কিত আইডি সেট যা বন্ধ করা উচিত।

  • enableRulesetIds

    string[] ঐচ্ছিক

    স্ট্যাটিক Ruleset-এর সাথে সম্পর্কিত আইডির সেট যা চালু করা উচিত।

UpdateStaticRulesOptions

Chrome 111+ Chrome 148 থেকে browser.*

প্রপার্টি

  • disableRuleIds

    number[] ঐচ্ছিক

    বন্ধ করার জন্য Ruleset-এ নিয়মের সাথে সম্পর্কিত আইডির সেট।

  • enableRuleIds

    number[] ঐচ্ছিক

    চালু করার জন্য Ruleset-এ নিয়মের সাথে সম্পর্কিত আইডির সেট।

  • rulesetId

    স্ট্রিং

    স্ট্যাটিক Ruleset-এর সাথে সংশ্লিষ্ট আইডি।

URLTransform

প্রপার্টি

  • ফ্র্যাগমেন্ট

    স্ট্রিং ঐচ্ছিক

    অনুরোধের জন্য নতুন ফ্র্যাগমেন্ট। এটি খালি হতে হবে, সেক্ষেত্রে আগে থেকে থাকা ফ্র্যাগমেন্ট মুছে যাবে; অথবা '#' দিয়ে শুরু হতে হবে।

  • হোস্ট

    স্ট্রিং ঐচ্ছিক

    অনুরোধের জন্য নতুন হোস্ট।

  • পাসওয়ার্ড

    স্ট্রিং ঐচ্ছিক

    অনুরোধের জন্য নতুন পাসওয়ার্ড।

  • পথ

    স্ট্রিং ঐচ্ছিক

    অনুরোধের জন্য নতুন পাথ। ফাঁকা থাকলে, আগে থেকে থাকা পাথ মুছে ফেলা হয়।

  • পোর্ট

    স্ট্রিং ঐচ্ছিক

    অনুরোধের জন্য নতুন পোর্ট। ফাঁকা থাকলে, আগে থেকে থাকা পোর্ট মুছে যায়।

  • কোয়েরি

    স্ট্রিং ঐচ্ছিক

    অনুরোধের জন্য নতুন কোয়েরি। এটি খালি থাকতে পারে, সেক্ষেত্রে আগে থেকে থাকা কোয়েরি মুছে যায়; অথবা '?' দিয়ে শুরু হতে পারে।

  • queryTransform

    QueryTransform ঐচ্ছিক

    কোয়েরি কী-ভ্যালু পেয়ার যোগ করুন, সরান বা পরিবর্তন করুন।

  • স্কিম

    স্ট্রিং ঐচ্ছিক

    অনুরোধের জন্য নতুন স্কিম। অনুমোদিত ভ্যালু হল "http", "https", "ftp" এবং "chrome-extension"।

  • ইউজারনেম

    স্ট্রিং ঐচ্ছিক

    অনুরোধের জন্য নতুন ইউজারনেম।

প্রপার্টি

DYNAMIC_RULESET_ID

এক্সটেনশনের মাধ্যমে যোগ করা ডায়নামিক নিয়মের জন্য Ruleset ID।

ভ্যালু

"_dynamic"

GETMATCHEDRULES_QUOTA_INTERVAL

MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules কল করার সময়সীমা, মিনিটে উল্লেখ করা হয়েছে। অতিরিক্ত কল অবিলম্বে ব্যর্থ হবে এবং runtime.lastError সেট করবে। মনে রাখবেন: getMatchedRules ইউজার জেসচারের সাথে যুক্ত কল কোটার মধ্যে পড়ে না।

ভ্যালু

১০

GUARANTEED_MINIMUM_STATIC_RULES

Chrome 89+ Chrome 148 থেকে browser.*

কোনও এক্সটেনশনের চালু থাকা স্ট্যাটিক রুলসেট জুড়ে গ্যারান্টিযুক্ত স্ট্যাটিক নিয়মের ন্যূনতম সংখ্যা। এই সীমার উপরে থাকা যেকোনও নিয়ম গ্লোবাল স্ট্যাটিক নিয়মের সীমা হিসেবে গণনা করা হবে।

ভ্যালু

৩০০০০

MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL

GETMATCHEDRULES_QUOTA_INTERVAL সময়সীমার মধ্যে getMatchedRules-কে যতবার কল করা যাবে।

ভ্যালু

২০

MAX_NUMBER_OF_DYNAMIC_RULES

কোনও এক্সটেনশন সর্বাধিক যতগুলি ডায়নামিক নিয়ম যোগ করতে পারে।

ভ্যালু

৩০০০০

MAX_NUMBER_OF_ENABLED_STATIC_RULESETS

Chrome 94+ Chrome 148 থেকে browser.*

কোনও এক্সটেনশন যেকোনও সময় সর্বাধিক যতগুলি স্ট্যাটিক Rulesets চালু করতে পারে।

ভ্যালু

৫০

MAX_NUMBER_OF_REGEX_RULES

কোনও এক্সটেনশন সর্বাধিক যতগুলি রেগুলার এক্সপ্রেশন সংক্রান্ত নিয়ম যোগ করতে পারে। এই সীমা ডায়নামিক নিয়মের সেট এবং নিয়ম রিসোর্স ফাইলে উল্লেখ করা নিয়মের জন্য আলাদাভাবে মূল্যায়ন করা হয়।

ভ্যালু

১০০০

MAX_NUMBER_OF_SESSION_RULES

Chrome 120+ ব্রাউজার।* Chrome 148 থেকে

কোনও এক্সটেনশন সেশন স্কোপড নিয়মের সর্বাধিক যতগুলি সংখ্যা যোগ করতে পারে।

ভ্যালু

৫০০০

MAX_NUMBER_OF_STATIC_RULESETS

"rule_resources" ম্যানিফেস্ট কী-এর অংশ হিসেবে কোনও এক্সটেনশন সর্বাধিক যতগুলি স্ট্যাটিক Rulesets নির্দিষ্ট করতে পারে।

ভ্যালু

১০০

MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES

Chrome 120+ ব্রাউজার।* Chrome 148 থেকে

কোনও এক্সটেনশন সর্বাধিক যতগুলি "অনিরাপদ" ডায়নামিক নিয়ম যোগ করতে পারে।

ভ্যালু

৫০০০

MAX_NUMBER_OF_UNSAFE_SESSION_RULES

Chrome 120+ ব্রাউজার।* Chrome 148 থেকে

কোনও এক্সটেনশন সর্বাধিক যতগুলি "অসুরক্ষিত" সেশন স্কোপড নিয়ম যোগ করতে পারে।

ভ্যালু

৫০০০

SESSION_RULESET_ID

Chrome 90+ browser.* Chrome 148 থেকে

এক্সটেনশনের মাধ্যমে যোগ করা সেশন-স্কোপড নিয়মের জন্য রুলসেট আইডি।

ভ্যালু

"_session"

পদ্ধতি

getAvailableStaticRuleCount()

Chrome 89+ Chrome 148 থেকে browser.*
browser.declarativeNetRequest.getAvailableStaticRuleCount(): Promise<number>

গ্লোবাল স্ট্যাটিক রুলের সীমা-তে পৌঁছানোর আগে কোনও এক্সটেনশন যতগুলি স্ট্যাটিক রুল চালু করতে পারে সেই সংখ্যাটি দেখায়।

রিটার্ন

  • Promise<number>

    Chrome 91+ Chrome 148 থেকে browser.*

getDisabledRuleIds()

Chrome 111+ Chrome 148 থেকে browser.*
browser.declarativeNetRequest.getDisabledRuleIds(
  options: GetDisabledRuleIdsOptions,
)
: Promise<number[]>

প্রদত্ত Ruleset-এ বর্তমানে বন্ধ থাকা স্ট্যাটিক নিয়মের তালিকা দেখায়।

প্যারামিটারগুলি

  • বিকল্প

    কোয়েরি করার জন্য রুলসেট নির্দিষ্ট করে।

রিটার্ন

  • <number[]> প্রমিস

    প্রমিস যা সেই রুলসেটে বন্ধ করা নিয়মের সাথে সম্পর্কিত আইডির তালিকা সহ সমাধান করে।

getDynamicRules()

browser.declarativeNetRequest.getDynamicRules(
  filter?: GetRulesFilter,
)
: Promise<Rule[]>

এক্সটেনশনের জন্য ডায়নামিক নিয়মের বর্তমান সেট রিটার্ন করে। কলাররা চাইলে filter উল্লেখ করে ফেচ করা নিয়মের তালিকা ফিল্টার করতে পারেন।

প্যারামিটারগুলি

  • ফিল্টার করুন

    GetRulesFilter ঐচ্ছিক

    Chrome 111+ Chrome 148 থেকে browser.*

    ফেচ করা নিয়মের তালিকা ফিল্টার করার অবজেক্ট।

রিটার্ন

  • প্রতিশ্রুতি<নিয়ম[]>

    Chrome 91+ Chrome 148 থেকে browser.*

    প্রমিস যা ডায়নামিক রুলের সেটের সাথে সমাধান করে। সাময়িক ইন্টার্নাল সমস্যার কারণে Promise বাতিল হয়ে যেতে পারে।

getEnabledRulesets()

browser.declarativeNetRequest.getEnabledRulesets(): Promise<string[]>

চালু থাকা স্ট্যাটিক রুলসেটের বর্তমান সেটের আইডি দেখায়।

রিটার্ন

  • Promise<string[]>

    Chrome 91+ Chrome 148 থেকে browser.*

    প্রমিস যা আইডির তালিকা সহ সমাধান করে, যেখানে প্রতিটি আইডি চালু থাকা স্ট্যাটিক Ruleset-এর সাথে সম্পর্কিত।

getMatchedRules()

browser.declarativeNetRequest.getMatchedRules(
  filter?: MatchedRulesFilter,
)
: Promise<RulesMatchedDetails>

এক্সটেনশনের জন্য মিলে যাওয়া সব নিয়ম ফিরিয়ে আনে। কলকারী চাইলে filter উল্লেখ করে ম্যাচ করা নিয়মের তালিকা ফিল্টার করতে পারেন। এই পদ্ধতিটি শুধুমাত্র সেইসব এক্সটেনশনের জন্য উপলভ্য যেগুলির "declarativeNetRequestFeedback" অনুমতি আছে বা filter-এ নির্দিষ্ট করা tabId-এর জন্য "activeTab" অনুমতি দেওয়া হয়েছে। মনে রাখবেন: পাঁচ মিনিটের বেশি আগে ম্যাচ করা অ্যাক্টিভ ডকুমেন্টের সাথে যুক্ত নয় এমন নিয়ম ফেরত দেওয়া হবে না।

প্যারামিটারগুলি

  • ফিল্টার করুন

    MatchedRulesFilter ঐচ্ছিক

    মিলে যাওয়া নিয়মের তালিকা ফিল্টার করার অবজেক্ট।

রিটার্ন

  • <RulesMatchedDetails> প্রমিস করুন

    Chrome 91+ Chrome 148 থেকে browser.*

    মিলে যাওয়া নিয়মের তালিকা ফেচ করা হয়ে গেলে প্রমিজ রিজলভ হয়। কোনও সমস্যা হলে, Promise বাতিল করা হবে। এটি একাধিক কারণে হতে পারে, যেমন পর্যাপ্ত অনুমতি না থাকা বা কোটা পেরিয়ে যাওয়া।

getSessionRules()

Chrome 90+ browser.* Chrome 148 থেকে
browser.declarativeNetRequest.getSessionRules(
  filter?: GetRulesFilter,
)
: Promise<Rule[]>

এক্সটেনশনের জন্য সেশন স্কোপ করা নিয়মের বর্তমান সেট ফিরিয়ে আনে। কলাররা চাইলে filter উল্লেখ করে ফেচ করা নিয়মের তালিকা ফিল্টার করতে পারেন।

প্যারামিটারগুলি

  • ফিল্টার করুন

    GetRulesFilter ঐচ্ছিক

    Chrome 111+ Chrome 148 থেকে browser.*

    ফেচ করা নিয়মের তালিকা ফিল্টার করার অবজেক্ট।

রিটার্ন

  • প্রতিশ্রুতি<নিয়ম[]>

    Chrome 91+ Chrome 148 থেকে browser.*

    সেশন স্কোপড নিয়মের সেট সহ সমাধান করে এমন প্রমিস।

isRegexSupported()

Chrome 87+ Chrome 148 থেকে browser.*
browser.declarativeNetRequest.isRegexSupported(
  regexOptions: RegexOptions,
)
: Promise<IsRegexSupportedResult>

প্রদত্ত রেগুলার এক্সপ্রেশন regexFilter নিয়মের শর্ত হিসেবে কাজ করবে কিনা তা চেক করে।

প্যারামিটারগুলি

  • regexOptions

    চেক করার জন্য রেগুলার এক্সপ্রেশন।

রিটার্ন

  • Chrome 91+ Chrome 148 থেকে browser.*

    রেগুলার এক্সপ্রেশন কাজ করে কিনা এবং না করলে তার কারণ সহ বিবরণ সহ সমাধান করে এমন প্রমিস।

setExtensionActionOptions()

Chrome 88+ Chrome 148 থেকে browser.*
browser.declarativeNetRequest.setExtensionActionOptions(
  options: ExtensionActionOptions,
)
: Promise<void>

ট্যাবের জন্য অ্যাকশন কাউন্ট এক্সটেনশন অ্যাকশনের ব্যাজ টেক্সট হিসেবে দেখানো হবে কিনা তা কনফিগার করে এবং সেই অ্যাকশন কাউন্ট বাড়ানোর একটি উপায় প্রদান করে।

প্যারামিটারগুলি

রিটার্ন

  • <void> প্রমিস

    Chrome 91+ Chrome 148 থেকে browser.*

testMatchOutcome()

Chrome 103+ Chrome 148 থেকে browser.*
browser.declarativeNetRequest.testMatchOutcome(
  request: TestMatchRequestDetails,
)
: Promise<TestMatchOutcomeResult>

এক্সটেনশনের কোনও declarativeNetRequest নিয়ম কাল্পনিক অনুরোধের সাথে ম্যাচ করবে কিনা তা চেক করে। মনে রাখবেন: শুধুমাত্র আনপ্যাক করা এক্সটেনশনের জন্য উপলভ্য কারণ এটি শুধুমাত্র এক্সটেনশন ডেভেলপমেন্টের সময় ব্যবহার করার জন্য তৈরি করা হয়েছে।

প্যারামিটারগুলি

রিটার্ন

  • প্রতিশ্রুতি<TestMatchOutcomeResult>

    প্রমিস যা মিলে যাওয়া নিয়মের বিবরণ সহ সমাধান করে।

updateDynamicRules()

browser.declarativeNetRequest.updateDynamicRules(
  options: UpdateRuleOptions,
)
: Promise<void>

এক্সটেনশনের জন্য ডায়নামিক নিয়মের বর্তমান সেট পরিবর্তন করে। options.removeRuleIds-এ তালিকাভুক্ত আইডি সহ নিয়মগুলি প্রথমে সরানো হয় এবং তারপরে options.addRules-এ দেওয়া নিয়মগুলি যোগ করা হয়। মনে রাখবেন:

  • এই আপডেটটি একটি একক পারমাণবিক অপারেশন হিসাবে ঘটে: হয় সমস্ত নির্দিষ্ট নিয়ম যোগ করা এবং সরানো হয়, অথবা একটি ত্রুটি ফেরত দেওয়া হয়।
  • এইসব নিয়ম ব্রাউজার সেশন ও এক্সটেনশন আপডেট জুড়ে বজায় থাকে।
  • এক্সটেনশন প্যাকেজের অংশ হিসেবে উল্লেখ করা স্ট্যাটিক নিয়ম এই ফাংশন ব্যবহার করে সরানো যাবে না।
  • MAX_NUMBER_OF_DYNAMIC_RULES হল সর্বাধিক সংখ্যক ডাইনামিক নিয়ম যা কোনও এক্সটেনশন যোগ করতে পারে। অসুরক্ষিত নিয়মের সংখ্যা MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES-এর বেশি হলে চলবে না।

প্যারামিটারগুলি

রিটার্ন

  • <void> প্রমিস

    Chrome 91+ Chrome 148 থেকে browser.*

    আপডেট সম্পূর্ণ হলে প্রমিস রিজলভ হয়। কোনও সমস্যা হলে, প্রমিস বাতিল করা হবে এবং রুল সেটে কোনও পরিবর্তন করা হবে না। এটি একাধিক কারণে হতে পারে, যেমন, ভুল নিয়ম ফর্ম্যাট, ডুপ্লিকেট নিয়ম আইডি, নিয়মের সংখ্যা সীমা অতিক্রম করা, ইন্টার্নাল সমস্যা এবং অন্যান্য।

updateEnabledRulesets()

browser.declarativeNetRequest.updateEnabledRulesets(
  options: UpdateRulesetOptions,
)
: Promise<void>

এক্সটেনশনের জন্য চালু করা স্ট্যাটিক রুলসেটের সেট আপডেট করে। options.disableRulesetIds-এ তালিকাভুক্ত আইডি সহ রুলসেট প্রথমে সরানো হয় এবং তারপরে options.enableRulesetIds-এ তালিকাভুক্ত রুলসেট যোগ করা হয়। মনে রাখবেন যে চালু করা স্ট্যাটিক রুলসেটের সেট সেশন জুড়ে থাকে তবে এক্সটেনশন আপডেট জুড়ে থাকে না, অর্থাৎ rule_resources ম্যানিফেস্ট কী প্রতিটি এক্সটেনশন আপডেটে চালু করা স্ট্যাটিক রুলসেটের সেট নির্ধারণ করবে।

প্যারামিটারগুলি

রিটার্ন

  • <void> প্রমিস

    Chrome 91+ Chrome 148 থেকে browser.*

    আপডেট সম্পূর্ণ হলে প্রমিস রিজলভ হয়। কোনও সমস্যা হলে, প্রমিস বাতিল করা হবে এবং চালু থাকা রুলসেটের সেটে কোনও পরিবর্তন করা হবে না। এটি একাধিক কারণে হতে পারে, যেমন ভুল রুলসেট আইডি, নিয়মের সংখ্যা সীমা অতিক্রম করা বা ইন্টার্নাল সমস্যা।

updateSessionRules()

Chrome 90+ browser.* Chrome 148 থেকে
browser.declarativeNetRequest.updateSessionRules(
  options: UpdateRuleOptions,
)
: Promise<void>

এক্সটেনশনের জন্য সেশন স্কোপড নিয়মের বর্তমান সেট পরিবর্তন করে। options.removeRuleIds-এ তালিকাভুক্ত আইডি সহ নিয়মগুলি প্রথমে সরানো হয় এবং তারপরে options.addRules-এ দেওয়া নিয়মগুলি যোগ করা হয়। মনে রাখবেন:

  • এই আপডেটটি একটি একক পারমাণবিক অপারেশন হিসাবে ঘটে: হয় সমস্ত নির্দিষ্ট নিয়ম যোগ করা এবং সরানো হয়, অথবা একটি ত্রুটি ফেরত দেওয়া হয়।
  • এইসব নিয়ম সেশন জুড়ে বজায় থাকে না এবং মেমরিতে ব্যাক-আপ নেওয়া হয়।
  • MAX_NUMBER_OF_SESSION_RULES হল সেশন নিয়মের সর্বাধিক সংখ্যা যা কোনও এক্সটেনশন যোগ করতে পারে।

প্যারামিটারগুলি

রিটার্ন

  • <void> প্রমিস

    Chrome 91+ Chrome 148 থেকে browser.*

    আপডেট সম্পূর্ণ হলে প্রমিস রিজলভ হয়। কোনও সমস্যা হলে, প্রমিস বাতিল করা হবে এবং রুল সেটে কোনও পরিবর্তন করা হবে না। এটি একাধিক কারণে হতে পারে, যেমন ভুল নিয়মের ফর্ম্যাট, ডুপ্লিকেট নিয়ম আইডি, নিয়মের সংখ্যা সীমা অতিক্রম করা এবং অন্যান্য।

updateStaticRules()

Chrome 111+ Chrome 148 থেকে browser.*
browser.declarativeNetRequest.updateStaticRules(
  options: UpdateStaticRulesOptions,
)
: Promise<void>

Ruleset-এ আলাদা আলাদা স্ট্যাটিক নিয়ম বন্ধ ও চালু করে। বন্ধ থাকা Ruleset-এর নিয়মে পরিবর্তন করা হলে, সেটি আবার চালু করার সময় থেকে কার্যকর হবে।

প্যারামিটারগুলি

রিটার্ন

  • <void> প্রমিস

    আপডেট সম্পূর্ণ হলে প্রমিস রিজলভ হয়। কোনও সমস্যা হলে, প্রমিস বাতিল করা হবে এবং চালু থাকা স্ট্যাটিক নিয়মে কোনও পরিবর্তন করা হবে না।

ইভেন্ট

onRuleMatchedDebug

browser.declarativeNetRequest.onRuleMatchedDebug.addListener(
  callback: function,
)

কোনও অনুরোধের সাথে নিয়ম মিলে গেলে ফায়ার করা হয়। শুধুমাত্র "declarativeNetRequestFeedback" অনুমতি সহ আনপ্যাক করা এক্সটেনশনের জন্য উপলভ্য কারণ এটি শুধুমাত্র ডিবাগিংয়ের উদ্দেশ্যে ব্যবহার করার জন্য তৈরি করা হয়েছে।

প্যারামিটারগুলি