chrome.declarativeNetRequest

বর্ণনা

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

অনুমতি

declarativeNetRequest
declarativeNetRequestWithHostAccess

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

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

প্রাপ্যতা

ক্রোম ৮৪+

প্রকাশ

পূর্বে বর্ণিত অনুমতিগুলো ছাড়াও, নির্দিষ্ট ধরণের রুলসেট, বিশেষ করে স্ট্যাটিক রুলসেটের জন্য, "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" থেকে উদ্ভূত সমস্ত স্ক্রিপ্ট অনুরোধকে এমন যেকোনো URL-এ ব্লক করে, যেখানে "abc" একটি সাবস্ট্রিং হিসাবে রয়েছে।

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

URL মিলানো

ডিক্লারেটিভ নেট রিকোয়েস্ট প্যাটার্ন ম্যাচিং সিনট্যাক্স অথবা রেগুলার এক্সপ্রেশন ব্যবহার করে ইউআরএল মেলানোর সুবিধা প্রদান করে।

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

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

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://baexample.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" কী-টি দেখুন। এই কন্ডিশনগুলোর ক্ষেত্রে প্রযোজ্য সীমাবদ্ধতাগুলো সম্পর্কে জানতে, ‘Rules that use regular expressions’ দেখুন।

ভালো 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-এর যেকোনো পাথের সাথে মিলে যায়।

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

নেটওয়ার্ক অনুরোধের জীবনচক্রের বিভিন্ন পর্যায়ে ব্রাউজার দ্বারা ডিএনআর নিয়মগুলো প্রয়োগ করা হয়।

অনুরোধের আগে

কোনো অনুরোধ করার আগে, একটি এক্সটেনশন উপযুক্ত নিয়মের মাধ্যমে সেটিকে ব্লক বা রিডাইরেক্ট করতে পারে (যার মধ্যে HTTP থেকে HTTPS-এ স্কিম আপগ্রেড করাও অন্তর্ভুক্ত)।

প্রতিটি এক্সটেনশনের জন্য, ব্রাউজার মিলে যাওয়া নিয়মগুলির একটি তালিকা নির্ধারণ করে। modifyHeaders অ্যাকশনযুক্ত নিয়মগুলি এখানে অন্তর্ভুক্ত করা হয় না, কারণ সেগুলি পরে পরিচালনা করা হবে। এছাড়াও, responseHeaders কন্ডিশনযুক্ত নিয়মগুলি পরে (যখন রেসপন্স হেডার পাওয়া যাবে) বিবেচনা করা হবে এবং সেগুলি অন্তর্ভুক্ত করা হয় না।

এরপর, প্রতিটি এক্সটেনশনের জন্য, ক্রোম প্রতি অনুরোধে সর্বাধিক একটি প্রার্থী বাছাই করে। ক্রোম সমস্ত মিলে যাওয়া নিয়মগুলোকে অগ্রাধিকার অনুসারে সাজিয়ে একটি উপযুক্ত নিয়ম খুঁজে বের করে। একই অগ্রাধিকারের নিয়মগুলোকে তাদের কার্যকলাপ অনুসারে সাজানো হয় ( allow বা allowAllRequests > block > upgradeScheme > redirect )।

যদি ক্যান্ডিডেটটি একটি allow বা allowAllRequests রুল হয়, অথবা যে ফ্রেমে অনুরোধটি করা হচ্ছে সেটি পূর্বে এই এক্সটেনশনের উচ্চতর বা সমান অগ্রাধিকারের কোনো allowAllRequests রুলের সাথে মিলে গিয়ে থাকে, তাহলে অনুরোধটি "অনুমোদিত" বলে গণ্য হবে এবং এক্সটেনশনটি অনুরোধটির উপর কোনো প্রভাব ফেলবে না।

যদি একাধিক এক্সটেনশন এই অনুরোধটি ব্লক বা রিডাইরেক্ট করতে চায়, তবে একটিমাত্র পদক্ষেপ বেছে নেওয়া হয়। ক্রোম এই কাজটি করে নিয়মগুলোকে block > redirect বা upgradeScheme > allow বা allowAllRequests ক্রমে সাজিয়ে। যদি দুটি নিয়ম একই ধরনের হয়, তবে ক্রোম সবচেয়ে সম্প্রতি ইনস্টল করা এক্সটেনশনের নিয়মটি বেছে নেয়।

অনুরোধ হেডার পাঠানোর আগে

ক্রোম সার্ভারে রিকোয়েস্ট হেডার পাঠানোর আগে, modifyHeaders রুলগুলোর মিলের ভিত্তিতে হেডারগুলো আপডেট করা হয়।

একটিমাত্র এক্সটেনশনের মধ্যে, ক্রোম সমস্ত মিলে যাওয়া modifyHeaders রুল খুঁজে বের করে পরিবর্তনগুলির তালিকা তৈরি করে। আগের মতোই, শুধুমাত্র সেই রুলগুলিই অন্তর্ভুক্ত করা হয় যেগুলির অগ্রাধিকার মিলে যাওয়া যেকোনো allow বা allowAllRequests রুলের চেয়ে বেশি।

ক্রোম এই নিয়মগুলো এমন একটি ক্রমে প্রয়োগ করে, যাতে সম্প্রতি ইনস্টল করা কোনো এক্সটেনশনের নিয়মগুলো সর্বদা পুরোনো কোনো এক্সটেনশনের নিয়মের আগে মূল্যায়ন করা হয়। এছাড়াও, একটি এক্সটেনশনের উচ্চ অগ্রাধিকারের নিয়মগুলো সর্বদা একই এক্সটেনশনের নিম্ন অগ্রাধিকারের নিয়মের আগে প্রয়োগ করা হয়। লক্ষণীয় যে, এমনকি বিভিন্ন এক্সটেনশনের ক্ষেত্রেও:

  • যদি কোনো নিয়ম কোনো হেডারে কিছু যুক্ত করে, তাহলে নিম্ন অগ্রাধিকারের নিয়মগুলোই কেবল সেই হেডারে কিছু যুক্ত করতে পারবে। সেট এবং রিমুভ অপারেশন অনুমোদিত নয়।
  • যদি কোনো নিয়ম একটি হেডার নির্ধারণ করে, তাহলে শুধুমাত্র একই এক্সটেনশনের নিম্ন অগ্রাধিকারের নিয়মগুলোই সেই হেডারে কিছু যুক্ত করতে পারবে। অন্য কোনো পরিবর্তনের অনুমতি নেই।
  • যদি কোনো নিয়ম একটি হেডার মুছে দেয়, তাহলে কম অগ্রাধিকারের নিয়মগুলো সেই হেডারটিকে আর পরিবর্তন করতে পারে না।

একবার প্রতিক্রিয়া পাওয়া গেলে

রেসপন্স হেডারগুলো পাওয়ার পর, ক্রোম একটি responseHeaders কন্ডিশনসহ রুলগুলো মূল্যায়ন করে।

এই নিয়মগুলোকে actionpriority অনুসারে সাজানোর পর এবং কোনো মিলে যাওয়া allow বা allowAllRequests নিয়মের কারণে অপ্রয়োজনীয় হয়ে পড়া নিয়মগুলোকে বাদ দেওয়ার পর (এই প্রক্রিয়াটি "অনুরোধের আগে" অংশের ধাপগুলোর মতোই ঘটে), Chrome কোনো এক্সটেনশনের পক্ষ থেকে অনুরোধটি ব্লক বা পুনঃনির্দেশিত করতে পারে।

মনে রাখবেন, যদি কোনো অনুরোধ এই পর্যায়ে পৌঁছে যায়, তাহলে অনুরোধটি ইতিমধ্যেই সার্ভারে পাঠানো হয়েছে এবং সার্ভার অনুরোধের মূল অংশের (request body) মতো ডেটা পেয়ে গেছে। প্রতিক্রিয়া হেডারের শর্তসহ (response headers condition) একটি ব্লক বা রিডাইরেক্ট নিয়ম তখনও কার্যকর হবে—কিন্তু প্রকৃতপক্ষে অনুরোধটিকে ব্লক বা রিডাইরেক্ট করতে পারবে না।

ব্লক রুলের ক্ষেত্রে, যে পেজটি অনুরোধটি করেছিল সেটি একটি ব্লকড রেসপন্স পায় এবং ক্রোম অনুরোধটি আগেই বন্ধ করে দেয়। রিডাইরেক্ট রুলের ক্ষেত্রে, ক্রোম রিডাইরেক্ট করা ইউআরএল-এ একটি নতুন অনুরোধ পাঠায়। এই আচরণগুলো আপনার এক্সটেনশনের জন্য প্রয়োজনীয় গোপনীয়তার প্রত্যাশা পূরণ করে কিনা, তা অবশ্যই বিবেচনা করে দেখবেন।

অনুরোধটি ব্লক বা রিডাইরেক্ট করা না হলে, Chrome যেকোনো modifyHeaders নিয়ম প্রয়োগ করে। রেসপন্স হেডারে পরিবর্তন প্রয়োগ করার পদ্ধতিটি "অনুরোধ হেডার পাঠানোর আগে" অংশে বর্ণিত পদ্ধতির মতোই। অনুরোধ হেডারে পরিবর্তন প্রয়োগ করলে কোনো কাজ হয় না, কারণ অনুরোধটি ইতিমধ্যে করা হয়ে গেছে।

নিরাপদ নিয়ম

নিরাপদ নিয়ম বলতে সেইসব নিয়মকে বোঝানো হয়, যেগুলোর অ্যাকশন হলো block , allow , allowAllRequests বা upgradeScheme । এই নিয়মগুলো একটি বর্ধিত ডাইনামিক রুলস কোটার অধীন।

নিয়মের সীমা

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

স্থির নিয়ম

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

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

অধিবেশনের নিয়মাবলী

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

ক্রোম ১২০-এর আগে, ডাইনামিক এবং সেশন রুল মিলিয়ে মোট ৫০০০-এর একটি সীমা ছিল।

গতিশীল নিয়ম

একটি এক্সটেনশনে কমপক্ষে ৫০০০টি ডাইনামিক রুল থাকতে পারে। এটি MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES হিসেবে প্রকাশ করা হয়।

ক্রোম ১২১ থেকে, নিরাপদ ডাইনামিক রুলগুলোর জন্য ৩০,০০০-এর একটি বৃহত্তর সীমা উপলব্ধ করা হয়েছে, যা MAX_NUMBER_OF_DYNAMIC_RULES হিসাবে প্রদর্শিত হয়। ৫০০০-এর সীমার মধ্যে যোগ করা যেকোনো অনিরাপদ রুলও এই সীমার মধ্যে গণনা করা হবে।

ক্রোম ১২০-এর আগে, ডাইনামিক এবং সেশন রুল মিলিয়ে মোট ৫০০০টির একটি সীমা ছিল।

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

সব ধরনের নিয়মেই রেগুলার এক্সপ্রেশন ব্যবহার করা যায়; তবে, প্রতিটি ধরনের রেগুলার এক্সপ্রেশন নিয়মের মোট সংখ্যা ১০০০-এর বেশি হতে পারে না। একে 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 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);
}

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

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

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

এই উদাহরণগুলির জন্য *://*.example.com/* -এ হোস্ট পারমিশন প্রয়োজন।

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

https://google.com-এ নেভিগেশন
এই URL-টির জন্য দুটি নিয়ম প্রযোজ্য: ১ এবং ৪ আইডি-র নিয়ম দুটি। ১ আইডি-র নিয়মটি প্রযোজ্য, কারণ "block" অ্যাকশনের অগ্রাধিকার "redirect" অ্যাকশনের চেয়ে বেশি। বাকি নিয়মগুলো প্রযোজ্য নয়, কারণ সেগুলো আরও দীর্ঘ URL-এর জন্য।
https://google.com/1234-এ নেভিগেশন
URL-টি দীর্ঘ হওয়ার কারণে, এখন ID 1 এবং 4 যুক্ত নিয়মগুলোর পাশাপাশি ID 2 যুক্ত নিয়মটিও মিলে যাচ্ছে। ID 2 যুক্ত নিয়মটি প্রযোজ্য হয় কারণ "allow" অগ্রাধিকার "block" এবং "redirect" চেয়ে বেশি।
https://google.com/12345-এ নেভিগেশন
চারটি নিয়মই এই URL-এর সাথে মেলে। ৩ নম্বর আইডিযুক্ত নিয়মটি প্রযোজ্য, কারণ ডেভেলপার-নির্ধারিত অগ্রাধিকারের দিক থেকে এটি এই গ্রুপের মধ্যে সর্বোচ্চ।
[
  {
    "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) সেই ফ্রেমের ডোমেইনের সমান হয় যেখান থেকে অনুরোধটি উদ্ভূত হয়েছে।

এনাম

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

"তৃতীয় পক্ষ"
নেটওয়ার্ক অনুরোধটি যে ফ্রেমে উদ্ভূত হয়েছে, তার থেকে এটি একটি তৃতীয় পক্ষ।

ExtensionActionOptions

ক্রোম ৮৮+

বৈশিষ্ট্য

  • displayActionCountAsBadgeText

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

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

  • ট্যাবআপডেট

    TabActionCountUpdate ঐচ্ছিক

    ক্রোম ৮৯+

    ট্যাবের অ্যাকশন সংখ্যা কীভাবে সমন্বয় করা হবে তার বিবরণ।

GetDisabledRuleIdsOptions

ক্রোম ১১১+

বৈশিষ্ট্য

  • নিয়মসেট আইডি

    স্ট্রিং

    একটি স্ট্যাটিক Ruleset সাথে সম্পর্কিত আইডি।

GetRulesFilter

ক্রোম ১১১+

বৈশিষ্ট্য

  • নিয়ম আইডি

    সংখ্যা[] ঐচ্ছিক

    নির্দিষ্ট করা থাকলে, শুধুমাত্র মিলে যাওয়া আইডিযুক্ত নিয়মগুলোই অন্তর্ভুক্ত করা হয়।

HeaderInfo

ক্রোম ১২৮+

বৈশিষ্ট্য

  • বাদ দেওয়া মানগুলি

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

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

  • হেডার

    স্ট্রিং

    হেডারের নাম। এই শর্তটি শুধুমাত্র নামের সাথে মেলে, যদি values ​​এবং excludedValues ​​উভয়ই নির্দিষ্ট করা না থাকে।

  • মূল্যবোধ

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

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

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

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

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

HeaderOperation

ক্রোম ৮৬+

এখানে 'modifyHeaders' রুলের সম্ভাব্য অপারেশনগুলো বর্ণনা করা হয়েছে।

এনাম

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

"সেট"
নির্দিষ্ট হেডারের জন্য একটি নতুন মান নির্ধারণ করে এবং একই নামের বিদ্যমান হেডারগুলো মুছে দেয়।

"অপসারণ করুন"
নির্দিষ্ট হেডারের সমস্ত এন্ট্রি মুছে দেয়।

IsRegexSupportedResult

ক্রোম ৮৭+

বৈশিষ্ট্য

  • সমর্থিত

    বুলিয়ান

  • কারণ

    UnsupportedRegexReason ঐচ্ছিক

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

MatchedRule

বৈশিষ্ট্য

  • নিয়ম আইডি

    সংখ্যা

    একটি মিলে যাওয়া নিয়মের আইডি।

  • নিয়মসেট আইডি

    স্ট্রিং

    এই নিয়মটি Ruleset অন্তর্গত, তার আইডি। ডাইনামিক রুলের সেট থেকে উদ্ভূত কোনো নিয়মের ক্ষেত্রে, এটি DYNAMIC_RULESET_ID এর সমান হবে।

MatchedRuleInfo

বৈশিষ্ট্য

  • ট্যাবআইডি

    সংখ্যা

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

  • টাইমস্ট্যাম্প

    সংখ্যা

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

MatchedRuleInfoDebug

বৈশিষ্ট্য

MatchedRulesFilter

বৈশিষ্ট্য

  • minTimeStamp

    সংখ্যা ঐচ্ছিক

    নির্দিষ্ট করা থাকলে, শুধুমাত্র প্রদত্ত টাইমস্ট্যাম্পের পরের নিয়মগুলোই মেলানো হবে।

  • ট্যাবআইডি

    সংখ্যা ঐচ্ছিক

    নির্দিষ্ট করা থাকলে, এটি শুধুমাত্র প্রদত্ত ট্যাবের নিয়মগুলোই মেলাবে। -১ এ সেট করা হলে, এটি এমন নিয়মগুলোও মেলাবে যা কোনো সক্রিয় ট্যাবের সাথে যুক্ত নয়।

ModifyHeaderInfo

ক্রোম ৮৬+

বৈশিষ্ট্য

  • হেডার

    স্ট্রিং

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

  • হেডারের উপর যে অপারেশনটি সম্পাদন করতে হবে।

  • মূল্য

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

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

QueryKeyValue

বৈশিষ্ট্য

  • চাবি

    স্ট্রিং

  • শুধুমাত্র প্রতিস্থাপন করুন

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

    ক্রোম ৯৪+

    যদি 'true' হয়, তাহলে কোয়েরি কী-টি শুধুমাত্র তখনই প্রতিস্থাপন করা হয় যখন সেটি আগে থেকেই উপস্থিত থাকে। অন্যথায়, কী-টি অনুপস্থিত থাকলে সেটি যোগও করা হয়। এর ডিফল্ট মান 'false'।

  • মূল্য

    স্ট্রিং

QueryTransform

বৈশিষ্ট্য

  • addOrReplaceParams

    QueryKeyValue [] ঐচ্ছিক

    যোগ বা প্রতিস্থাপন করা হবে এমন কোয়েরি কী-ভ্যালু জোড়গুলোর তালিকা।

  • removeParams

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

    যেসব কোয়েরি কী অপসারণ করা হবে, তার তালিকা।

Redirect

বৈশিষ্ট্য

  • এক্সটেনশন পাথ

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

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

  • রেজেক্স প্রতিস্থাপন

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

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

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

    URLTransform ঐচ্ছিক

    সম্পাদন করার জন্য ইউআরএল রূপান্তরসমূহ।

  • ইউআরএল

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

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

RegexOptions

ক্রোম ৮৭+

বৈশিষ্ট্য

  • কেস-সংবেদনশীল

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

    নির্দিষ্ট regex কেস-সেনসিটিভ হবে কিনা। ডিফল্ট মান হলো ট্রু।

  • রেজেক্স

    স্ট্রিং

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

  • ক্যাপচারিং প্রয়োজন

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

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

RequestDetails

বৈশিষ্ট্য

  • ডকুমেন্ট আইডি

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

    ক্রোম ১০৬+

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

  • ডকুমেন্ট লাইফসাইকেল
    ক্রোম ১০৬+

    যদি এই অনুরোধটি কোনো ফ্রেমের জন্য হয়, তবে ফ্রেমটির ডকুমেন্টের জীবনচক্র।

  • ফ্রেমআইডি

    সংখ্যা

    ০ মানটি নির্দেশ করে যে অনুরোধটি মূল ফ্রেমে ঘটছে; একটি ধনাত্মক মান সেই সাবফ্রেমের আইডি নির্দেশ করে যেখানে অনুরোধটি ঘটছে। যদি কোনো (সাব-)ফ্রেমের ডকুমেন্ট লোড করা হয় (যার type main_frame বা sub_frame ), তাহলে frameId এই ফ্রেমের আইডি নির্দেশ করে, বাইরের ফ্রেমের আইডি নয়। একটি ট্যাবের মধ্যে ফ্রেম আইডিগুলো অনন্য হয়।

  • ফ্রেমটাইপ
    ক্রোম ১০৬+

    ফ্রেমের ধরণ, যদি এই অনুরোধটি একটি ফ্রেমের জন্য হয়।

  • উদ্যোগী

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

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

  • পদ্ধতি

    স্ট্রিং

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

  • প্যারেন্টডকুমেন্টআইডি

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

    ক্রোম ১০৬+

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

  • parentFrameId

    সংখ্যা

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

  • অনুরোধ আইডি

    স্ট্রিং

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

  • ট্যাবআইডি

    সংখ্যা

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

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

  • ইউআরএল

    স্ট্রিং

    অনুরোধটির URL।

RequestMethod

ক্রোম ৯১+

এখানে নেটওয়ার্ক অনুরোধের HTTP রিকোয়েস্ট মেথড বর্ণনা করা হয়েছে।

এনাম

"সংযোগ"

"মুছে ফেলুন"

"পাওয়া"

"মাথা"

"বিকল্প"

"প্যাচ"

"পোস্ট"

"রাখা"

"অন্যান্য"

ResourceType

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

এনাম

"প্রধান_ফ্রেম"

"সাব_ফ্রেম"

"স্টাইলশিট"

"স্ক্রিপ্ট"

"ছবি"

"ফন্ট"

"বস্তু"

"xmlhttprequest"

"পিং"

"csp_report"

"মিডিয়া"

"ওয়েবসকেট"

"ওয়েবট্রান্সপোর্ট"

"ওয়েববান্ডেল"

"অন্যান্য"

Rule

বৈশিষ্ট্য

  • এই নিয়মটি মিলে গেলে যে পদক্ষেপ নিতে হবে।

  • অবস্থা

    যে পরিস্থিতিতে এই নিয়মটি সক্রিয় হয়।

  • আইডি

    সংখ্যা

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

  • অগ্রাধিকার

    সংখ্যা ঐচ্ছিক

    নিয়মের অগ্রাধিকার। ডিফল্ট মান হলো ১। নির্দিষ্ট করা হলে, এর মান অবশ্যই ১ বা তার বেশি হতে হবে।

RuleAction

বৈশিষ্ট্য

  • পুনঃনির্দেশ

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

  • অনুরোধ হেডার

    ModifyHeaderInfo [] ঐচ্ছিক

    ক্রোম ৮৬+

    অনুরোধের জন্য পরিবর্তনযোগ্য হেডারসমূহ। শুধুমাত্র তখনই বৈধ হবে যখন RuleActionType হবে 'modifyHeaders'।

  • প্রতিক্রিয়া হেডার

    ModifyHeaderInfo [] ঐচ্ছিক

    ক্রোম ৮৬+

    অনুরোধের জন্য পরিবর্তনযোগ্য রেসপন্স হেডারসমূহ। শুধুমাত্র তখনই বৈধ, যখন RuleActionType-এর মান 'modifyHeaders' হবে।

  • সম্পাদন করার কাজের ধরণ।

RuleActionType

কোনো প্রদত্ত RuleCondition মিলে গেলে কী ধরনের পদক্ষেপ নিতে হবে তা বর্ণনা করে।

এনাম

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

"পুনঃনির্দেশ"
নেটওয়ার্ক অনুরোধটি পুনঃনির্দেশ করুন।

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

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

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

"allowAllRequests"
একটি ফ্রেম হায়ারার্কির অন্তর্গত সমস্ত অনুরোধের অনুমতি দিন, যার মধ্যে স্বয়ং ফ্রেম অনুরোধটিও অন্তর্ভুক্ত।

RuleCondition

বৈশিষ্ট্য

  • ডোমেন টাইপ

    ডোমেন টাইপ ঐচ্ছিক

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

  • ডোমেইন

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

    ক্রোম ১০১ থেকে বাতিল করা হয়েছে

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

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

  • বাদ দেওয়া ডোমেনগুলি

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

    ক্রোম ১০১ থেকে বাতিল করা হয়েছে

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

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

  • বাদ দেওয়া সূচনাকারী ডোমেনগুলি

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

    ক্রোম ১০১+

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

    নোট:

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

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

    ক্রোম ১০১+

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

    নোট:

    • "a.example.com"-এর মতো সাব-ডোমেইনও অনুমোদিত।
    • এন্ট্রিগুলোতে শুধুমাত্র ASCII অক্ষর থাকতে হবে।
    • আন্তর্জাতিকীকৃত ডোমেইনগুলোর জন্য পুনিকোড এনকোডিং ব্যবহার করুন।
    • তালিকাভুক্ত ডোমেইনগুলোর সাব-ডোমেইনগুলোও বাদ দেওয়া হয়েছে।
  • বাদ দেওয়া অনুরোধ পদ্ধতি
    ক্রোম ৯১+

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

  • বাদ দেওয়া রিসোর্স প্রকারগুলি

    রিসোর্স টাইপ [] ঐচ্ছিক

    যেসব রিসোর্স টাইপের সাথে নিয়মটি মিলবে না, তার তালিকা। resourceTypes এবং excludedResourceTypes এর মধ্যে শুধুমাত্র একটি নির্দিষ্ট করতে হবে। যদি এদের কোনোটিই নির্দিষ্ট করা না থাকে, তাহলে "main_frame" ছাড়া বাকি সব রিসোর্স টাইপ ব্লক হয়ে যাবে।

  • বাদ দেওয়া প্রতিক্রিয়া হেডার

    হেডার তথ্য [] ঐচ্ছিক

    ক্রোম ১২৮+

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

  • বাদ দেওয়া ট্যাব আইডি

    সংখ্যা[] ঐচ্ছিক

    ক্রোম ৯২+

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

  • বাদ দেওয়া শীর্ষ ডোমেনগুলি

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

    ক্রোম ১৪৫+

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

    নোট:

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

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

    ক্রোম ১০১+

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

    নোট:

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

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

    urlFilter বা regexFilter (যেটিই নির্দিষ্ট করা হোক না কেন) কেস-সেনসিটিভ হবে কিনা। ডিফল্ট মান হলো false।

  • রেজেক্সফিল্টার

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

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

    দ্রষ্টব্য: urlFilter অথবা regexFilter মধ্যে শুধুমাত্র একটি নির্দিষ্ট করা যাবে।

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

  • অনুরোধ ডোমেন

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

    ক্রোম ১০১+

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

    নোট:

    • "a.example.com"-এর মতো সাব-ডোমেইনও অনুমোদিত।
    • এন্ট্রিগুলোতে শুধুমাত্র ASCII অক্ষর থাকতে হবে।
    • আন্তর্জাতিকীকৃত ডোমেইনগুলোর জন্য পুনিকোড এনকোডিং ব্যবহার করুন।
    • তালিকাভুক্ত ডোমেইনগুলোর সাব-ডোমেইনগুলোও মেলানো হয়েছে।
  • অনুরোধ পদ্ধতি
    ক্রোম ৯১+

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

    দ্রষ্টব্য: requestMethods রুল কন্ডিশন নির্দিষ্ট করলে তা নন-HTTP(s) রিকোয়েস্টও বাদ দেবে, কিন্তু excludedRequestMethods নির্দিষ্ট করলে তা হবে না।

  • সম্পদের প্রকার

    রিসোর্স টাইপ [] ঐচ্ছিক

    রিসোর্স টাইপগুলোর তালিকা, যেগুলোর সাথে নিয়মটি মিলতে পারে। খালি তালিকা অনুমোদিত নয়।

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

  • প্রতিক্রিয়া হেডার

    হেডার তথ্য [] ঐচ্ছিক

    ক্রোম ১২৮+

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

  • ট্যাবআইডি

    সংখ্যা[] ঐচ্ছিক

    ক্রোম ৯২+

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

  • শীর্ষ ডোমেইন

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

    ক্রোম ১৪৫+

    The rule will only match network requests when the associated top-level frame's domain matches one from the list of topDomains . If the list is omitted, the rule is applied to requests associated with all top-level frame domains. An empty list is not allowed.

    নোট:

    • Sub-domains like "a.example.com" are also allowed.
    • The entries must consist of only ascii characters.
    • Use punycode encoding for internationalized domains.
    • Sub-domains of the listed domains are also matched.
    • For requests with no associated top-level frame (eg ServiceWorker initiated requests, the request initiator's domain is considered instead.
  • urlFilter

    string optional

    The pattern which is matched against the network request url. Supported constructs:

    '*' : Wildcard: Matches any number of characters.

    '|' : Left/right anchor: If used at either end of the pattern, specifies the beginning/end of the url respectively.

    '||' : Domain name anchor: If used at the beginning of the pattern, specifies the start of a (sub-)domain of the URL.

    '^' : Separator character: This matches anything except a letter, a digit, or one of the following: _ , - , . , or % . This also match the end of the URL.

    Therefore urlFilter is composed of the following parts: (optional Left/Domain name anchor) + pattern + (optional Right anchor).

    If omitted, all urls are matched. An empty string is not allowed.

    A pattern beginning with ||* is not allowed. Use * instead.

    Note: Only one of urlFilter or regexFilter can be specified.

    Note: The urlFilter must be composed of only ASCII characters. This is matched against a url where the host is encoded in the punycode format (in case of internationalized domains) and any other non-ascii characters are url encoded in utf-8. For example, when the request url is http://abc.рф?q=ф, the urlFilter will be matched against the url http://abc.xn--p1ai/?q=%D1%84.

RuleConditionKeys

Chrome 145+

এনাম

"urlFilter"

"regexFilter"

"isUrlFilterCaseSensitive"

"initiatorDomains"

"excludedInitiatorDomains"

"requestDomains"

"excludedRequestDomains"

"topDomains"

"excludedTopDomains"

"domains"

"excludedDomains"

"resourceTypes"

"excludedResourceTypes"

"requestMethods"

"excludedRequestMethods"

"domainType"

"tabIds"

"excludedTabIds"

"responseHeaders"

"excludedResponseHeaders"

Ruleset

বৈশিষ্ট্য

  • enabled

    বুলিয়ান

    Whether the ruleset is enabled by default.

  • আইডি

    স্ট্রিং

    A non-empty string uniquely identifying the ruleset. IDs beginning with '_' are reserved for internal use.

  • পথ

    স্ট্রিং

    The path of the JSON ruleset relative to the extension directory.

RulesMatchedDetails

বৈশিষ্ট্য

TabActionCountUpdate

Chrome 89+

বৈশিষ্ট্য

  • বৃদ্ধি

    সংখ্যা

    The amount to increment the tab's action count by. Negative values will decrement the count.

  • ট্যাবআইডি

    সংখ্যা

    The tab for which to update the action count.

TestMatchOutcomeResult

Chrome 103+

বৈশিষ্ট্য

  • matchedRules

    The rules (if any) that match the hypothetical request.

TestMatchRequestDetails

Chrome 103+

বৈশিষ্ট্য

  • উদ্যোগী

    string optional

    The initiator URL (if any) for the hypothetical request.

  • পদ্ধতি

    RequestMethod optional

    Standard HTTP method of the hypothetical request. Defaults to "get" for HTTP requests and is ignored for non-HTTP requests.

  • responseHeaders

    বস্তু ঐচ্ছিক

    Chrome 129+

    The headers provided by a hypothetical response if the request does not get blocked or redirected before it is sent. Represented as an object which maps a header name to a list of string values. If not specified, the hypothetical response would return empty response headers, which can match rules which match on the non-existence of headers. Eg {"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}

  • ট্যাবআইডি

    সংখ্যা ঐচ্ছিক

    The ID of the tab in which the hypothetical request takes place. Does not need to correspond to a real tab ID. Default is -1, meaning that the request isn't related to a tab.

  • topUrl

    string optional

    Chrome 145+

    The associated top-level frame URL (if any) for the request.

  • প্রকার

    The resource type of the hypothetical request.

  • url

    স্ট্রিং

    The URL of the hypothetical request.

UnsupportedRegexReason

Chrome 87+

Describes the reason why a given regular expression isn't supported.

এনাম

"syntaxError"
The regular expression is syntactically incorrect, or uses features not available in the RE2 syntax .

"memoryLimitExceeded"
The regular expression exceeds the memory limit.

UpdateRuleOptions

Chrome 87+

বৈশিষ্ট্য

  • addRules

    Rule [] optional

    Rules to add.

  • removeRuleIds

    number[] optional

    IDs of the rules to remove. Any invalid IDs will be ignored.

UpdateRulesetOptions

Chrome 87+

বৈশিষ্ট্য

  • disableRulesetIds

    string[] optional

    The set of ids corresponding to a static Ruleset that should be disabled.

  • enableRulesetIds

    string[] optional

    The set of ids corresponding to a static Ruleset that should be enabled.

UpdateStaticRulesOptions

Chrome 111+

বৈশিষ্ট্য

  • disableRuleIds

    number[] optional

    Set of ids corresponding to rules in the Ruleset to disable.

  • enableRuleIds

    number[] optional

    Set of ids corresponding to rules in the Ruleset to enable.

  • rulesetId

    স্ট্রিং

    The id corresponding to a static Ruleset .

URLTransform

বৈশিষ্ট্য

  • খণ্ডাংশ

    string optional

    The new fragment for the request. Should be either empty, in which case the existing fragment is cleared; or should begin with '#'.

  • হোস্ট

    string optional

    The new host for the request.

  • পাসওয়ার্ড

    string optional

    The new password for the request.

  • পথ

    string optional

    The new path for the request. If empty, the existing path is cleared.

  • বন্দর

    string optional

    The new port for the request. If empty, the existing port is cleared.

  • প্রশ্ন

    string optional

    The new query for the request. Should be either empty, in which case the existing query is cleared; or should begin with '?'.

  • queryTransform

    QueryTransform optional

    Add, remove or replace query key-value pairs.

  • scheme

    string optional

    The new scheme for the request. Allowed values are "http", "https", "ftp" and "chrome-extension".

  • ব্যবহারকারীর নাম

    string optional

    The new username for the request.

বৈশিষ্ট্য

DYNAMIC_RULESET_ID

Ruleset ID for the dynamic rules added by the extension.

মূল্য

"_dynamic"

GETMATCHEDRULES_QUOTA_INTERVAL

Time interval within which MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules calls can be made, specified in minutes. Additional calls will fail immediately and set runtime.lastError . Note: getMatchedRules calls associated with a user gesture are exempt from the quota.

মূল্য

১০

GUARANTEED_MINIMUM_STATIC_RULES

Chrome 89+

The minimum number of static rules guaranteed to an extension across its enabled static rulesets. Any rules above this limit will count towards the global static rule limit .

মূল্য

30000

MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL

The number of times getMatchedRules can be called within a period of GETMATCHEDRULES_QUOTA_INTERVAL .

মূল্য

২০

MAX_NUMBER_OF_DYNAMIC_RULES

The maximum number of dynamic rules that an extension can add.

মূল্য

30000

MAX_NUMBER_OF_ENABLED_STATIC_RULESETS

Chrome 94+

The maximum number of static Rulesets an extension can enable at any one time.

মূল্য

৫০

MAX_NUMBER_OF_REGEX_RULES

The maximum number of regular expression rules that an extension can add. This limit is evaluated separately for the set of dynamic rules and those specified in the rule resources file.

মূল্য

১০০০

MAX_NUMBER_OF_SESSION_RULES

Chrome 120+

The maximum number of session scoped rules that an extension can add.

মূল্য

৫০০০

MAX_NUMBER_OF_STATIC_RULESETS

The maximum number of static Rulesets an extension can specify as part of the "rule_resources" manifest key.

মূল্য

১০০

MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES

Chrome 120+

The maximum number of "unsafe" dynamic rules that an extension can add.

মূল্য

৫০০০

MAX_NUMBER_OF_UNSAFE_SESSION_RULES

Chrome 120+

The maximum number of "unsafe" session scoped rules that an extension can add.

মূল্য

৫০০০

SESSION_RULESET_ID

Chrome 90+

Ruleset ID for the session-scoped rules added by the extension.

মূল্য

"_session"

পদ্ধতি

getAvailableStaticRuleCount()

Chrome 89+
chrome.declarativeNetRequest.getAvailableStaticRuleCount(): Promise<number>

Returns the number of static rules an extension can enable before the global static rule limit is reached.

ফেরত

  • Promise<number>

    Chrome 91+

getDisabledRuleIds()

Chrome 111+
chrome.declarativeNetRequest.getDisabledRuleIds(
  options: GetDisabledRuleIdsOptions,
)
: Promise<number[]>

Returns the list of static rules in the given Ruleset that are currently disabled.

প্যারামিটার

ফেরত

  • Promise<number[]>

    Promise that resolves with a list of ids that correspond to the disabled rules in that ruleset.

getDynamicRules()

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

Returns the current set of dynamic rules for the extension. Callers can optionally filter the list of fetched rules by specifying a filter .

প্যারামিটার

  • ফিল্টার

    GetRulesFilter optional

    Chrome 111+

    An object to filter the list of fetched rules.

ফেরত

  • Promise< Rule []>

    Chrome 91+

    Promise that resolves with the set of dynamic rules. The Promise may be rejected in case of transient internal errors.

getEnabledRulesets()

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

Returns the ids for the current set of enabled static rulesets.

ফেরত

  • Promise<string[]>

    Chrome 91+

    Promise that resolves with a list of ids, where each id corresponds to an enabled static Ruleset .

getMatchedRules()

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

Returns all rules matched for the extension. Callers can optionally filter the list of matched rules by specifying a filter . This method is only available to extensions with the "declarativeNetRequestFeedback" permission or having the "activeTab" permission granted for the tabId specified in filter . Note: Rules not associated with an active document that were matched more than five minutes ago will not be returned.

প্যারামিটার

  • ফিল্টার

    An object to filter the list of matched rules.

ফেরত

  • Chrome 91+

    Promise that resolves once the list of matched rules has been fetched. In case of an error, the Promise will be rejected. This can happen for multiple reasons, such as insufficient permissions, or exceeding the quota.

getSessionRules()

Chrome 90+
chrome.declarativeNetRequest.getSessionRules(
  filter?: GetRulesFilter,
)
: Promise<Rule[]>

Returns the current set of session scoped rules for the extension. Callers can optionally filter the list of fetched rules by specifying a filter .

প্যারামিটার

  • ফিল্টার

    GetRulesFilter optional

    Chrome 111+

    An object to filter the list of fetched rules.

ফেরত

  • Promise< Rule []>

    Chrome 91+

    Promise that resolves with the set of session scoped rules.

isRegexSupported()

Chrome 87+
chrome.declarativeNetRequest.isRegexSupported(
  regexOptions: RegexOptions,
)
: Promise<IsRegexSupportedResult>

Checks if the given regular expression will be supported as a regexFilter rule condition.

প্যারামিটার

  • regexOptions

    The regular expression to check.

ফেরত

  • Chrome 91+

    Promise that resolves with details consisting of whether the regular expression is supported and the reason if not.

setExtensionActionOptions()

Chrome 88+
chrome.declarativeNetRequest.setExtensionActionOptions(
  options: ExtensionActionOptions,
)
: Promise<void>

Configures if the action count for tabs should be displayed as the extension action's badge text and provides a way for that action count to be incremented.

প্যারামিটার

ফেরত

  • Promise<void>

    Chrome 91+

testMatchOutcome()

Chrome 103+
chrome.declarativeNetRequest.testMatchOutcome(
  request: TestMatchRequestDetails,
)
: Promise<TestMatchOutcomeResult>

Checks if any of the extension's declarativeNetRequest rules would match a hypothetical request. Note: Only available for unpacked extensions as this is only intended to be used during extension development.

প্যারামিটার

ফেরত

updateDynamicRules()

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

Modifies the current set of dynamic rules for the extension. The rules with IDs listed in options.removeRuleIds are first removed, and then the rules given in options.addRules are added. Notes:

  • This update happens as a single atomic operation: either all specified rules are added and removed, or an error is returned.
  • These rules are persisted across browser sessions and across extension updates.
  • Static rules specified as part of the extension package can not be removed using this function.
  • MAX_NUMBER_OF_DYNAMIC_RULES is the maximum number of dynamic rules an extension can add. The number of unsafe rules must not exceed MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES .

প্যারামিটার

ফেরত

  • Promise<void>

    Chrome 91+

    Promise that resolves once the update is complete. In case of an error, the promise will be rejected and no change will be made to the rule set. This can happen for multiple reasons, such as invalid rule format, duplicate rule ID, rule count limit exceeded, internal errors, and others.

updateEnabledRulesets()

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

Updates the set of enabled static rulesets for the extension. The rulesets with IDs listed in options.disableRulesetIds are first removed, and then the rulesets listed in options.enableRulesetIds are added. Note that the set of enabled static rulesets is persisted across sessions but not across extension updates, ie the rule_resources manifest key will determine the set of enabled static rulesets on each extension update.

প্যারামিটার

ফেরত

  • Promise<void>

    Chrome 91+

    Promise that resolves once the update is complete. In case of an error, the promise will be rejected and no change will be made to the set of enabled rulesets. This can happen for multiple reasons, such as invalid ruleset IDs, rule count limit exceeded, or internal errors.

updateSessionRules()

Chrome 90+
chrome.declarativeNetRequest.updateSessionRules(
  options: UpdateRuleOptions,
)
: Promise<void>

Modifies the current set of session scoped rules for the extension. The rules with IDs listed in options.removeRuleIds are first removed, and then the rules given in options.addRules are added. Notes:

  • This update happens as a single atomic operation: either all specified rules are added and removed, or an error is returned.
  • These rules are not persisted across sessions and are backed in memory.
  • MAX_NUMBER_OF_SESSION_RULES is the maximum number of session rules an extension can add.

প্যারামিটার

ফেরত

  • Promise<void>

    Chrome 91+

    Promise that resolves once the update is complete. In case of an error, the promise will be rejected and no change will be made to the rule set. This can happen for multiple reasons, such as invalid rule format, duplicate rule ID, rule count limit exceeded, and others.

updateStaticRules()

Chrome 111+
chrome.declarativeNetRequest.updateStaticRules(
  options: UpdateStaticRulesOptions,
)
: Promise<void>

Disables and enables individual static rules in a Ruleset . Changes to rules belonging to a disabled Ruleset will take effect the next time that it becomes enabled.

প্যারামিটার

ফেরত

  • Promise<void>

    Promise that resolves when the update is complete. In case of an error, the promise will be rejected and no change will be made to the enabled static rules.

ইভেন্টগুলি

onRuleMatchedDebug

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

Fired when a rule is matched with a request. Only available for unpacked extensions with the "declarativeNetRequestFeedback" permission as this is intended to be used for debugging purposes only.

প্যারামিটার