Inhaltsfilterung in Manifest V3 verbessern

Oliver Dunk
Oliver Dunk

Im vergangenen Jahr haben wir uns aktiv an Gesprächen mit den Anbietern beteiligt, die hinter mehreren Erweiterungen zum Blockieren von Inhalten stehen, wie wir die MV3-Erweiterungsplattform verbessern können. Basierend auf diesen Gesprächen, von denen viele in Zusammenarbeit mit anderen Browsern in der WebExtensions Community Group (WECG) stattgefunden haben, konnten wir erhebliche Verbesserungen umsetzen.

Weitere statische Regelsätze

Gruppen von Filterregeln werden normalerweise in Listen gruppiert. Eine allgemeinere Liste könnte beispielsweise Regeln enthalten, die für alle Nutzer gelten, während in einer spezifischeren Liste standortspezifische Inhalte ausgeblendet werden, die nur einige Nutzer blockieren möchten. Bis vor Kurzem war es möglich, dass Nutzer bei jeder Erweiterung zwischen 50 Listen (bzw. „statischen Regelsätzen“) wählen können, von denen zehn gleichzeitig aktiviert werden sollten. In Gesprächen mit der Community lieferten die Entwickler von Erweiterungen überzeugende Belege dafür, dass dies für bestimmte Anwendungsfälle zu niedrig war. Nachdem wir uns die Leistung der API in Chrome angesehen haben, können jetzt bis zu 50 APIs gleichzeitig aktiviert werden. (Besonders deutlich ist dieser Wert deutlich höher als der von der WECG geforderte Grenzwert von 20.) Außerdem sind insgesamt 100 Regelsätze zulässig. Diese Funktion ist in Chrome 120 verfügbar und die Erhöhung der Limits wird sowohl von Firefox als auch von Safari unterstützt, die beide schon erste Rückmeldungen zu diesem Vorschlag gegeben haben.

Weitere dynamische Regeln

Die meisten Regeln sind „statisch“ und werden mit jedem Update einer Erweiterung ausgeliefert. Um häufigere Updates und benutzerdefinierte Regeln zu unterstützen, können Erweiterungen jedoch auch Regeln dynamisch hinzufügen, ohne dass ihre Entwickler eine neue Version der Erweiterung in den Chrome Web Store hochladen müssen.

Wenn eine Erweiterung Anfragen dynamisch auf eine Weise ändern kann, die bei der Überprüfung im Chrome Web Store nicht überprüft wurde, birgt dies das Risiko von Phishing oder Datendiebstahl. Beispielsweise könnte eine Weiterleitungsregel missbraucht werden, um Affiliate-Links ohne Einwilligung einzufügen.

Deshalb durften Erweiterungen nur bis zu 5.000 Regeln hinzufügen, was dazu führte,dass diese Funktion sparsam eingesetzt wurde und wir Missbrauch leichter erkennen konnten.

Entwickler von Erweiterungen wie AdGuard und Adblock Plus haben jedoch ihre eigene Analyse durchgeführt und Daten freigegeben, sodass bei einem höheren Limit aktuellere Regeln möglich wären und Nutzer mit einer größeren Anzahl benutzerdefinierter Listen zu Manifest V3 migriert werden können. Laut AdGuard werden pro Woche mehr als 2.600 Änderungen an beliebten Listen vorgenommen. Von den 5 % der Nutzer, die benutzerdefinierte Filterlisten verwenden, hat jeder vierte Nutzer insgesamt mehr als 5.000 dynamische Regeln (Quelle). AdGuard stellte dies als erhebliche Herausforderung bei der Migration der Erweiterung auf Manifest V3 fest. Ähnliches Feedback kam auch von anderen Inhaltsblockern.

Wir haben festgestellt, dass einige Filterregeln, z. B. die mit der Aktion „block“ oder „allow“, viel sicherer sind und seltener missbraucht werden. Sie machen auch den Großteil der Anzeigenblock-Filterregeln aus. Auf dieser Grundlage habe ich einen Vorschlag in der Community-Gruppe für Web Extensions entwickelt und freigegeben, um eine Reihe von Regeln zu definieren,die wir als geringeres Risiko betrachten und die bis zu 30.000 davon zulassen. Wir halten nach wie vor eine Obergrenze an, um Leistungseinbußen zu vermeiden.

Dieser Vorschlag wurde in der Community-Gruppe für Weberweiterungen unterstützt, also haben wir ihn implementiert. Ab Chrome 121 gilt das höhere Limit von 30.000 Regeln für sichere DNR-Regeln, die wir als Regeln mit der Aktion block, allow, allowAllRequests oder upgradeScheme definieren.

Basierend auf den von AdGuard weitergegebenen Daten sollten 98 bis 99 % der Regeln von diesem höheren Limit profitieren. Alle verbleibenden Regeln werden weiterhin unterstützt und können innerhalb des bestehenden Limits hinzugefügt werden.

Diese ist in Chrome als MAX_NUMBER_OF_DYNAMIC_RULES-Konstante verfügbar. Das Regellimit für alle anderen dynamischen Netzanfrageregeln bleibt bei 5.000.

Verringerte Größe des Regelsatzes

In Chrome 118 haben wir basierend auf dem Feedback aus der Community den Standardwert für das Feld isUrlFilterCaseSensitive zu false geändert. Mit diesem Feld wird festgelegt, ob bei einer Regel, die nach URL filtert, zwischen Groß- und Kleinschreibung unterschieden wird. Wir haben festgestellt, dass die meisten Entwickler eine andere Standardeinstellung in ihrer Erweiterung hatten. Daher musste der Wert um ein Vielfaches festgelegt werden. Diese Änderung ermöglicht es Entwicklern, ihre Regelsätze erheblich zu verringern.

Wie geht es weiter?

Wir werden weiterhin in die deklarativeNetRequest API investieren, damit wir so viele Anwendungsfälle wie möglich unterstützen können, und freuen uns auf die weitere Zusammenarbeit mit der Community. Besonders möchten wir den WECG-Mitgliedern für ihr Engagement danken, einschließlich AdGuard für die Weitergabe einer erheblichen Menge der Daten, die dieser Arbeit zugrunde liegen, sowie allen Browser-Anbietern, die alle einen wesentlichen Beitrag zur Entwicklung dieser API geleistet haben.

Wir werden die bestehenden Limits weiterhin prüfen, um bei Bedarf Anpassungen vorzunehmen. Um dies zu unterstützen, planen wir, in naher Zukunft einige der Daten, die wir im Rahmen dieser Arbeit gesammelt haben, zur Verfügung zu stellen. Darüber hinaus arbeiten wir an weiteren Funktionen. Dazu gehört beispielsweise die Möglichkeit zum Abgleich mit Antwort-Headern, was eine häufige Anforderung bei PDF-Viewer-Erweiterungen ist. Wie immer kommunizieren wir unsere Arbeit weiterhin und nutzen regelmäßig die Community-Gruppe für Weberweiterungen, um Ideen auszutauschen und uns zu überlegen, was wir als Nächstes sehen möchten.