Im letzten Jahr haben wir uns aktiv an Diskussionen mit den Anbietern verschiedener Erweiterungen zum Blockieren von Inhalten beteiligt, um Möglichkeiten zu finden, die Plattform für MV3-Erweiterungen zu verbessern. Viele dieser Diskussionen, die in Zusammenarbeit mit anderen Browsern in der WebExtensions Community Group (WECG) stattfanden, haben uns gezeigt, dass wir erhebliche Verbesserungen erzielen konnten.
Weitere statische Regelsätze
Gruppen von Filterregeln werden normalerweise in Listen gruppiert. Eine allgemeinere Liste könnte beispielsweise Regeln für alle Nutzer enthalten, während eine spezifischere Liste möglicherweise standortspezifische Inhalte ausblendet, die nur einige Nutzer blockieren möchten. Bis vor Kurzem war es möglich, den Nutzern in jeder Erweiterung 50 Listen (oder „statische Regelsätze“) anzubieten, von denen zehn gleichzeitig aktiviert werden können. In Gesprächen mit der Community lieferten die Entwickler von Erweiterungen überzeugende Nachweise, dass dies für bestimmte Anwendungsfälle zu niedrig war. Nachdem wir uns die Leistung der API in Chrome im Hinblick auf diese Vorgaben angesehen haben, können nun bis zu 50 gleichzeitig aktiviert werden. (Vor allem ist dies deutlich höher als die in der WECG angeforderte Anzahl von 20 Mitgliedern.) Insgesamt sind 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 frühzeitig Feedback zu diesem Vorschlag gegeben haben.
Weitere dynamische Regeln
Die meisten Regeln sind „statisch“ und werden mit jedem Update für eine Erweiterung ausgeliefert. Damit jedoch häufigere Updates und benutzerdefinierte Regeln unterstützt werden, können Erweiterungen auch dynamische Regeln hinzufügen, ohne dass ihre Entwickler eine neue Version der Erweiterung in den Chrome Web Store hochladen müssen.
Wenn eine Erweiterung Anfragen dynamisch und so ändern kann, dass sie bei der Überprüfung im Chrome Web Store nicht geprüft wurden, besteht für Nutzer das Risiko von Phishing oder Datendiebstahl. Beispielsweise könnte eine Weiterleitungsregel missbraucht werden, um ohne Einwilligung Affiliate-Links einzufügen.
Erweiterungen dürfen daher nur bis zu 5.000 Regeln hinzufügen, was eine sparsame Verwendung dieser Funktion ermutigte und es für uns einfacher machte,Missbrauch zu erkennen.
Entwickler von Erweiterungen wie AdGuard und Adblock Plus haben jedoch eine eigene Analyse durchgeführt und Daten weitergegeben, sodass mit einem höheren Limit aktuellere Regeln erstellt und Nutzer mit einer höheren Anzahl von benutzerdefinierten Listen zu Manifest V3 migriert werden können. AdGuard berichtet, dass jede Woche mehr als 2.600 Änderungen an beliebten Listen vorgenommen werden. Von den fünf Prozent der Nutzer, die benutzerdefinierte Filterlisten verwenden, hat jeder vierte Nutzer insgesamt mehr als 5.000 dynamische Regeln (Quelle). AdGuard sah dies als große Herausforderung bei der Migration der Erweiterung zu Manifest V3. Wir haben ein ähnliches Feedback von anderen Inhaltsblockern erhalten.
Wir haben festgestellt, dass einige Filterregeln, z. B. solche mit der Aktion block
oder allow
, viel sicherer sind und seltener missbraucht werden. Außerdem stellen sie den Großteil der Filterregeln für Werbeblocker dar. Auf dieser Grundlage habe ich in der Community-Gruppe „Web Extensions Community“ einen Vorschlag entworfen, der eine Reihe von Regeln festlegt,die unserer Einschätzung nach das Risiko verringern und bis zu 30.000 davon zulassen. Wir haben dennoch eine Obergrenze, um Leistungsabfälle zu vermeiden.
Wir haben diesen Vorschlag von der Community-Gruppe für Web-Erweiterungen unterstützt und umgesetzt. 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 freigegebenen Daten sollten 98 bis 99 % der Regeln von diesem höheren Grenzwert profitieren. Alle verbleibenden Regeln werden weiterhin unterstützt und können innerhalb des bestehenden Limits hinzugefügt werden.
Diese ist in Chrome als Konstante MAX_NUMBER_OF_DYNAMIC_RULES verfügbar. Das Regellimit für alle anderen Anfrageregeln für das dynamische Netzwerk bleibt bei 5.000.
Verringerte Regelsatzgröße
In Chrome 118 haben wir den Standardwert für das Feld isUrlFilterCaseSensitive
aufgrund des Feedbacks aus der Community in false
geändert. Mit diesem Feld wird festgelegt, ob bei einer Regel, die nach URL filtert, die Groß- und Kleinschreibung berücksichtigt wird. Wir haben festgestellt, dass die meisten Entwickler eine andere Standardeinstellung in ihrer Erweiterung verwenden. Daher musste der Wert mehrmals festgelegt werden. Durch diese Änderung können Entwickler die Größe ihrer Regelsätze erheblich reduzieren.
Wie geht es weiter?
Wir werden weiterhin in die declarativeNetRequest 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. Wir möchten uns insbesondere bei den Mitgliedern der WECG für ihr Engagement bedanken. Dazu gehört auch AdGuard für die Bereitstellung einer beträchtlichen Menge an Daten, die zu dieser Arbeit beigetragen haben. Außerdem möchten wir allen Browseranbietern danken, die einen wesentlichen Beitrag zur Entwicklung dieser API geleistet haben.
Wir werden die festgelegten Limits auch weiterhin prüfen und gegebenenfalls Anpassungen vornehmen. Aus diesem Grund planen wir, in naher Zukunft einige der Daten, die wir im Rahmen dieser Arbeit erhoben haben, bekannt zu geben. Darüber hinaus arbeiten wir an zusätzlichen Funktionen wie der Möglichkeit zum Abgleich mit Antwortheadern, eine häufige Anfrage aus PDF-Viewer-Erweiterungen. In jedem Fall werden wir unsere Arbeit weiterhin kommunizieren und die Web Extensions Community Group regelmäßig als Ort nutzen, um Ideen zu diskutieren und gemeinsame Themen zu besprechen.