JS
Ofuscador de JS
Ofusca JavaScript para que sea difícil de leer.
Acerca de la ofuscación de JavaScript
La ofuscación reescribe el JavaScript para que siga funcionando exactamente igual, pero sea mucho más difícil de leer para una persona — renombrando variables con cadenas sin sentido, dividiendo y codificando literales de cadena, y desviando el flujo normal del código a través de indirecciones adicionales. A diferencia de la minificación, el objetivo no es un archivo más pequeño, sino uno confuso.
Los tres niveles intercambian la fuerza de la ofuscación por el tamaño de salida y el coste en tiempo de ejecución. Bajo renombra identificadores y mueve los literales de cadena a un array; medio añade el aplanamiento del flujo de control (reestructurar una lógica sencilla en una máquina de estados más difícil de seguir) e inyección de código muerto; alto añade cadenas codificadas en RC4, divide los literales de cadena en fragmentos y activa código autodefensivo que se rompe si la salida se reformatea o se pasa por un embellecedor. Los niveles más altos producen archivos notablemente más grandes y una ejecución más lenta, así que reserva el nivel alto para código que realmente merezca ese coste, como una comprobación de licencia, en lugar de para una aplicación entera.
Dónde te lo encontrarás
- Hacer que la lógica del lado del cliente sea más difícil de copiar o de aplicar ingeniería inversa
- Proteger comprobaciones de licencia o claves de API incrustadas en el código front-end
- Distribuir un bundle sin revelar los nombres internos de funciones y variables
- Aumentar el coste de manipular código que se ejecuta en un entorno no confiable
Preguntas frecuentes
¿El código ofuscado es realmente seguro?
No. La ofuscación aumenta el esfuerzo necesario para leer o modificar el código, pero todo lo que se ejecuta en el navegador puede, finalmente, ser desofuscado por alguien decidido. Nunca confíes en ella para proteger secretos reales como claves de API privadas.
¿Cuál es la diferencia entre ofuscar y minificar?
Minificar reduce el tamaño del archivo, pero sigue siendo fácil de revertir con un embellecedor. Ofuscar hace que la lógica sea deliberadamente confusa — identificadores renombrados, cadenas codificadas, flujo de control reestructurado — incluso después de reformatear.
¿La ofuscación ralentizará mi código?
Ligeramente, especialmente en niveles más altos — las indirecciones adicionales y la decodificación de cadenas añaden un pequeño coste en tiempo de ejecución. Para la mayoría del código front-end esto es insignificante; para bucles críticos en rendimiento, vale la pena probarlo.
¿Qué cambian en concreto los niveles bajo, medio y alto?
Bajo renombra variables y funciones con nombres cortos y sin significado, y oculta los literales de cadena en un array. Medio añade el aplanamiento del flujo de control —reestructurar las ramas de tu lógica en una máquina de estados más difícil de seguir— más código muerto inyectado que solo añade ruido. Alto añade cadenas codificadas en RC4, divide los literales en fragmentos que se reensamblan en tiempo de ejecución, y código autodefensivo que detecta y reacciona ante un reformateo. Cada nivel superior cuesta más tamaño de salida y una ejecución más lenta, a cambio de más esfuerzo para revertirlo.