روشهای مختلفی برای پیادهسازی فیلترینگ محتوا و شبکه در افزونههای کروم وجود دارد. این راهنما مروری بر قابلیتهای فیلترینگ محتوای موجود برای افزونهها و رویکردها، تکنیکها و APIهای مختلف فیلترینگ که میتوانند توسط افزونههای کروم استفاده شوند، ارائه میدهد.
درخواستهای شبکه را فیلتر کنید
روش اصلی برای فیلتر کردن درخواستهای شبکه در افزونههای کروم، استفاده از API مربوط به chrome.declarativeNetRequest است. با استفاده از Declarative Net Request، توسعهدهندگان میتوانند با تعیین قوانین اعلانی، درخواستهای شبکه را مسدود یا اصلاح کنند. قالب قوانین Declarative Net Request بر اساس قابلیتهای سینتکس لیست فیلتر است که توسط اکثر مسدودکنندههای تبلیغات استفاده میشود.
این قوانین قادرند:
- مسدود کردن درخواست شبکه
- طرح URL را به یک طرح امن ارتقا دهید (http به https یا ws به wss).
- تغییر مسیر یک درخواست شبکه.
- هدرهای درخواست یا پاسخ را تغییر دهید.
کروم از قوانینی که با یک افزونه همراه هستند و قوانینی که به صورت پویا بهروزرسانی میشوند (مانند پاسخ به پیکربندی از راه دور یا ورودی کاربر) پشتیبانی میکند.
قوانین فیلتر دستهای را با افزونه خود ترکیب کنید
قوانین موجود در بسته افزونه شما «قوانین ایستا» نامیده میشوند. این قوانین هنگام نصب یا ارتقاء یک افزونه، نصب و بهروزرسانی میشوند. کروم تعداد قوانین ایستا را که یک افزونه میتواند اعلام کند، محدود میکند.
برای قوانین استاتیک درخواست اعلانی شبکه، کروم یک مجموعه جهانی مشترک از ۳۰۰۰۰۰ قانون دارد که میتوانند به طور مشترک توسط مجموعهای از افزونههای نصب شده مورد استفاده قرار گیرند. علاوه بر این، به هر افزونه تضمین داده شده است که ۳۰۰۰۰ قانون استاتیک مجاز است. به عنوان مثال، اگر کاربری فقط یک افزونه فیلترینگ محتوا نصب کرده باشد، آن افزونه میتواند تا ۳۳۰۰۰۰ قانون استاتیک درخواست اعلانی شبکه را استفاده کند. برای اینکه ایدهای از تعداد این قوانین داشته باشید، لیست فیلترهای محبوب EasyList که توسط اکثر مسدودکنندههای تبلیغات استفاده میشود، شامل حدود ۳۵۰۰۰ قانون شبکه است.
قوانین درخواست خالص اعلانی استاتیک را میتوان در مجموعه قوانین مختلفی سازماندهی کرد. یک افزونه میتواند تا ۱۰۰ مجموعه قوانین استاتیک را مشخص کند و ۵۰ مورد از این مجموعه قوانین را میتوان همزمان فعال کرد.
اضافه کردن پویای قوانین فیلتر در زمان اجرا
برخی از قوانین را نمیتوان با افزونه همراه کرد. در عوض، افزونهها باید آنها را در زمان اجرا اضافه کنند. به این قوانین «قوانین پویا» گفته میشود.
برای قوانین پویای درخواست اعلانی شبکه، کروم حداکثر 30،000 قانون پویای ایمن را برای هر افزونه مجاز میداند. اکثر قوانین، قوانین ایمن در نظر گرفته میشوند: block ، allow ، allowAllRequests یا upgradeScheme . حتی اگر یک قانون ایمن در نظر گرفته نشود (به عنوان مثال redirect )، باز هم میتوان آنها را به صورت پویا اضافه کرد، اما با حداکثر محدودیت کمتر از 5000 که در محدوده 30،000 قانون پویا نیز حساب میشود. برای روشن شدن این موضوع، 98 تا 99 درصد از قوانین موجود در لیست فیلترهای easylist، قوانین ایمن هستند .
افزونههای فیلترینگ محتوا میتوانند به ترتیب از قوانین ایستا و پویا برای ترکیب قوانین فیلترینگ شناختهشده با افزونه خود و بهروزرسانی افزونههای خود با قوانین فیلترینگ محتوای جدید از سرورهایشان در صورت نیاز استفاده کنند.
تطبیق قوانین بر اساس درخواستهای مشاهدهشده
اکوسیستم تبلیغات دائماً در حال تکامل است و فیلترهای محتوا باید بر این اساس بهروزرسانی شوند. با ترکیب chrome.webRequest و قوانین پویای Declarative Net Request، میتوان درخواستهای شبکه را برای نقض احتمالی حریم خصوصی تجزیه و تحلیل کرد و آنها را در آینده مسدود کرد.
رویکرد اساسی این است:
- درخواستهای وب را با استفاده از API مربوط به
chrome.webRequestتجزیه و تحلیل کنید و سعی کنید به طور خودکار درخواستهایی را که الزامات حریم خصوصی شما را برآورده نمیکنند، مثلاً با استفاده از یادگیری ماشینی، شناسایی کنید. - برای هر درخواستی که در مرحله دوم شناسایی شده است، یک قانون پویای درخواست اعلانی شبکه ایجاد کنید تا درخواستهای مشابه در آینده مسدود شوند.
- (اختیاری) قانون درخواست اعلانی شبکه شناساییشده را به سرور خود ارسال کنید تا بتوان آن را به عنوان یک قانون درخواست اعلانی شبکه استاتیک با بهروزرسانی افزونه بعدی خود اضافه کرد.
مزیت این رویکرد این است که تجزیه و تحلیل به صورت غیرهمزمان انجام میشود و تأثیر منفی بر عملکرد وبسایت نخواهد داشت.
به کاربران اجازه دهید قوانین فیلترینگ خود را تعریف کنند
شما میتوانید با ارائه یک رابط کاربری پیکربندی فیلتر در افزونه خود، به کاربران خود اجازه دهید قوانین فیلترینگ محتوای خود را تعریف کنند. این قوانین تعریفشده توسط کاربر را به قوانین درخواست اعلانی Net تبدیل کرده و آنها را به عنوان قوانین پویا اضافه کنید . این قوانین همچنان در دسترس کاربران خواهند بود، زیرا در طول جلسات مرورگر و بهروزرسانیهای افزونه همچنان پابرجا میمانند. با استفاده از این رویکرد، کاربران میتوانند تا 30000 قانون سفارشی اضافه کنند.
فیلتر کردن عناصر در صفحات وب
فیلتر کردن درخواستهای شبکه تنها یکی از بخشهای مهم فیلتر کردن محتوا است. بخش مهم دیگر، حذف مستقیم محتوای ناخواسته از صفحات وب است. به عنوان مثال، بیش از ۴۰٪ از قوانین لیست فیلتر easylist نحوه پنهان کردن عناصر صفحه توسط کلاینتها را تعریف میکنند.
این امر میتواند با استفاده از اسکریپتهای محتوا محقق شود. اسکریپتهای محتوا در متن صفحات وب اجرا میشوند و میتوانند با استفاده از DOM در آنها تغییراتی ایجاد کنند.
افزونههای کروم مجاز به اجرای کد میزبانیشده از راه دور نیستند. با این حال، دادههای سرور در مورد اینکه کدام عناصر باید پنهان شوند، تحت تأثیر قرار نمیگیرند زیرا این دادهها، دادههای پیکربندی در نظر گرفته میشوند، از این رو، قوانین عناصر میتوانند در زمان اجرا در صورت لزوم بهروزرسانی شوند.
فیلتر کردن درخواستهای شبکه در افزونههای نصبشده روی پالیسی
موارد استفاده سازمانی و آموزشی اغلب الزامات بسیار سختگیرانهای برای فیلتر کردن محتوا و شبکه دارند، مانند فیلتر کردن درخواستها بر اساس محتوای آنها. برای فعال کردن این موارد استفاده، افزونههای نصب شده با سیاست، روش دیگری برای فیلتر کردن و مسدود کردن درخواستهای شبکه دارند. با استفاده از گزینه "مسدود کردن" با رویدادها در webRequest API، میتوان یک فیلتر محتوای برنامهریزی شده پیادهسازی کرد که منطق سفارشی را در هر درخواست اجرا میکند تا تصمیم بگیرد که آیا یک درخواست باید مسدود شود یا خیر. این محدود به افزونههای نصب شده با سیاست است زیرا این افزونهها سطح اعتماد بالاتری دارند.
درخواستهای ناوبری را رهگیری کنید
درخواستهای ناوبری را میتوان با استفاده از قوانین درخواست شبکه اعلانی فیلتر کرد. برای مثال، ممکن است بخواهید URLهای ردیابی که کاربر را به مقصد مورد نظر خود هدایت میکنند، دور بزنید. یک رویکرد برای مدیریت این مشکل، هدایت یک درخواست ناوبری https://tracker.com?redirect=https%3A%2F%2Fexample.com به یک صفحه افزونه (که باید به عنوان یک منبع قابل دسترسی از طریق وب پیکربندی شود) است، که سپس یک اسکریپت برای استخراج هدف تغییر مسیر اجرا میکند و با استفاده از window.location.replace("https://example.com") با دور زدن ردیاب لینک، به مقصد هدایت میشود.