Miglioramento del filtro dei contenuti in Manifest V3

Oliver Dunk
Oliver Dunk

Nell'ultimo anno, abbiamo partecipato attivamente a discussioni con i fornitori di diverse estensioni di blocco dei contenuti in merito a come migliorare la piattaforma delle estensioni MV3. Sulla base di queste discussioni, molte delle quali si sono svolte nel WebExtensions Community Group (WECG) in collaborazione con altri browser, siamo stati in grado di offrire miglioramenti significativi.

Altri set di regole statici

Gli insiemi di regole di filtro sono generalmente raggruppati in elenchi. Ad esempio, un elenco più generico potrebbe contenere regole applicabili a tutti gli utenti, mentre un elenco più specifico potrebbe nascondere contenuti specifici per località che solo alcuni utenti vogliono bloccare. Fino a poco tempo fa, consentivamo a ogni estensione di offrire agli utenti la possibilità di scegliere tra 50 elenchi (o "set di regole statici") e di attivare contemporaneamente 10 di questi elenchi. Nelle discussioni con la community, gli sviluppatori di estensioni hanno fornito prove convincenti che dimostrano che questa percentuale era troppo bassa per determinati casi d'uso. Dopo aver esaminato le prestazioni dell'API in Chrome tenendo presenti queste discussioni, ora è possibile abilitare fino a 50 API contemporaneamente. In particolare, si tratta di un numero significativamente superiore al limite di 20 richieste nel WECG. Consentiamo anche 100 set di regole in totale. Questa versione sarà disponibile in Chrome 120 e l'aumento dei limiti è supportato sia da Firefox che da Safari, che hanno entrambi fornito un input iniziale su questa proposta.

Più regole dinamiche

La maggior parte delle regole è "statica" e viene fornita con ogni aggiornamento di un'estensione. Tuttavia, per supportare aggiornamenti più frequenti e regole definite dall'utente, anche le estensioni possono aggiungere regole in modo dinamico, senza che gli sviluppatori debbano caricare una nuova versione dell'estensione sul Chrome Web Store.

Quando un'estensione può modificare dinamicamente le richieste in modi che non sono stati controllati durante la revisione del Chrome Web Store, gli utenti sono esposti al rischio di phishing o furto di dati. Ad esempio, potresti usare in modo improprio una regola di reindirizzamento per inserire link di affiliazione senza consenso.

Di conseguenza, abbiamo consentito alle estensioni di aggiungere solo fino a 5000 regole. Questo ha incoraggiato l'uso di questa funzionalità con parsimonia e facilitato il rilevamento degli abusi.

Tuttavia, gli sviluppatori di estensioni come AdGuard e Adblock Plus hanno eseguito le proprie analisi e condiviso dati secondo cui un limite più elevato avrebbe consentito di regole più aggiornate e per gli utenti con un numero maggiore di elenchi personalizzati di eseguire la migrazione a Manifest V3. Infatti, AdGuard ha riferito che ogni settimana vengono apportate più di 2600 modifiche agli elenchi più popolari e del 5% degli utenti che utilizzano elenchi di filtri personalizzati, uno su quattro di questi utenti ha un totale combinato di oltre 5000 regole dinamiche tra loro (fonte). AdGuard ha notato che si tratta di una sfida significativa per la migrazione dell'estensione a Manifest V3 e abbiamo ricevuto feedback simili da altri utenti che hanno attivato il blocco dei contenuti.

Abbiamo stabilito che alcune regole di filtro, come quelle con un'azione block o allow, sono molto più sicure e hanno meno probabilità di essere utilizzate in modo illecito. Costituiscono inoltre la maggior parte delle regole di filtro per il blocco degli annunci. Sulla base di ciò, ho redatto e condiviso una proposta nel gruppo della community di estensioni web per definire un insieme di regole che consideriamo a rischio inferiore e consentiamo fino a 30.000 di queste. Manteniamo comunque un limite massimo per evitare regressioni delle prestazioni.

Questa proposta era supportata nel Web Extensions Community Group, quindi l'abbiamo implementata. A partire da Chrome 121, il limite più alto di 30.000 regole si applica alle regole DNR sicure, che definiamo come regole con un'azione block, allow, allowAllRequests o upgradeScheme.

In base ai dati condivisi da AdGuard, una percentuale compresa tra il 98 e il 99% delle regole dovrebbe trarre vantaggio da questo limite più elevato. Eventuali regole rimanenti sono comunque supportate e possono essere aggiunte entro il limite esistente.

Questa costante è disponibile in Chrome come costante MAX_NUMBER_OF_DYNAMIC_RULES. Il limite delle regole per tutte le altre regole di richiesta di rete dinamica rimane su 5000.

Dimensioni del set di regole ridotte

In Chrome 118, abbiamo modificato il valore predefinito del campo isUrlFilterCaseSensitive in false in base al feedback della community. Questo campo controlla se una regola che filtra per URL fa distinzione tra maiuscole e minuscole. Abbiamo appreso che la maggior parte degli sviluppatori aveva un valore predefinito diverso nell'estensione. Di conseguenza, il valore ha dovuto essere impostato più volte. Apportando questa modifica, gli sviluppatori sono in grado di ottenere riduzioni significative delle dimensioni dei set di regole.

Passaggi successivi

Ci impegniamo a continuare a investire nell'API declarativeNetRequest in modo da poter supportare il maggior numero possibile di casi d'uso e non vediamo l'ora di continuare a collaborare con la community. In particolare, vorremmo ringraziare i membri del WECG per il loro impegno, tra cui AdGuard per aver condiviso una notevole quantità di dati alla base di questo lavoro, e tutti i fornitori di browser che hanno contribuito in modo importante alla progettazione di questa API.

Continueremo a esaminare i limiti che abbiamo istituito per apportare le modifiche necessarie. A supporto di ciò, abbiamo intenzione di condividere alcuni dei dati che abbiamo raccolto nell'ambito di questo lavoro nel prossimo futuro. Inoltre, stiamo lavorando per aggiungere ulteriori funzionalità, come la possibilità di creare corrispondenze con le intestazioni delle risposte, una richiesta che abbiamo ricevuto frequentemente dalle estensioni di visualizzazione di PDF. In ogni caso, continueremo a comunicare il nostro lavoro e utilizzeremo regolarmente il Web Extensions Community Group come luogo per discutere delle idee e allinearci agli argomenti che vogliamo approfondire in futuro.