Le regole JavaScript di JustZix ora funzionano anche su Facebook, X e GitHub
Le pagine in cui il JS degli userscript andava in pezzi — Facebook, X, GitHub e tante altre con una Content-Security-Policy rigida — sono state a lungo un collo di bottiglia anche per JustZix. Nella versione 3.2.0 abbiamo cambiato il motore di esecuzione del codice in modo che superi quella barriera senza trucchi e senza compromessi sul resto del web. Ecco cosa fa e perché.
Cosa bloccava davvero la CSP
Una Content-Security-Policy con una direttiva script-src che omette 'unsafe-eval' e 'unsafe-inline' dice al browser: "non eseguire codice costruito a partire da una stringa". È la policy che blocca il classico new Function('...codice...')() con cui JustZix eseguiva il JS delle regole e delle azioni nel mondo MAIN fino alla v3.1.x. La pagina più dolorosamente colpita da questa restrizione era facebook.com — ferma nel nostro backlog da mesi con l'etichetta "non si può fare".
Tre strade, una decisione
Nella v3.2.0 abbiamo introdotto una strategia a livelli — l'estensione prova ogni strada finché una funziona:
chrome.userScripts.execute— l'API nativa per gli user-script di Manifest V3. Esegue il codice come stringa fuori dal mondo CSP della pagina, quindi funziona ovunque, anche con le policy più rigide. Richiede il permessouserScriptsnel manifest (lo abbiamo) e un'attivazione una tantum dell'interruttore "Allow user scripts" (Consenti gli user-script) nelle impostazioni dell'estensione nel browser (lo attivi tu, il controllo resta nelle tue mani).new Function— la strada veloce e classica quando la CSP della pagina consente'unsafe-eval'. La maggior parte dei siti comuni lo fa (Google, YouTube, Reddit, Wikipedia, negozi online), perciò il 99% delle tue regole continua a passare per questa strada senza alcuna configurazione.<script src="blob:…">— un fallback che crea un Blob URL locale e lo inietta come tagscriptclassico. Funziona quando la CSP della pagina consenteblob:inscript-src— e facebook.com lo consente. Permette di eseguire codice anche se non hai ancora abilitato gli "user scripts".
Cosa significa in pratica
Le regole JS di JustZix, le azioni e le finestre TEMP JS / JS Console ora girano su pagine che prima lanciavano EvalError:
- facebook.com — tramite il fallback blob-script, senza alcuna configurazione;
- x.com / twitter.com, github.com, parti dei siti bancari — copertura completa una volta abilitati gli "user scripts";
- tutto il resto — invariato, il classico
new Functioncome prima.
Se nessuna strada funziona (raro, richiede che la pagina vieti sia 'unsafe-eval' sia blob:), i pannelli JS e le finestre JS Console mostrano un messaggio chiaro "abilita gli user scripts" in 8 lingue. Un clic nelle impostazioni del browser e il resto è automatico.
Come abilitare gli "user scripts"
- Chrome / Edge / Opera:
chrome://extensions→ attiva la "Modalità sviluppatore" (in alto a destra) → trova JustZix → sposta l'interruttore "Allow user scripts" (Consenti gli user-script). - Firefox:
about:addons→ JustZix → pulsante "Preferenze" → abilita l'opzione per gli user-script.
Il permesso resta memorizzato una volta per tutte. Non abbiamo aggiunto una nostra schermata di consenso — è una scelta deliberata, fatta nelle impostazioni del browser, non un prompt a sorpresa da parte nostra.
Perché è importante rispetto alle alternative
Estensioni per userscript come Tampermonkey o Violentmonkey hanno bisogno che la pagina consenta 'unsafe-eval', oppure si affidano a una propria sandbox con eval. JustZix ha tre strade, quindi dove quelle estensioni lanciano un "errore CSP" e aspettano la clemenza dell'autore della pagina, noi scegliamo in silenzio un'alternativa. È il più grande cambiamento architetturale dall'inizio del progetto — e quello che finalmente rende sensati i pacchetti di esempio per Facebook, X e GitHub nel catalogo.
Vedi anche
- Iniezione di CSS e JavaScript — cos'altro sa fare il motore delle regole
- Hook della Output Console sulle pagine con CSP rigida — la storia analoga per i log
- JustZix vs. Tampermonkey — confronto completo
Installa JustZix — e scrivi le tue regole su facebook.com senza più scuse.
Valuta questo articolo
Nessuna valutazione — sii il primo.