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

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

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

الطريقة الأساسية لفلترة طلبات الشبكة في إضافات Chrome هي استخدام الـ chrome.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 قاعدة شبكة.

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

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

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

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

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

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

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

النهج الأساسي هو:

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

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

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

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

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

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

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

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

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

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

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

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