मेनिफ़ेस्ट V3 में कॉन्टेंट को फ़िल्टर करने की सुविधा को बेहतर बनाना

पिछले साल से, हम MV3 एक्सटेंशन प्लैटफ़ॉर्म को बेहतर बनाने के तरीकों के बारे में, कॉन्टेंट ब्लॉक करने वाले कई एक्सटेंशन का इस्तेमाल करने वाले वेंडर के साथ बातचीत में शामिल रहे हैं. इस तरह की चर्चा के आधार पर, कई वेब एक्सटेंशन कम्यूनिटी ग्रुप (WECG) ने अन्य ब्राउज़र के साथ मिलकर काम किया. इससे हमें कई अहम सुधार करने में मदद मिली.

ज़्यादा स्टैटिक नियमसेट

फ़िल्टर करने के नियमों के सेट, आम तौर पर सूचियों में ग्रुप किए जाते हैं. उदाहरण के लिए, ज़्यादा सामान्य सूची में सभी उपयोगकर्ताओं पर लागू होने वाले नियम शामिल हो सकते हैं, जबकि खास सूची में, जगह के हिसाब से ऐसा कॉन्टेंट छिपाया जा सकता है जिसे सिर्फ़ कुछ ही उपयोगकर्ता ब्लॉक करना चाहते हैं. अब तक, हम हर एक्सटेंशन को उपयोगकर्ताओं को 50 सूचियों (या “स्टैटिक नियमसेट”) का विकल्प देने की अनुमति देते थे. साथ ही, इनमें से 10 सूचियों को एक साथ चालू करने की अनुमति भी दी होती थी. समुदाय के साथ बातचीत के दौरान, एक्सटेंशन डेवलपर ने इस बात का पुख्ता सबूत दिया कि कुछ मामलों में यह संख्या काफ़ी कम थी. इन चर्चाओं को ध्यान में रखते हुए, Chrome में एपीआई की परफ़ॉर्मेंस को देखने के बाद, अब हम एक साथ 50 एपीआई तक को चालू करने की अनुमति दे रहे हैं. (ध्यान देने वाली बात यह है कि यह अनुरोध, WECG में अनुरोध की जाने वाली 20 लोगों की सीमा से काफ़ी ज़्यादा है.) हम कुल 100 नियमसेट की अनुमति भी देते हैं. यह तरीका Chrome 120 में उपलब्ध है. साथ ही, इस सीमा को बढ़ाने की सुविधा Firefox और Safari, दोनों में काम करती है. दोनों ही प्लैटफ़ॉर्म ने इस प्रस्ताव के बारे में शुरुआती जानकारी दी थी.

ज़्यादा डाइनैमिक नियम

ज़्यादातर नियम “स्टैटिक” होते हैं और हर अपडेट के साथ एक्सटेंशन के लिए भेजे जाते हैं. हालांकि, बार-बार होने वाले अपडेट और उपयोगकर्ता के तय किए गए नियमों की सुविधा देने के लिए, एक्सटेंशन डाइनैमिक तौर पर भी नियम जोड़ सकते हैं. इसके लिए, उनके डेवलपर को Chrome वेब स्टोर पर एक्सटेंशन का नया वर्शन अपलोड करने की ज़रूरत नहीं होती.

जब कोई एक्सटेंशन, अनुरोधों में ऐसे तरीकों से डाइनैमिक तौर पर बदलाव कर सकता है जिनकी जांच Chrome Web Store की समीक्षा के दौरान नहीं की गई थी, तो इससे उपयोगकर्ताओं को फ़िशिंग या डेटा चोरी होने का खतरा हो सकता है. उदाहरण के लिए, बिना सहमति के अफ़िलिएट लिंक इंजेक्ट करने के लिए रीडायरेक्ट नियम का गलत इस्तेमाल किया जा सकता है.

इसलिए, हमने एक्सटेंशन को ज़्यादा से ज़्यादा 5,000 नियमों को जोड़ने की अनुमति दी. इसलिए, हमने इस सुविधा के कम इस्तेमाल को बढ़ावा दिया और हमारे लिए बुरे बर्ताव का पता लगाना आसान बना दिया.

हालांकि, AdGuard और Adblock Plus जैसे एक्सटेंशन के डेवलपर ने खुद ही विश्लेषण किया और डेटा शेयर किया. ज़्यादा डेटा खर्च की सीमा बढ़ाने से, ज़्यादा अप-टू-डेट नियम बनाए जा सके. साथ ही, ज़्यादा कस्टम सूचियों वाले उपयोगकर्ता, मेनिफ़ेस्ट V3 पर माइग्रेट कर सकेंगे. असल में, AdGuard ने बताया कि लोकप्रिय सूचियों में हर हफ़्ते 2, 600 से भी ज़्यादा बदलाव किए जाते हैं. कस्टम फ़िल्टर सूचियों का इस्तेमाल करने वाले पांच प्रतिशत उपयोगकर्ताओं में से, इनमें से किसी एक उपयोगकर्ता के पास 5,000 से ज़्यादा डाइनैमिक नियम हैं (सोर्स). AdGuard ने अपने एक्सटेंशन को मेनिफ़ेस्ट V3 पर माइग्रेट करने के लिए, इसे एक बड़ी चुनौती के तौर पर देखा. हमें कॉन्टेंट ब्लॉक करने वाले अन्य लोगों से भी ऐसे ही सुझाव मिले.

हमने पाया है कि फ़िल्टर करने के कुछ नियम ज़्यादा सुरक्षित हैं और इनमें से कुछ नियमों का गलत इस्तेमाल होने की संभावना कम है. उदाहरण के लिए, block या allow वाली कार्रवाई करने पर लागू होने वाले नियम. यही वजह है कि ज़्यादातर विज्ञापन ब्लॉक फ़िल्टर करने वाले नियम ही इनका इस्तेमाल करते हैं. इसके आधार पर, मैंने वेब एक्सटेंशन कम्यूनिटी ग्रुप में एक प्रस्ताव शेयर किया है और उसे ड्राफ़्ट के तौर पर शेयर किया है. इस प्रस्ताव में ऐसे नियम तय किए गए हैं जिनमें जोखिम कम है और 30,000 तक लागू किए जा सकते हैं. परफ़ॉर्मेंस पर होने वाले असर से बचने के लिए, हम अब भी ऊपरी सीमा तय करते हैं.

इस प्रस्ताव को वेब एक्सटेंशन कम्यूनिटी ग्रुप में मंज़ूर किया गया था, इसलिए हमने इसे लागू कर दिया है. Chrome 121 और इसके बाद के वर्शन में, 30,000 नियमों की ज़्यादा से ज़्यादा सीमा, सुरक्षित डीएनआर नियमों पर लागू होती है. हम इन नियमों को block, allow, allowAllRequests या upgradeScheme कार्रवाई करके नियम के तौर पर बता रहे हैं.

AdGuard के शेयर किए गए डेटा के आधार पर, उनके नियमों में से 98 से 99 प्रतिशत लोगों को, इस बढ़ी हुई सीमा का फ़ायदा मिल सकता है. बाकी के नियम अब भी लागू होते हैं और उन्हें मौजूदा सीमा के अंदर जोड़ा जा सकता है.

यह Chrome में MAX_NUMBER_OF_DYNAMIC_RULES कॉन्सटेंट के तौर पर उपलब्ध है. अन्य सभी डाइनैमिक नेट अनुरोध नियमों के लिए, नियम की सीमा 5,000 ही रहेगी.

नियमसेट का कम किया गया साइज़

Chrome 118 में, समुदाय से मिले सुझाव के आधार पर, हमने isUrlFilterCaseSensitive फ़ील्ड की डिफ़ॉल्ट वैल्यू को false में बदल दिया. इस फ़ील्ड से यह कंट्रोल किया जाता है कि यूआरएल के हिसाब से फ़िल्टर करने वाला नियम केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होता है या नहीं. साथ ही, हमें पता चला कि ज़्यादातर डेवलपर के एक्सटेंशन में डिफ़ॉल्ट तौर पर कोई अंतर था. इस वजह से, वैल्यू को कई बार सेट करना पड़ा. यह बदलाव करने से, डेवलपर अपने रूलसेट के साइज़ में काफ़ी कमी कर सकते हैं.

आगे क्या होगा?

हम declarativeNetRequest API में निवेश करना जारी रखने का वादा करते हैं, ताकि हम इसे ज़्यादा से ज़्यादा इस्तेमाल करने में मदद कर सकें. साथ ही, हम समुदाय के साथ मिलकर काम करना जारी रखेंगे. खास तौर पर, हम WECG के सदस्यों को उनकी दिलचस्पी के लिए धन्यवाद देना चाहते हैं. इसमें, इस काम के लिए ज़रूरी डेटा शेयर करने के लिए AdGuard और इस एपीआई को डिज़ाइन करने वाले सभी ब्राउज़र वेंडर शामिल हैं.

हम तय की गई सीमाओं की समीक्षा करते रहेंगे, ताकि ज़रूरत के हिसाब से बदलाव किए जा सकें. इसमें मदद करने के लिए, हम आने वाले समय में कुछ डेटा शेयर करने की योजना बना रहे हैं. इस डेटा को इस काम के तहत इकट्ठा किया जाएगा. इसके अलावा, हम रिस्पॉन्स हेडर के साथ मिलान करने जैसी अतिरिक्त सुविधाएं जोड़ने पर काम कर रहे हैं. यह एक आम अनुरोध है, जो PDF व्यूअर एक्सटेंशन से देखा जाता है. सभी मामलों में, हम अपने काम के बारे में बातचीत जारी रखेंगे. साथ ही, वेब एक्सटेंशन कम्यूनिटी ग्रुप का इस्तेमाल, नियमित तौर पर आइडिया पर चर्चा करने और आगे की योजना के बारे में बताने के लिए करेंगे.