تصفية المحتوى

تتوفّر طرق مختلفة لتنفيذ فلترة المحتوى والشبكة في "إضافات Chrome". يقدّم هذا الدليل نظرة عامة على إمكانات فلترة المحتوى المتاحة للإضافات ومختلف أساليب الفلترة والتقنيات وواجهات برمجة التطبيقات التي يمكن أن تستخدمها إضافات Chrome.

فلترة طلبات الشبكة

الطريقة الأساسية لفلترة طلبات الشبكة في "إضافات Chrome" هي استخدام browser.declarativeNetRequest API. باستخدام Declarative Net Request، يمكن للمطوّرين حظر طلبات الشبكة أو تعديلها من خلال تحديد قواعد تعريفية. يستند تنسيق قاعدة Declarative Net Request إلى إمكانات بنية قائمة الفلاتر التي تستخدمها معظم أدوات حظر الإعلانات.

يمكن لهذه القواعد إجراء ما يلي:

  • حظر طلب شبكة
  • ترقية مخطط URL إلى مخطط آمن (من http إلى https أو من ws إلى wss)
  • إعادة توجيه طلب شبكة
  • تعديل عناوين الطلبات أو الردود

يتوافق Chrome مع القواعد المضمّنة في إحدى الإضافات، والقواعد التي يتم تعديلها بشكل ديناميكي (مثل الاستجابة لإعدادات عن بُعد أو بيانات أدخلها المستخدم).

تجميع قواعد الفلترة مع الإضافة

تُعرف القواعد المُضمّنة في حزمة الإضافة باسم "القواعد الثابتة". يتم تثبيت هذه القواعد وتعديلها عند تثبيت إضافة أو ترقيتها. يفرض Chrome حدًا على عدد القواعد الثابتة التي يمكن للإضافة تحديدها.

بالنسبة إلى قواعد Declarative Net Request الثابتة، يتضمّن Chrome مجموعة مشتركة عامة من 300,000 قاعدة يمكن أن تستخدمها مجموعة الإضافات المثبَّتة بشكل مشترك. بالإضافة إلى ذلك، يضمن كلّ إضافة الحصول على 30, 000 قاعدة ثابتة. على سبيل المثال، إذا كان المستخدم قد ثبّت إضافة واحدة فقط لفلترة المحتوى، يمكن أن تستخدم الإضافة ما يصل إلى 330,000 قاعدة ثابتة من قواعد Declarative Net Request. لمعرفة عدد القواعد التي يتضمّنها ذلك، تحتوي قائمة فلترة EasyList الشائعة، والتي تستخدمها معظم أدوات حظر الإعلانات، على حوالي 35,000 قاعدة شبكة.

يمكن تنظيم قواعد Static Declarative Net Request في مجموعات قواعد مختلفة. يمكن أن تحدّد الإضافة ما يصل إلى 100 مجموعة قواعد ثابتة، ويمكن تفعيل 50 مجموعة قواعد من هذه المجموعات في المرة الواحدة.

إضافة قواعد الفلتر ديناميكيًا في وقت التشغيل

لا يمكن تجميع بعض القواعد مع الإضافة. بدلاً من ذلك، يجب أن تضيف الإضافات هذه الأذونات في وقت التشغيل. تُعرف هذه القواعد باسم "القواعد الديناميكية".

بالنسبة إلى قواعد Declarative Net Request الديناميكية، يسمح Chrome بحد أقصى يبلغ 30,000 قاعدة ديناميكية آمنة لكل إضافة. تُعتبر معظم القواعد قواعد آمنة: block أو allow أو allowAllRequests أو upgradeScheme. حتى إذا لم تُعتبر القاعدة آمنة (على سبيل المثال redirect)، يمكن إضافتها ديناميكيًا، ولكن مع حدّ أقصى أقل يبلغ 5,000، وهو ما يُحتسب أيضًا ضمن الحدّ الأقصى للقواعد الديناميكية البالغ 30,000. لإعطاء فكرة عن ذلك، تُعدّ %98 إلى %99 من القواعد في قائمة الفلترة easylist قواعد آمنة.

يمكن لإضافات فلترة المحتوى استخدام قواعد ثابتة وديناميكية على التوالي لتجميع قواعد الفلترة المعروفة مع الإضافة وتحديث الإضافات بقواعد فلترة محتوى جديدة من خوادمها عند الحاجة.

تكييف القواعد استنادًا إلى الطلبات المرصودة

تتطوّر منظومة الإعلانات باستمرار، ويجب تعديل فلاتر المحتوى وفقًا لذلك. من خلال الجمع بين browser.webRequest وقواعد Declarative Net Request الديناميكية، يمكن تحليل طلبات الشبكة بحثًا عن انتهاكات محتملة للخصوصية وحظرها في المستقبل.

الأسلوب الأساسي هو:

  1. يمكنك تحليل طلبات الويب باستخدام واجهة برمجة التطبيقات browser.webRequest ومحاولة تحديد الطلبات التي لا تستوفي متطلبات الخصوصية تلقائيًا، مثلاً باستخدام تعلُّم الآلة.
  2. أنشئ قاعدة طلبات شبكة تعريفية ديناميكية لكل طلب تم تحديده في الخطوة الثانية حتى يتم حظر الطلبات المشابهة في المستقبل.
  3. (اختياري) أرسِل قاعدة Declarative Net Request التي تم تحديدها إلى الخادم مرة أخرى ليتم إضافتها كقاعدة ثابتة في Declarative Net Request عند تحديث الإضافة في المرة القادمة.

تتمثّل فائدة هذه الطريقة في أنّ عملية التحليل تتم بشكل غير متزامن ولن تؤثّر سلبًا في أداء الموقع الإلكتروني.

السماح للمستخدمين بتحديد قواعد الفلترة الخاصة بهم

يمكنك السماح للمستخدمين بتحديد قواعد فلترة المحتوى الخاصة بهم من خلال توفير واجهة مستخدم لإعدادات الفلتر في الإضافة. حوِّل هذه القواعد التي يحدّدها المستخدم إلى قواعد Declarative Net Request وأضِفها كقواعد ديناميكية. ستبقى هذه القواعد متاحة للمستخدمين لأنّها تظل محفوظة في جميع جلسات المتصفّح وعمليات ترقية الإضافة. باستخدام هذا النهج، يمكن للمستخدمين إضافة ما يصل إلى 30,000 قاعدة مخصّصة.

فلترة العناصر على صفحات الويب

لا تشكّل فلترة طلبات الشبكة سوى جزء مهم من فلترة المحتوى. يتضمّن الجزء الآخر إزالة المحتوى غير المرغوب فيه مباشرةً من صفحات الويب. على سبيل المثال، يحدّد أكثر من% 40 من قواعد قائمة فلاتر easylist كيفية إخفاء عناصر الصفحة من جهة العميل.

ويمكن تحقيق ذلك باستخدام نصوص المحتوى البرمجية. يتم تشغيل النصوص البرمجية للمحتوى في سياق صفحات الويب ويمكنها إجراء تغييرات عليها باستخدام نموذج المستند (DOM).

لا يُسمح لإضافات Chrome بتنفيذ الرموز المستضافة عن بُعد. ومع ذلك، لا تتأثر البيانات الواردة من خادم بشأن العناصر التي يجب إخفاؤها لأنّها تُعتبر بيانات إعداد، وبالتالي يمكن تعديل قواعد العناصر في وقت التشغيل عند الضرورة.

فلترة طلبات الشبكة في الإضافات المثبَّتة بموجب سياسة

غالبًا ما تتضمّن حالات الاستخدام في المؤسسات والتعليم متطلبات صارمة للغاية بشأن فلترة المحتوى والشبكة، مثل فلترة الطلبات استنادًا إلى محتواها. لتفعيل حالات الاستخدام هذه، تتوفّر للإضافات المثبَّتة من خلال السياسة طريقة إضافية لفلترة طلبات الشبكة وحظرها. باستخدام خيار "الحظر" مع الأحداث في واجهة برمجة التطبيقات webRequest، يمكن تنفيذ فلتر محتوى آلي ينفّذ منطقًا مخصّصًا في كل طلب لتحديد ما إذا كان يجب حظر الطلب أم لا. يقتصر ذلك على الإضافات المثبَّتة من خلال السياسة لأنّها تتمتّع بمستوى أعلى من الموثوقية.

اعتراض طلبات التنقّل

يمكن فلترة طلبات التنقّل باستخدام قواعد Declarative Net Request. على سبيل المثال، قد تريد تجاوز عناوين URL للتتبُّع التي تعيد توجيه المستخدِم إلى الوجهة المقصودة. إحدى طرق التعامل مع هذه المشكلة هي إعادة توجيه طلب التنقّل https://tracker.com?redirect=https%3A%2F%2Fexample.com إلى صفحة إضافة (يجب ضبطها على أنّها مورد يمكن الوصول إليه على الويب)، ثم سيتم تشغيل نص برمجي لاستخراج هدف إعادة التوجيه وإعادة التوجيه إلى الوجهة باستخدام window.location.replace("https://example.com") لتجنُّب أداة تتبُّع الروابط.