← Alle Beiträge

API & Helfer

JustZix-JavaScript-Regeln funktionieren jetzt sogar auf Facebook, X und GitHub

Die Seiten, auf denen Userscript-JS bisher zerbrach — Facebook, X, GitHub und viele andere mit einer strikten Content-Security-Policy — waren auch für JustZix ein Engpass. In Version 3.2.0 haben wir die Engine zur Codeausführung so geändert, dass sie diese Barriere ohne Tricks und ohne Kompromisse beim restlichen Web durchbricht. Hier ist, was sie tut und warum.

Was die CSP eigentlich blockiert hat

Eine Content-Security-Policy mit einer script-src-Direktive, die 'unsafe-eval' und 'unsafe-inline' auslässt, sagt dem Browser: „Führe keinen Code aus, der aus einer Zeichenkette gebaut wurde". Genau diese Policy blockiert das klassische new Function('...code...')(), über das JustZix bis v3.1.x Regel- und Aktions-JS in der MAIN-Welt ausgeführt hat. Die von dieser Einschränkung am schmerzhaftesten betroffene Seite war facebook.com — monatelang in unserem Backlog unter dem Etikett „nicht machbar".

Drei Wege, eine Entscheidung

In v3.2.0 haben wir eine geschichtete Strategie eingeführt — die Erweiterung probiert jeden Pfad, bis einer funktioniert:

  1. chrome.userScripts.execute — die native User-Scripts-API aus Manifest V3. Sie führt Code als Zeichenkette außerhalb der CSP-Welt der Seite aus und funktioniert daher überall, auch bei den striktesten Policies. Sie erfordert die Berechtigung userScripts im Manifest (haben wir) und einen einmaligen Schalter „Benutzerskripte zulassen" in den Browser-Erweiterungseinstellungen (Sie klicken ihn, Sie behalten die Kontrolle).
  2. new Function — der schnelle, klassische Weg, wenn die CSP der Seite 'unsafe-eval' erlaubt. Die meisten gewöhnlichen Seiten tun das (Google, YouTube, Reddit, Wikipedia, Online-Shops), sodass 99 % Ihrer Regeln weiterhin völlig ohne Konfiguration über diesen Pfad laufen.
  3. <script src="blob:…"> — ein Fallback, der eine lokale Blob-URL erzeugt und sie als klassisches script-Tag injiziert. Er funktioniert, wenn die CSP der Seite blob: in script-src erlaubt — was facebook.com tut. Damit läuft alles auch dann, wenn der Nutzer „Benutzerskripte" noch nicht aktiviert hat.

Was das in der Praxis bedeutet

JustZix-JS-Regeln, Aktionen und die TEMP-JS-/JS-Konsole-Fenster laufen jetzt auf Seiten, die früher EvalError geworfen haben:

Wenn kein Pfad funktioniert (selten, erfordert, dass die Seite sowohl 'unsafe-eval' als auch blob: verbietet), zeigen das JS-Panel und die JS-Konsole-Fenster in 8 Sprachen eine klare Meldung „Benutzerskripte aktivieren". Ein Klick in den Browser-Einstellungen — und der Rest läuft automatisch.

So aktivieren Sie „Benutzerskripte"

Die Berechtigung wird ein für alle Mal gespeichert. Wir haben keinen eigenen Zustimmungsdialog hinzugefügt — dies ist eine bewusste Entscheidung in den Browser-Einstellungen, keine überraschende Aufforderung von uns.

Warum das gegenüber den Alternativen zählt

Userscript-Erweiterungen wie Tampermonkey oder Violentmonkey brauchen, dass die Seite 'unsafe-eval' erlaubt, oder sie verlassen sich auf ihre eigene Sandbox mit Eval. JustZix hat drei Pfade — wo jene also einen „CSP-Fehler" werfen und auf die Gnade des Seitenautors warten, wählen wir geräuschlos eine Alternative. Das ist die größte architektonische Änderung seit Projektbeginn — und diejenige, die die Beispielpakete für Facebook, X und GitHub im Katalog endlich sinnvoll macht.

Siehe auch

JustZix installieren — und Regeln auf facebook.com ohne Ausreden schreiben.

Bewerte diesen Beitrag

Noch keine Bewertungen — sei der Erste.

Probiere es selbst aus

Installiere JustZix und füge ein beliebiges Snippet aus diesem Artikel ein. Zwei Minuten von null bis zu einer funktionierenden Regel auf allen deinen Geräten.

JustZix holen

Funktionen · So funktioniert es · Beispiele · Anwendungsfälle