Les règles JavaScript JustZix fonctionnent désormais même sur Facebook, X et GitHub
Les pages où le JS des userscripts s'effondrait — Facebook, X, GitHub et bien d'autres sites dotés d'une Content-Security-Policy stricte — constituaient un goulot d'étranglement pour JustZix aussi. Dans la version 3.2.0, nous avons changé le moteur d'exécution du code afin qu'il franchisse cette barrière sans astuces et sans compromis sur le reste du web. Voici ce qu'il fait et pourquoi.
Ce que la CSP bloquait réellement
Une Content-Security-Policy assortie d'une directive script-src qui omet 'unsafe-eval' et 'unsafe-inline' indique au navigateur : « ne pas exécuter de code construit à partir d'une chaîne ». C'est précisément la politique qui bloque le classique new Function('...code...')() par lequel JustZix exécutait le JS des règles et des actions dans le monde MAIN jusqu'à la v3.1.x. La page la plus douloureusement affectée par cette restriction était facebook.com — qui dormait dans notre backlog depuis des mois avec l'étiquette « infaisable ».
Trois voies, une décision
Dans la v3.2.0, nous avons introduit une stratégie en couches — l'extension essaie chaque voie jusqu'à ce que l'une fonctionne :
chrome.userScripts.execute— l'API native des user-scripts de Manifest V3. Elle exécute le code sous forme de chaîne en dehors du monde CSP de la page, elle fonctionne donc partout, y compris avec les politiques les plus strictes. Elle requiert la permissionuserScriptsdans le manifeste (nous l'avons) et un activation unique de « Autoriser les scripts utilisateur » dans les paramètres d'extensions du navigateur (vous cliquez, vous gardez le contrôle).new Function— la voie classique et rapide quand la CSP de la page autorise'unsafe-eval'. La plupart des sites ordinaires l'autorisent (Google, YouTube, Reddit, Wikipédia, boutiques en ligne), donc 99 % de vos règles continuent de passer par cette voie sans aucune configuration.<script src="blob:…">— un repli qui crée une URL Blob locale et l'injecte sous forme de balisescriptclassique. Il fonctionne quand la CSP de la page autoriseblob:dansscript-src— ce que fait facebook.com. Il permet l'exécution même lorsque l'utilisateur n'a pas encore activé les « scripts utilisateur ».
Ce que cela change en pratique
Les règles JS de JustZix, les actions et les fenêtres TEMP JS / Console JS s'exécutent désormais sur des pages qui déclenchaient auparavant une EvalError :
- facebook.com — via le repli blob-script, sans aucune configuration ;
- x.com / twitter.com, github.com, certaines parties des sites bancaires — couverture complète une fois les « scripts utilisateur » activés ;
- partout ailleurs — inchangé, le classique
new Functioncomme avant.
Si aucune voie ne fonctionne (rare, il faut que la page interdise à la fois 'unsafe-eval' et blob:), les fenêtres du panneau JS et de la Console JS affichent un message clair « activez les scripts utilisateur » en 8 langues. Un clic dans les paramètres du navigateur et le reste est automatique.
Comment activer les « scripts utilisateur »
- Chrome / Edge / Opera :
chrome://extensions→ activez le « mode développeur » (Developer mode, en haut à droite) → trouvez JustZix → basculez l'interrupteur « Autoriser les scripts utilisateur » (Allow user scripts). - Firefox :
about:addons→ JustZix → bouton « Préférences » → activez l'option des scripts utilisateur.
La permission est mémorisée une fois pour toutes. Nous n'avons pas ajouté notre propre écran de consentement — c'est un choix délibéré dans les paramètres du navigateur, pas une demande surprise de notre part.
Pourquoi cela compte face aux alternatives
Les extensions de userscripts comme Tampermonkey ou Violentmonkey ont besoin que la page autorise 'unsafe-eval', ou elles s'appuient sur leur propre bac à sable utilisant eval. JustZix dispose de trois voies, donc là où ces extensions déclenchent une « erreur CSP » et attendent la clémence de l'auteur de la page, nous choisissons discrètement une alternative. C'est le plus important changement d'architecture depuis le début du projet — et celui qui rend enfin les paquets d'exemples Facebook, X et GitHub du catalogue véritablement utiles.
Voir aussi
- Injection de CSS et de JavaScript — ce que le moteur de règles sait faire d'autre
- Hook de la Console de sortie sur les pages à CSP stricte — l'histoire analogue pour les logs
- JustZix vs. Tampermonkey — comparaison complète
Installez JustZix — et écrivez des règles sur facebook.com sans excuses.
Notez cet article
Aucune note — soyez le premier.