Las reglas JavaScript de JustZix ahora funcionan incluso en Facebook, X y GitHub
Las páginas en las que el JS de los userscripts se desmoronaba — Facebook, X, GitHub y muchas otras con una Content-Security-Policy estricta — también eran un cuello de botella para JustZix. En la versión 3.2.0 cambiamos el motor de ejecución de código para que atraviese esa barrera sin trucos y sin sacrificar el resto de la web. Esto es lo que hace y por qué.
Qué bloqueaba realmente la CSP
Una Content-Security-Policy con una directiva script-src que no incluye 'unsafe-eval' ni 'unsafe-inline' le dice al navegador: "no ejecutes código construido a partir de una cadena". Esa es la política que bloquea el clásico new Function('...codigo...')(), con el que JustZix ejecutaba el JS de reglas y acciones en el mundo MAIN hasta la v3.1.x. La página que más sufría esta restricción era facebook.com — durante meses en nuestro backlog bajo la etiqueta "no se puede".
Tres caminos, una decisión
En la v3.2.0 introdujimos una estrategia por capas — la extensión prueba cada camino hasta que uno funciona:
chrome.userScripts.execute— la API nativa de scripts de usuario del Manifest V3. Ejecuta el código como cadena fuera del mundo CSP de la página, así que funciona en todas partes, incluso con las políticas más estrictas. Requiere el permisouserScriptsen el manifiesto (lo tenemos) y un interruptor único "Permitir scripts de usuario" (Allow user scripts) en los ajustes de extensiones del navegador (tú lo activas, tú tienes el control).new Function— el camino rápido y clásico cuando la CSP de la página permite'unsafe-eval'. La mayoría de los sitios habituales lo permiten (Google, YouTube, Reddit, Wikipedia, tiendas online), así que el 99% de tus reglas siguen pasando por aquí sin ninguna configuración.<script src="blob:…">— un fallback que crea una Blob URL local y la inyecta como una etiquetascriptclásica. Funciona cuando la CSP de la página permiteblob:enscript-src— lo cual hace, entre otros, facebook.com. Permite que las cosas se ejecuten incluso cuando el usuario aún no ha activado los "scripts de usuario".
Qué significa esto en la práctica
Las reglas JS, las acciones de JustZix y las ventanas TEMP JS / JS Console funcionan ahora en páginas que antes lanzaban EvalError:
- facebook.com — mediante el fallback blob-script, sin ninguna configuración;
- x.com / twitter.com, github.com, partes de sitios bancarios — cobertura completa una vez activados los "scripts de usuario";
- el resto de la web — sin cambios, el clásico
new Functioncomo hasta ahora.
Si ningún camino funciona (es raro, requiere que la página prohíba a la vez 'unsafe-eval' y blob:), las ventanas del panel JS y de la JS Console muestran un mensaje claro de "activa los scripts de usuario" en 8 idiomas. Un clic en los ajustes del navegador y el resto es automático.
Cómo activar los "scripts de usuario"
- Chrome / Edge / Opera:
chrome://extensions→ activa "Modo de desarrollador" (Developer mode, arriba a la derecha) → busca JustZix → activa el interruptor "Permitir scripts de usuario" (Allow user scripts). - Firefox:
about:addons→ JustZix → botón "Preferencias" → activa la opción de scripts de usuario.
El permiso se recuerda de una vez para siempre. No hemos añadido nuestra propia pantalla de consentimiento — es una decisión consciente en los ajustes del navegador, no un aviso sorpresa por nuestra parte.
Por qué importa frente a las alternativas
Las extensiones de userscripts como Tampermonkey o Violentmonkey necesitan que la página permita 'unsafe-eval', o bien dependen de su propio sandbox con eval. JustZix tiene tres caminos, así que donde ellas lanzan un "CSP error" y esperan la clemencia del autor de la página, nosotros elegimos en silencio una alternativa. Es el mayor cambio arquitectónico desde el inicio del proyecto — y el que finalmente da sentido a los paquetes de ejemplos para Facebook, X y GitHub en el catálogo.
Véase también
- Inyección de CSS y JavaScript — qué más puede hacer el motor de reglas
- Hook de la Output Console en páginas con CSP estricta — la historia análoga para los logs
- JustZix frente a Tampermonkey — comparación completa
Instala JustZix — y escribe reglas en facebook.com sin excusas.
Valora este artículo
Sin valoraciones — sé el primero.