Filtrowanie treści

Istnieją różne sposoby wdrażania filtrowania treści i sieci w rozszerzeniach do Chrome. Ten przewodnik zawiera omówienie funkcji filtrowania treści dostępnych dla rozszerzeń oraz różnych metod filtrowania, technik i interfejsów API, których mogą używać rozszerzenia do Chrome.

Filtruj żądania sieciowe

Podstawowym sposobem filtrowania żądań sieciowych w rozszerzeniach do Chrome jest użycie interfejsu API chrome.declarativeNetRequest. Programiści mogą blokować lub modyfikować żądania sieciowe, określając reguły deklaratywne. Format deklaratywnych reguł Net Request opiera się na możliwościach składni listy filtrów używanej przez większość programów blokujących reklamy.

Te reguły mogą:

  • Blokuj żądanie sieciowe.
  • Uaktualnij schemat adresu URL do schematu bezpiecznego (http do https lub ws to wss).
  • Przekieruj żądanie sieciowe.
  • modyfikować nagłówki żądania lub odpowiedzi;

Chrome obsługuje reguły połączone z rozszerzeniem oraz reguły aktualizowane dynamicznie (na przykład w odpowiedzi na zdalną konfigurację lub dane wprowadzone przez użytkownika).

Połącz reguły filtrowania z rozszerzeniem

Reguły zawarte w pakiecie rozszerzeń są nazywane „regułami statycznymi”. Te reguły są instalowane i aktualizowane podczas instalowania lub uaktualniania rozszerzenia. Chrome ogranicza liczbę reguł statycznych, które może zadeklarować rozszerzenie.

W przypadku statycznych reguł deklaratywnych żądań netto Chrome udostępnia globalną pulę 300 tys. reguł, których może używać zestaw zainstalowanych rozszerzeń. Oprócz tego dla każdego rozszerzenia gwarantowany jest limit 30 tys. reguł statycznych. Jeśli na przykład użytkownik ma zainstalowane tylko jedno rozszerzenie do filtrowania treści, może ono używać maksymalnie 330 000 statycznych reguł deklaratywnych żądań netto. Aby zorientować się, ile takich reguł zawiera, popularna lista filtrów EasyList, z której korzysta większość blokad reklam,składa się z około 35 000 reguł sieciowych.

Statyczne reguły deklaratywnej żądań netto można podzielić na różne zestawy reguł. Rozszerzenie może określić do 100 statycznych zestawów reguł, a jednocześnie można włączyć 50 z tych zestawów reguł.

Dynamiczne dodawanie reguł filtrowania w czasie działania

Niektórych reguł nie można połączyć w pakiet z rozszerzeniem. Zamiast tego trzeba je dodawać w czasie działania. Są to tzw. „reguły dynamiczne”.

W przypadku dynamicznych reguł deklaratywnych żądań netto Chrome zezwala na maksymalnie 30 000 bezpiecznych reguł dynamicznych na rozszerzenie. Większość reguł jest uznawanych za bezpieczne: block, allow, allowAllRequests i upgradeScheme. Nawet jeśli reguła nie jest uznawana za bezpieczną (np. redirect), można ją dodać dynamicznie, ale z dolnym limitem wynoszącym 5000 też wlicza się do limitu 30 tys. reguł dynamicznych. Aby spojrzeć na to z perspektywy, 98–99% reguł na liście filtrów „niełatwa” to reguły bezpieczne.

Rozszerzenia filtrowania treści mogą używać reguł statycznych i dynamicznych do łączenia znanych reguł filtrowania z rozszerzeniami i w razie potrzeby do aktualizowania rozszerzeń za pomocą nowych reguł filtrowania treści pochodzących z serwerów.

Dostosowywanie reguł na podstawie zaobserwowanych żądań

Ekosystem reklam stale się rozwija, więc trzeba aktualizować filtry treści. Dzięki połączeniu chrome.webRequest i dynamicznych reguł deklaratywnych żądań netto możesz analizować żądania sieciowe pod kątem potencjalnych naruszeń prywatności i blokować je w przyszłości.

Podstawowe podejście:

  1. Analizuj żądania internetowe za pomocą interfejsu API chrome.webRequest i spróbuj automatycznie rozpoznawać te, które nie spełniają Twoich wymagań dotyczących prywatności, np. przy użyciu systemów uczących się.
  2. Utwórz dynamiczną deklaracja netto żądania netto dla każdego żądania, które zostało wskazane w kroku 2, aby podobne żądania były blokowane w przyszłości.
  3. (Opcjonalnie) Prześlij zidentyfikowanej deklaratywnej reguły Net Request z powrotem na swój serwer, aby można było dodać ją jako statyczną deklaratywną regułę netto przy następnej aktualizacji rozszerzenia.

Zaletą tego podejścia jest to, że analiza jest przeprowadzana asynchronicznie i nie wpływa negatywnie na wydajność witryny.

Zezwalaj użytkownikom na definiowanie ich własnych reguł filtrowania

Aby umożliwić użytkownikom definiowanie własnych reguł filtrowania treści, możesz udostępnić w rozszerzeniu interfejs konfiguracji filtra. Przekonwertuj te reguły zdefiniowane przez użytkownika na reguły deklaratywnej żądań netto i dodaj je jako reguły dynamiczne. Reguły te będą nadal dostępne dla użytkowników, ponieważ będą stosowane niezależnie od sesji przeglądarki i uaktualnienia rozszerzeń. Dzięki temu użytkownicy mogą dodać maksymalnie 30 tys. reguł niestandardowych.

Filtruj elementy na stronach internetowych

Filtrowanie żądań sieciowych to tylko ważny element filtrowania treści. Inną ważną częścią jest usuwanie niechcianych treści bezpośrednio ze stron internetowych. Na przykład ponad 40% reguł easylist filter list określa, jak klienci mają ukrywać elementy strony.

Użyj w tym celu skryptów treści. Skrypty treści działają w kontekście stron internetowych i mogą wprowadzać w nich zmiany za pomocą modelu DOM.

Rozszerzenia do Chrome nie mogą uruchamiać kodu hostowanego zdalnie. Nie ma to jednak wpływu na dane z serwera dotyczące elementów do ukrycia, ponieważ są to dane konfiguracyjne. Z tego względu reguły elementów mogą być aktualizowane w czasie działania, gdy jest to konieczne.

Filtruj żądania sieciowe w rozszerzeniach zainstalowanych z zasadami

W przypadkach użycia w firmach i szkołach często obowiązują bardzo rygorystyczne wymagania dotyczące filtrowania treści i sieci, np. filtrowanie żądań na podstawie treści. Aby umożliwić korzystanie z tych przypadków użycia, rozszerzenia zainstalowane z zasadami mają dodatkowy sposób filtrowania i blokowania żądań sieciowych. Dzięki opcji „blokowania” ze zdarzeniami w interfejsie API webRequest można wdrożyć automatyczny filtr treści, który wykonuje niestandardową logikę w przypadku każdego żądania, aby zdecydować, czy dane żądanie powinno zostać zablokowane. Dotyczy to tylko rozszerzeń zainstalowanych zgodnie z zasadami, ponieważ cieszą się one wyższym poziomem zaufania.

Przechwytywanie żądań nawigacji

Żądania nawigacji można filtrować przy użyciu reguł deklaratywnych żądań netto. Możesz na przykład pominąć linki monitorujące, które przekierowują użytkownika do odpowiedniego miejsca docelowego. Jednym ze sposobów rozwiązania tego problemu jest przekierowanie żądania nawigacji https://tracker.com?redirect=https%3A%2F%2Fexample.com na stronę rozszerzenia (którą trzeba skonfigurować jako zasób dostępny w internecie), który następnie uruchomi skrypt wyodrębniający miejsce docelowe przekierowania i przekierowujące do miejsca docelowego za pomocą metody window.location.replace("https://example.com") omijającej tag śledzenia linków.