Im letzten Jahr haben wir uns intensiv mit den Anbietern mehrerer Erweiterungen zum Blockieren von Inhalten über Möglichkeiten zur Verbesserung der MV3-Erweiterungsplattform ausgetauscht. Auf der Grundlage dieser Diskussionen, von denen viele in der WebExtensions Community Group (WECG) in Zusammenarbeit mit anderen Browsern stattfanden, konnten wir erhebliche Verbesserungen vornehmen.
Weitere statische Regelsätze
Filterregeln werden in der Regel in Listen gruppiert. Eine allgemeinere Liste kann beispielsweise Regeln enthalten, die für alle Nutzer gelten, während eine spezifischere Liste standortspezifische Inhalte ausblenden kann, die nur einige Nutzer blockieren möchten. Bis vor Kurzem konnten Nutzer bei jeder Erweiterung aus 50 Listen (oder „statischen Regelsätzen“) wählen und 10 davon gleichzeitig aktivieren. In Gesprächen mit der Community haben Erweiterungs-Entwickler überzeugende Beweise dafür vorgelegt, dass dies für bestimmte Anwendungsfälle zu niedrig war. Nachdem wir uns die Leistung der API in Chrome unter Berücksichtigung dieser Diskussionen angesehen haben, können jetzt bis zu 50 APIs gleichzeitig aktiviert werden. Das ist deutlich mehr als die 20 im WECG angeforderten. Außerdem sind insgesamt 100 Regeln zulässig. Diese Funktion ist in Chrome 120 verfügbar. 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.
Mehr dynamische Regeln
Die meisten Regeln sind „statisch“ und werden mit jedem Update einer Erweiterung bereitgestellt. Um jedoch häufigere Updates und benutzerdefinierte Regeln zu unterstützen, können Erweiterungen auch dynamisch Regeln hinzufügen, ohne dass die 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 geprüft wurde, sind Nutzer einem Risiko von Phishing oder Datendiebstahl ausgesetzt. So könnte beispielsweise eine Weiterleitungsregel missbraucht werden, um ohne Einwilligung Affiliate-Links einzuschleusen.
Daher haben wir es nur erlaubt, mit Erweiterungen bis zu 5.000 Regeln hinzuzufügen. Das hat dazu beigetragen,dass diese Funktion sparsam verwendet wurde und wir Missbrauch leichter erkennen konnten.
Entwickler von Erweiterungen wie AdGuard und Adblock Plus haben jedoch eigene Analysen durchgeführt und Daten geteilt, aus denen hervorgeht, dass mit einem höheren Limit aktuellere Regeln möglich wären und Nutzer mit einer größeren Anzahl benutzerdefinierter Listen zu Manifest V3 migrieren könnten. AdGuard berichtet sogar, 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 einer von vier Nutzern insgesamt mehr als 5.000 dynamische Regeln (Quelle). AdGuard hat dies als große Herausforderung bei der Migration seiner Erweiterung zu Manifest V3 bezeichnet. Ähnliches Feedback haben wir auch von anderen Contentblockern erhalten.
Wir haben festgestellt, dass einige Filterregeln, z. B. solche mit der Aktion block
oder allow
, viel sicherer sind und weniger Missbrauchspotenzial haben. Außerdem machen sie den Großteil der Filterregeln für Adblocker aus. Auf dieser Grundlage habe ich einen Vorschlag in der Community-Gruppe für Web-Erweiterungen veröffentlicht, um eine Reihe von Regeln zu definieren,die wir als weniger riskant betrachten und die bis zu 30.000 dieser Erweiterungen zulassen. Wir behalten jedoch eine Obergrenze bei, um Leistungseinbußen zu vermeiden.
Dieser Vorschlag wurde von der Web Extensions Community Group unterstützt und daher implementiert. Ab Chrome 121 gilt die höhere Grenze von 30.000 Regeln für sichere DNR-Regeln, die wir als Regeln mit der Aktion block
, allow
, allowAllRequests
oder upgradeScheme
definieren.
Laut den von AdGuard bereitgestellten Daten sollten zwischen 98 und 99 % ihrer Regeln von diesem höheren Limit profitieren. Alle verbleibenden Regeln werden weiterhin unterstützt und können innerhalb des bestehenden Limits hinzugefügt werden.
In Chrome ist dies als Konstante MAX_NUMBER_OF_DYNAMIC_RULES verfügbar. Die Regelbeschränkung für alle anderen Regeln für dynamische Netzwerkanfragen bleibt bei 5.000.
Verringerte Größe des Regelsatzes
In Chrome 118 haben wir den Standardwert für das Feld isUrlFilterCaseSensitive
auf Grundlage von Feedback von der Community in false
geändert. In diesem Feld wird festgelegt, ob eine Regel, die nach URL filtert, die Groß- und Kleinschreibung berücksichtigt. Wir haben festgestellt, dass die meisten Entwickler in ihrer Erweiterung eine andere Standardeinstellung hatten. Daher musste der Wert mehrmals festgelegt werden. Durch diese Änderung können Entwickler ihre Regelsätze erheblich verkleinern.
Wie geht es weiter?
Wir werden auch weiterhin in die declarativeNetRequest API investieren, um so viele Anwendungsfälle wie möglich zu unterstützen. Wir freuen uns auf die weitere Zusammenarbeit mit der Community. Insbesondere möchten wir den Mitgliedern der WECG für ihr Engagement danken, einschließlich AdGuard, das einen erheblichen Teil der Daten zur Verfügung gestellt hat, die diese Arbeit vorangetrieben haben, und allen Browseranbietern, die einen wesentlichen Beitrag zur Entwicklung dieser API geleistet haben.
Wir werden die Limits, die wir derzeit haben, weiter überprüfen und bei Bedarf Anpassungen vornehmen. Um dies zu unterstützen, werden wir in naher Zukunft einige der Daten veröffentlichen, die wir im Rahmen dieser Arbeit erfasst haben. Außerdem arbeiten wir daran, weitere Funktionen hinzuzufügen, z. B. die Möglichkeit, Antwortheader abzugleichen. Diese Funktion wird von vielen Nutzern von PDF-Betrachter-Erweiterungen nachgefragt. Wir werden unsere Arbeit auf jeden Fall weiter kommunizieren und die Web-Erweiterungen-Community-Gruppe regelmäßig als Ort nutzen, um Ideen zu diskutieren und uns darauf zu einigen, was wir uns als Nächstes ansehen möchten.