Qué hace
El ofuscador de JavaScript reescribe un script para que se siga ejecutando exactamente igual pero resulte mucho más difícil de leer y copiar. Los nombres de variables y funciones se convierten en identificadores sin sentido como _0x3f2a, los literales de cadena pasan a una tabla de búsqueda codificada y, en los niveles más altos, el flujo de control se baraja y se mezcla código muerto.
Es útil para juegos de navegador, demos, widgets y comprobaciones de licencia que distribuyes como JavaScript plano y no quieres que se copien tal cual.
Cómo se usa
- Pega tu JavaScript o abre un archivo
.js. - Elige una Intensidad:
- Baja renombra los nombres locales y mueve las cadenas a un array de búsqueda. La salida sigue siendo rápida y bastante pequeña.
- Media añade cadenas codificadas, aplanamiento del flujo de control y algo de código muerto.
- Alta lo aplica todo a máxima intensidad. El resultado puede ser muchas veces más grande y notablemente más lento.
- Activa Renombrar nombres globales solo si nada fuera del script hace referencia a sus funciones o variables de nivel superior.
- Desactiva Salida en una sola línea si quieres el resultado repartido en varias líneas.
- Copia o descarga el código ofuscado y pruébalo antes de desplegarlo.
Ejemplo
El ejemplo define una función greet y un contador de visitas. Tras ofuscarlo con intensidad baja, el código es una sola línea de nombres hexadecimales y, aun así, al ejecutarlo sigue imprimiendo Hello, Ada! You have visited 1 time(s).
Ofuscación frente a minificación
La minificación, como la que hace el minificador de JavaScript y CSS, elimina los espacios en blanco y acorta los nombres para que los archivos sean más pequeños y se descarguen más rápido. La ofuscación va en sentido contrario en cuanto al tamaño: añade indirección a propósito para que el código sea más difícil de entender. Muchos proyectos minifican todo y ofuscan solo los pocos archivos que contienen lógica que vale la pena proteger.
Límites
La ofuscación no puede proteger secretos. Todo lo que el navegador puede ejecutar, un usuario acaba pudiendo inspeccionarlo, así que mantén en tu servidor las claves de API y las reglas de negocio que deban seguir siendo privadas. Los ajustes más fuertes también ralentizan el código, así que evítalos en bucles críticos y en páginas sensibles al rendimiento.
Preguntas frecuentes
› ¿La ofuscación cambia lo que hace mi código?
No. El script ofuscado se comporta igual que el original; solo cambia su forma. Ejecuta siempre tus tests contra el build ofuscado, porque el código que inspecciona su propio código fuente o los nombres de sus funciones puede comportarse de otra manera.
› ¿Se puede revertir el código ofuscado?
No del todo, pero una persona decidida y con tiempo puede llegar a entender lo que hace. Considera la ofuscación un obstáculo contra la copia casual, nunca un lugar para esconder secretos como claves de API.
› ¿Cuándo debo activar Renombrar nombres globales?
Solo cuando el script sea autónomo. Renombrar los globales rompe los atributos HTML, otros scripts o los tests que llaman a tus funciones de nivel superior por su nombre.
› ¿Se sube mi código?
No. La ofuscación se ejecuta en tu navegador con la librería de código abierto javascript-obfuscator.