Filtro contenuti

Esistono diversi modi per implementare i filtri dei contenuti e della rete nelle estensioni di Chrome. Questa guida fornisce una panoramica delle funzionalità di filtro dei contenuti disponibili per le estensioni, nonché i diversi approcci, tecniche e API di filtro che possono essere utilizzati dalle estensioni di Chrome.

Filtra richieste di rete

Il modo principale per filtrare le richieste di rete nelle estensioni di Chrome è usare l'API chrome.declarativeNetRequest. Con le richieste nette dichiarative gli sviluppatori possono bloccare o modificare le richieste di rete specificando regole dichiarative. Il formato delle regole per le richieste nette dichiarative si basa sulle capacità della sintassi dell'elenco di filtri utilizzata dalla maggior parte dei blocchi degli annunci.

Queste regole sono in grado di:

  • Blocca una richiesta di rete.
  • Esegui l'upgrade dello schema URL a uno schema sicuro (da http a https o da ws a wss).
  • Reindirizza una richiesta di rete.
  • Modifica le intestazioni della richiesta o della risposta.

Chrome supporta le regole in bundle con un'estensione e quelle aggiornate in modo dinamico (ad esempio in risposta a una configurazione remota o a un input utente).

Raggruppa le regole di filtro con l'estensione

Le regole incluse nel pacchetto dell'estensione sono chiamate "regole statiche". Queste regole vengono installate e aggiornate quando un'estensione viene installata o aggiornata. Chrome limita il numero di regole statiche che un'estensione può dichiarare.

Per le regole statiche dichiarative relative alle richieste nette, Chrome ha un pool condiviso globale di 300.000 regole che possono essere utilizzate congiuntamente dall'insieme di estensioni installate. Inoltre, a ogni estensione viene garantito un margine di 30.000 regole statiche. Ad esempio, se un utente ha installato una sola estensione per il filtro dei contenuti, l'estensione può utilizzare fino a 330.000 regole statiche dichiarative per le richieste nette. Per avere un'idea di quante regole si tratti, il popolare elenco di filtri EasyList, utilizzato dalla maggior parte dei blocchi degli annunci, è composto da circa 35.000 regole di rete.

Le regole per le richieste nette dichiarative statiche possono essere organizzate in diversi set di regole. Un'estensione può specificare fino a 100 set di regole statici, di cui è possibile abilitarne 50 alla volta.

Aggiunta dinamica di regole di filtro in fase di runtime

Alcune regole non possono essere raggruppate con l'estensione. Le estensioni devono invece aggiungerle al runtime. Queste regole sono chiamate "regole dinamiche".

Per le regole dinamiche relative alle richieste nette dichiarative, Chrome consente un massimo di 30.000 regole dinamiche sicure per estensione. La maggior parte delle regole è considerata sicura: block, allow, allowAllRequests o upgradeScheme. Anche se una regola non è considerata sicura (ad esempio redirect), può comunque essere aggiunta in modo dinamico, ma con un limite massimo inferiore,pari a 5000,che viene conteggiato ai fini del limite di 30.000 regole dinamiche. Per dare un'idea chiara di questa situazione, il 98-99% delle regole nell'elenco dei filtri dell'elenco semplice è costituito da regole sicure.

Le estensioni per il filtro dei contenuti possono utilizzare rispettivamente regole statiche e dinamiche per raggruppare le regole di filtro note con la relativa estensione e per aggiornarne le estensioni con nuove regole di filtro dei contenuti dei server, se necessario.

Adatta le regole in base alle richieste osservate

L'ecosistema pubblicitario è in continua evoluzione e i filtri dei contenuti devono essere aggiornati di conseguenza. Combinando chrome.webRequest e le regole dinamiche relative alle richieste nette dichiarative, è possibile analizzare le richieste di rete alla ricerca di potenziali violazioni della privacy e bloccarle in futuro.

L'approccio di base è:

  1. Analizza le richieste web utilizzando l'API chrome.webRequest e prova a identificare automaticamente le richieste che non soddisfano i tuoi requisiti di privacy, ad esempio usando il machine learning.
  2. Crea una regola per le richieste nette dichiarative dinamica per ogni richiesta identificata nel secondo passaggio, in modo che le richieste simili vengano bloccate in futuro.
  3. (Facoltativo) Invia la regola per le richieste nette dichiarative identificate al tuo server in modo che possa essere aggiunta come regola statica per le richieste nette dichiarative con il successivo aggiornamento dell'estensione.

Il vantaggio di questo approccio è che l'analisi avviene in modo asincrono e non influisce negativamente sul rendimento del sito web.

Consenti agli utenti di definire le proprie regole di filtro

Puoi consentire agli utenti di definire le proprie regole per il filtro dei contenuti fornendo nell'estensione un'interfaccia utente per la configurazione del filtro. Converti queste regole definite dall'utente in regole dichiarative per le richieste nette e aggiungile come regole dinamiche. Queste regole continueranno a essere disponibili per gli utenti man mano che vengono applicate durante le sessioni del browser e gli upgrade delle estensioni. Con questo approccio, gli utenti possono aggiungere fino a 30.000 regole personalizzate.

Filtra elementi nelle pagine web

Il filtraggio delle richieste di rete è solo una parte importante del filtro dei contenuti. Un altro aspetto importante è la rimozione dei contenuti indesiderati direttamente dalle pagine web. Ad esempio, più del 40% delle regole dell'elenco di filtri per elenchi facilitati definisce in che modo i clienti devono nascondere gli elementi delle pagine.

A questo scopo, è possibile utilizzare gli script di contenuti. Gli script di contenuti vengono eseguiti nel contesto delle pagine web e possono essere modificate utilizzando il DOM.

Le estensioni di Chrome non sono autorizzate a eseguire codice ospitato remoto. Tuttavia, i dati di un server sugli elementi da nascondere non sono interessati perché sono considerati dati di configurazione. Di conseguenza, le regole degli elementi possono essere aggiornate in fase di runtime se necessario.

Filtra le richieste di rete nelle estensioni installate tramite criteri

I casi d'uso di aziende e istituti di istruzione hanno spesso requisiti estremamente rigidi per l'applicazione di filtri a contenuti e reti, ad esempio le richieste di filtraggio delle richieste in base ai contenuti. Per consentire questi casi d'uso, le estensioni installate tramite criteri offrono un modo aggiuntivo per filtrare e bloccare le richieste di rete. Utilizzando l'opzione di "blocco" con gli eventi nell'API webRequest, è possibile implementare un filtro dei contenuti programmatici che esegue la logica personalizzata su ogni richiesta per decidere se una richiesta deve essere bloccata o meno. Questa opzione è limitata alle estensioni con installazione di criteri, in quanto hanno un livello di attendibilità più elevato.

Intercetta le richieste di navigazione

Le richieste di navigazione possono essere filtrate utilizzando le regole per le richieste nette dichiarative. Ad esempio, potresti voler bypassare gli URL di monitoraggio che reindirizzano l'utente alla destinazione prevista. Un approccio per gestire questo problema è reindirizzare una richiesta di navigazione https://tracker.com?redirect=https%3A%2F%2Fexample.com a una pagina di estensione (che deve essere configurata come risorsa accessibile dal web), che eseguirà quindi uno script per estrarre la destinazione del reindirizzamento e reindirizzare alla destinazione utilizzando window.location.replace("https://example.com") eludendo il tracker dei link.