Miglioramento del filtro dei contenuti in Manifest V3

Nell'ultimo anno, abbiamo parlato attivamente con i fornitori di diverse estensioni di blocco dei contenuti circa i modi per migliorare la piattaforma delle estensioni MV3. In base a queste discussioni, molte delle quali avvenute all'interno del 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 filtro vengono 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 ciascuna estensione di offrire agli utenti la possibilità di scegliere fino a 50 elenchi (o "set di regole statici") e di attivare 10 di questi elenchi contemporaneamente. Parlando con la community, gli sviluppatori di estensioni hanno fornito prove convincenti che dimostrano che questa impostazione era troppo bassa per determinati casi d'uso. Dopo aver esaminato le prestazioni dell'API in Chrome tenendo presenti queste considerazioni, ora consentiamo l'attivazione di un massimo di 50 API contemporaneamente. Tieni presente che questo valore è molto più elevato del limite di 20 richiesti dal WECG. Sono consentiti in totale 100 set di regole. Questa modalità di spedizione è disponibile in Chrome 120 e l'aumento dei limiti è supportato sia da Firefox che da Safari, che hanno fornito anticipatamente suggerimenti su questa proposta.

Regole più 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 le regole in modo dinamico, senza che i loro sviluppatori debbano caricare una nuova versione dell'estensione nel Chrome Web Store.

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

Di conseguenza, abbiamo consentito alle estensioni di aggiungere fino a 5000 regole solo,il che ha incoraggiato l'utilizzo con parsimonia di questa funzionalità e ha reso più facile il rilevamento di comportamenti illeciti.

Tuttavia, gli sviluppatori di estensioni, tra cui AdGuard e Adblock Plus, hanno eseguito le proprie analisi e condiviso i dati che un limite più elevato consentirebbe di applicare regole più aggiornate e di eseguire la migrazione a Manifest V3 degli utenti con un numero più elevato di elenchi personalizzati. Infatti, AdGuard ha segnalato che ogni settimana vengono apportate più di 2600 modifiche agli elenchi di utenti più popolari e del 5% degli utenti che utilizzano elenchi di filtri personalizzati, uno su quattro di questi utenti ha un totale combinato di più di 5000 regole dinamiche (fonte). AdGuard ha ritenuto che questo fosse un problema importante per la migrazione dell'estensione a Manifest V3 e abbiamo ricevuto feedback simili da altri sistemi di blocco dei contenuti.

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

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

In base ai dati condivisi da AdGuard, questo limite più elevato dovrebbe essere tra il 98 e il 99% delle regole. Le eventuali regole rimanenti sono ancora supportate e possono essere aggiunte entro il limite esistente.

È disponibile in Chrome come costante MAX_NUMBER_OF_DYNAMIC_RULES. Il limite di regole per tutte le altre regole dinamiche relative alle richieste nette rimane a 5000.

Dimensioni del set di regole ridotte

In Chrome 118, abbiamo modificato il valore predefinito per il campo isUrlFilterCaseSensitive impostandolo su false in base al feedback della community. Questo campo controlla se una regola che filtra per URL è sensibile alle maiuscole e abbiamo appreso che la maggior parte degli sviluppatori aveva un valore predefinito diverso nell'estensione. Di conseguenza, il valore doveva essere impostato più volte. Apportando questa modifica, gli sviluppatori sono in grado di ottenere una riduzione significativa delle dimensioni dei loro set di regole.

Passaggi successivi

Ci impegniamo a continuare a investire nell'API declarativeNetRequest per 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 coinvolgimento, tra cui AdGuard per la condivisione di una notevole quantità di dati alla base di questo lavoro, e tutti i fornitori di browser che hanno tutti svolto un ruolo importante nella progettazione di questa API.

Continueremo a esaminare i limiti in vigore per apportare le modifiche necessarie. A questo scopo, prevediamo di condividere nel prossimo futuro alcuni dei dati raccolti nell'ambito di questo lavoro. Inoltre, stiamo lavorando per aggiungere ulteriori funzionalità, come la possibilità di creare corrispondenze con le intestazioni delle risposte, una richiesta comune che abbiamo riscontrato dalle estensioni del visualizzatore di PDF. In ogni caso, continueremo a comunicare il nostro lavoro e a usare regolarmente il gruppo della community sulle estensioni web come punto di riferimento per discutere idee ed essere in linea con i prossimi sviluppi.