বিষয়বস্তু ফিল্টারিং

ক্রোম এক্সটেনশনে কন্টেন্ট এবং নেটওয়ার্ক ফিল্টারিং প্রয়োগ করার বিভিন্ন উপায় রয়েছে। এই নির্দেশিকাটি এক্সটেনশনগুলির জন্য উপলব্ধ কন্টেন্ট ফিল্টারিং ক্ষমতা এবং ক্রোম এক্সটেনশন দ্বারা ব্যবহারযোগ্য বিভিন্ন ফিল্টারিং পদ্ধতি, কৌশল ও এপিআই (API) সম্পর্কে একটি সংক্ষিপ্ত বিবরণ প্রদান করে।

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

ক্রোম এক্সটেনশনে নেটওয়ার্ক রিকোয়েস্ট ফিল্টার করার প্রধান উপায় হলো chrome.declarativeNetRequest API ব্যবহার করা। ডিক্লারেটিভ নেট রিকোয়েস্টের মাধ্যমে ডেভেলপাররা ডিক্লারেটিভ রুল নির্দিষ্ট করে নেটওয়ার্ক রিকোয়েস্ট ব্লক বা পরিবর্তন করতে পারেন। ডিক্লারেটিভ নেট রিকোয়েস্ট রুলের ফরম্যাটটি বেশিরভাগ অ্যাড ব্লকারে ব্যবহৃত ফিল্টার লিস্ট সিনট্যাক্সের ক্ষমতার উপর ভিত্তি করে তৈরি।

এই নিয়মগুলো সক্ষম:

  • একটি নেটওয়ার্ক অনুরোধ ব্লক করুন।
  • ইউআরএল স্কিমটিকে একটি সুরক্ষিত স্কিমে আপগ্রেড করুন (http থেকে https অথবা ws থেকে wss)।
  • একটি নেটওয়ার্ক অনুরোধ পুনঃনির্দেশ করুন।
  • অনুরোধ বা প্রতিক্রিয়ার হেডার পরিবর্তন করুন।

ক্রোম এক্সটেনশনের সাথে অন্তর্ভুক্ত নিয়ম এবং গতিশীলভাবে আপডেট হওয়া নিয়ম (যেমন রিমোট কনফিগারেশন বা ব্যবহারকারীর ইনপুটের প্রতিক্রিয়ায়) সমর্থন করে।

আপনার এক্সটেনশনের সাথে ফিল্টার নিয়মগুলো বান্ডল করুন

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

স্ট্যাটিক ডিক্লারেটিভ নেট রিকোয়েস্ট রুলগুলোর জন্য, ক্রোমের ৩,০০,০০০ রুলের একটি গ্লোবাল শেয়ার্ড পুল রয়েছে যা ইনস্টল করা এক্সটেনশনগুলো যৌথভাবে ব্যবহার করতে পারে। এছাড়াও, প্রতিটি এক্সটেনশনকে ৩০,০০০ স্ট্যাটিক রুল ব্যবহারের নিশ্চয়তা দেওয়া হয়। উদাহরণস্বরূপ, যদি কোনো ব্যবহারকারীর কেবল একটি কন্টেন্ট ফিল্টারিং এক্সটেনশন ইনস্টল করা থাকে, তবে সেই এক্সটেনশনটি ৩,৩০,০০০ পর্যন্ত স্ট্যাটিক ডিক্লারেটিভ নেট রিকোয়েস্ট রুল ব্যবহার করতে পারে। এটি ঠিক কতগুলো রুল, সে সম্পর্কে ধারণা পেতে বলা যায় যে, বেশিরভাগ অ্যাড ব্লকার দ্বারা ব্যবহৃত জনপ্রিয় ইজি লিস্ট (EasyList) ফিল্টার লিস্টে প্রায় ৩৫,০০০ নেটওয়ার্ক রুল রয়েছে।

স্ট্যাটিক ডিক্লারেটিভ নেট রিকোয়েস্ট রুলগুলোকে বিভিন্ন রুলসেটে সাজানো যায়। একটি এক্সটেনশন সর্বোচ্চ ১০০টি স্ট্যাটিক রুলসেট নির্দিষ্ট করতে পারে এবং এর মধ্যে ৫০টি রুলসেট একবারে সক্রিয় করা যায়।

রানটাইমে গতিশীলভাবে ফিল্টার নিয়ম যোগ করুন

কিছু নিয়ম এক্সটেনশনের সাথে অন্তর্ভুক্ত করা যায় না। পরিবর্তে, এক্সটেনশনগুলোকে রানটাইমে সেগুলো যোগ করতে হয়। এই নিয়মগুলোকে "ডাইনামিক রুল" বলা হয়।

ডাইনামিক ডিক্লারেটিভ নেট রিকোয়েস্ট রুলের জন্য, ক্রোম প্রতিটি এক্সটেনশনের জন্য সর্বোচ্চ ৩০,০০০টি নিরাপদ ডাইনামিক রুল ব্যবহারের অনুমতি দেয়। বেশিরভাগ রুলকেই নিরাপদ রুল হিসেবে বিবেচনা করা হয়: block , allow , allowAllRequests বা upgradeScheme । এমনকি যদি কোনো রুলকে নিরাপদ হিসেবে বিবেচনা করা না হয় (উদাহরণস্বরূপ redirect ), সেগুলোও ডাইনামিকভাবে যোগ করা যেতে পারে, তবে সেক্ষেত্রে সর্বোচ্চ সীমা কমে ৫,০০০-এ দাঁড়ায়, যা ৩০,০০০ ডাইনামিক রুলের সীমার মধ্যেই গণনা করা হয়। বিষয়টি আরও স্পষ্ট করে বললে, easylist ফিল্টার তালিকার ৯৮-৯৯% রুলই নিরাপদ

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

পর্যবেক্ষণকৃত অনুরোধের ভিত্তিতে নিয়মগুলো অভিযোজিত করুন।

বিজ্ঞাপনের জগৎ ক্রমাগত পরিবর্তিত হচ্ছে এবং সেই অনুযায়ী কন্টেন্ট ফিল্টারগুলোও আপডেট করা প্রয়োজন। chrome.webRequest এবং ডাইনামিক ডিক্লারেটিভ নেট রিকোয়েস্ট রুলস-এর সমন্বয়ের মাধ্যমে সম্ভাব্য গোপনীয়তা লঙ্ঘনের জন্য নেটওয়ার্ক রিকোয়েস্টগুলো বিশ্লেষণ করা এবং ভবিষ্যতে সেগুলোকে ব্লক করা সম্ভব।

মূল পদ্ধতিটি হলো:

  1. chrome.webRequest API ব্যবহার করে ওয়েব অনুরোধগুলো বিশ্লেষণ করুন এবং মেশিন লার্নিং-এর মতো টুল ব্যবহার করে স্বয়ংক্রিয়ভাবে সেইসব অনুরোধ শনাক্ত করার চেষ্টা করুন যেগুলো আপনার গোপনীয়তার শর্ত পূরণ করে না।
  2. ধাপ দুই-এ চিহ্নিত প্রতিটি অনুরোধের জন্য একটি ডাইনামিক ডিক্লারেটিভ নেট রিকোয়েস্ট রুল তৈরি করুন, যাতে ভবিষ্যতে একই ধরনের অনুরোধগুলো ব্লক করা যায়।
  3. (ঐচ্ছিক) চিহ্নিত ডিক্লারেটিভ নেট রিকোয়েস্ট রুলটি আপনার সার্ভারে ফেরত পাঠান, যাতে আপনার পরবর্তী এক্সটেনশন আপডেটের সাথে এটিকে একটি স্ট্যাটিক ডিক্লারেটিভ নেট রিকোয়েস্ট রুল হিসেবে যুক্ত করা যায়।

এই পদ্ধতির সুবিধা হলো, বিশ্লেষণটি অ্যাসিঙ্ক্রোনাসভাবে সম্পন্ন হয় এবং এটি ওয়েবসাইটের পারফরম্যান্সকে নেতিবাচকভাবে প্রভাবিত করে না।

ব্যবহারকারীদের নিজস্ব ফিল্টারিং নিয়ম নির্ধারণ করার অনুমতি দিন।

আপনার এক্সটেনশনে একটি ফিল্টার কনফিগারেশন UI প্রদান করে আপনি ব্যবহারকারীদের নিজস্ব কন্টেন্ট ফিল্টারিং নিয়ম নির্ধারণ করার সুযোগ দিতে পারেন। এই ব্যবহারকারী-নির্ধারিত নিয়মগুলোকে ডিক্লারেটিভ নেট রিকোয়েস্ট (Declarative Net Request) নিয়মে রূপান্তর করুন এবং সেগুলোকে ডাইনামিক নিয়ম হিসেবে যুক্ত করুন । এই নিয়মগুলো ব্রাউজার সেশন এবং এক্সটেনশন আপগ্রেডের পরেও ব্যবহারকারীদের জন্য উপলব্ধ থাকবে। এই পদ্ধতি ব্যবহার করে, ব্যবহারকারীরা ৩০,০০০টি পর্যন্ত কাস্টম নিয়ম যুক্ত করতে পারবেন।

ওয়েব পেজের উপাদানগুলি ফিল্টার করুন

নেটওয়ার্ক অনুরোধ ফিল্টার করা হলো কন্টেন্ট ফিল্টারিংয়ের একটি গুরুত্বপূর্ণ অংশ মাত্র। এর আরেকটি বড় অংশ হলো সরাসরি ওয়েব পেজ থেকে অবাঞ্ছিত কন্টেন্ট সরিয়ে ফেলা। উদাহরণস্বরূপ, ইজিলিস্ট ফিল্টার তালিকার ৪০%-এরও বেশি নিয়মে উল্লেখ করা থাকে যে ক্লায়েন্টরা কীভাবে পেজের উপাদানগুলো লুকাবে।

কন্টেন্ট স্ক্রিপ্ট ব্যবহার করে এটি করা যায়। কন্টেন্ট স্ক্রিপ্ট ওয়েব পেজের প্রেক্ষাপটে চলে এবং DOM ব্যবহার করে সেগুলিতে পরিবর্তন আনতে পারে।

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

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

এন্টারপ্রাইজ এবং শিক্ষা ক্ষেত্রে প্রায়শই কন্টেন্ট ও নেটওয়ার্ক ফিল্টারিংয়ের জন্য অত্যন্ত কঠোর প্রয়োজনীয়তা থাকে, যেমন অনুরোধের বিষয়বস্তুর ওপর ভিত্তি করে সেগুলোকে ফিল্টার করা। এই ধরনের ব্যবহারের ক্ষেত্রগুলোকে সক্ষম করার জন্য, পলিসি দ্বারা ইনস্টল করা এক্সটেনশনগুলোতে নেটওয়ার্ক অনুরোধ ফিল্টার ও ব্লক করার একটি অতিরিক্ত উপায় রয়েছে। webRequest API-এর ইভেন্টগুলোর সাথে 'blocking' অপশনটি ব্যবহার করে একটি প্রোগ্রাম্যাটিক কন্টেন্ট ফিল্টার প্রয়োগ করা সম্ভব, যা প্রতিটি অনুরোধ ব্লক করা হবে কি না, সেই সিদ্ধান্ত নেওয়ার জন্য সেটির ওপর কাস্টম লজিক প্রয়োগ করে। এই সুবিধাটি শুধুমাত্র পলিসি দ্বারা ইনস্টল করা এক্সটেনশনগুলোর মধ্যেই সীমাবদ্ধ, কারণ এগুলোর বিশ্বাসযোগ্যতার মাত্রা বেশি।

নেভিগেশন অনুরোধগুলি আটকান

ডিক্লারেটিভ নেট রিকোয়েস্ট রুল ব্যবহার করে নেভিগেশন রিকোয়েস্ট ফিল্টার করা যায়। উদাহরণস্বরূপ, আপনি এমন ট্র্যাকিং ইউআরএল এড়িয়ে যেতে চাইতে পারেন যা ব্যবহারকারীকে তার কাঙ্ক্ষিত গন্তব্যে রিডাইরেক্ট করে। এটি সামলানোর একটি উপায় হলো https://tracker.com?redirect=https%3A%2F%2Fexample.com মতো একটি নেভিগেশন রিকোয়েস্টকে একটি এক্সটেনশন পেজে রিডাইরেক্ট করা (যেটিকে একটি ওয়েব অ্যাক্সেসিবল রিসোর্স হিসেবে কনফিগার করতে হবে), যা তখন একটি স্ক্রিপ্ট চালিয়ে রিডাইরেক্ট টার্গেটটি বের করে নেবে এবং লিঙ্ক ট্র্যাকারকে এড়িয়ে window.location.replace("https://example.com") ব্যবহার করে গন্তব্যে রিডাইরেক্ট করবে।