Inicio › Herramientas para desarrolladores › Ofuscador de JavaScript

Ofuscador de JavaScript

Pega JavaScript y conviértelo en código que se ejecuta igual pero es difícil de leer y reutilizar. Elige un preajuste bajo, medio o alto o ajusta cada opción, y luego comprueba que ambas versiones muestran la misma salida antes de publicarlo.

Última actualización:

Preajuste

Cargando el ofuscador…
Opciones
Cadenas
Estructura del código
Nombres y protección
Ejecuta el código original y el ofuscado en un worker aislado (sin DOM) y compara la salida de consola.
Publicidad
Publicidad

Cómo usar Ofuscador de JavaScript

  1. Pega tu JavaScript o abre un archivo .js. Se carga un ejemplo para que veas el resultado de inmediato.
  2. Elige un preajuste. Bajo es rápido y compacto, Medio es un valor predeterminado equilibrado y Alto es el más fuerte, pero mucho más grande y lento.
  3. Ajusta las opciones si hace falta, por ejemplo conserva los nombres de funciones públicas en Conservar estos nombres.
  4. Pulsa Ofuscar JavaScript y revisa el cambio de tamaño en la barra de estado.
  5. Pulsa Ejecutar ambos y comparar salida para confirmar que el código ofuscado se comporta igual, y luego cópialo o descárgalo.

Qué hace cada opción

OpciónEfectoCosto
Renombrar identificadorestotal se convierte en _0x3f2a1c (o a). Solo nombres locales, salvo que el renombrado global esté activado.Ninguno; incluso puede reducir el código
Arreglo de cadenasLos literales de cadena se mueven a un arreglo y se leen mediante una función de búsqueda: 'SAVE25' se convierte en _0x5d1e(0x1a3).Pequeño
Codificación Base64 / RC4Las cadenas del arreglo se guardan codificadas, así que no se pueden encontrar buscando en el archivo.RC4 es más lento de decodificar
Rotar / mezclarEl arreglo se guarda en un orden desordenado y se restaura al iniciar.Mínimo
Dividir cadenasLas cadenas largas se cortan en fragmentos unidos con +.Salida más grande
Aplanamiento del flujo de controlLos bloques de instrucciones se colocan en un switch dentro de un bucle que los ejecuta en un orden oculto.Hasta ~1.5× más lento, más grande
Inyección de código muertoAgrega código de aspecto realista que nunca se ejecuta.Salida mucho más grande
Números a expresiones100 se convierte en algo como -0x1*0x9e5+0x2a3*0x3+...Pequeño
Transformar claves de objetosLas claves de los literales de objeto se asignan una por una a través del arreglo de cadenas.Pequeño
AutodefensivoEl código comprueba su propio formato y deja de funcionar si se embellece.Se rompe si le cambias el formato después
Desactivar la salida de consolaReemplaza console.log, warn, error y similares por funciones vacías.También oculta tus propios registros

Consejos para ofuscar de forma segura

  • Ofusca el resultado de la compilación, no tus archivos fuente. Mantén el original legible en el control de versiones y genera el archivo ofuscado como un paso de compilación.
  • Protege los nombres públicos. Las funciones llamadas desde HTML (onclick="init()"), desde otros scripts o por un framework deben conservar sus nombres: enuméralas en Conservar estos nombres y deja desactivado el renombrado global.
  • Usa los ajustes fuertes de forma selectiva. Los preajustes altos en una biblioteca grande pueden multiplicar su tamaño y hacerla más lenta. Ofusca solo la parte que vale la pena proteger, como un algoritmo de puntuación o un renderizador personalizado.
  • Prueba el resultado. Ejecuta ambas versiones con Ejecutar ambos y comparar salida y luego prueba el archivo ofuscado en su página real, sobre todo el código que interactúa con el DOM.
  • No confíes en ella para secretos. La ofuscación es un reductor de velocidad, no un cifrado. Las claves de API, las credenciales y las validaciones en las que se debe confiar van en un servidor.

Ofuscación, minificación y embellecimiento

Estos tres conceptos se confunden a menudo. Un minificador hace el código lo más pequeño posible para que cargue más rápido y, de paso, lo hace más difícil de leer. Un embellecedor hace lo contrario, restaurando la sangría y los saltos de línea; por eso los ofuscadores van más allá que los minificadores: tras embellecerlo, el código minificado vuelve a ser legible, mientras que el código ofuscado sigue teniendo nombres sin sentido, cadenas codificadas y un flujo de control desordenado. Si tu único objetivo es el tamaño del archivo, usa un minificador; recurre a la ofuscación cuando quieras desalentar la copia o la manipulación.

Preguntas frecuentes

¿Qué hace un ofuscador de JavaScript?

Reescribe tu código para que se comporte igual pero sea muy difícil de leer para las personas: los nombres de variables y funciones pierden su significado, las cadenas se mueven a un arreglo codificado y el orden del código se puede desordenar con aplanamiento del flujo de control y código muerto falso. Los navegadores lo ejecutan como cualquier otro script.

¿Es seguro el JavaScript ofuscado?

No. La ofuscación ralentiza y desalienta la copia y la manipulación, pero cualquier código que se ejecute en un navegador puede analizarse con el tiempo. Nunca pongas secretos como claves de API, contraseñas o comprobaciones de licencia que deban ser irrompibles en JavaScript del lado del cliente; guárdalos en un servidor.

¿La ofuscación hará más lento mi código?

Puede hacerlo. Los ajustes bajos tienen poco efecto. El aplanamiento del flujo de control, la inyección de código muerto y la codificación de cadenas RC4 añaden trabajo en tiempo de ejecución y pueden hacer la salida varias veces más grande, así que úsalos en partes pequeñas y sensibles en lugar de frameworks completos, y prueba el rendimiento.

¿Por qué mi código dejó de funcionar tras ofuscarlo?

Las causas habituales son renombrar variables globales que otros scripts o atributos HTML como onclick llaman por su nombre, código que depende de function.name o de eval, y código autodefensivo al que se le cambió el formato después. Agrega los nombres a Conservar estos nombres, desactiva Renombrar variables globales o Autodefensivo, y usa el botón de comparación para comprobarlo.

¿Cuál es la diferencia entre minificar y ofuscar?

Minificar elimina los espacios en blanco y acorta los nombres para que los archivos sean más pequeños y carguen más rápido. Ofuscar hace deliberadamente que el código sea más difícil de entender y normalmente lo hace más grande. Minifica todo lo que publiques; ofusca solo el código que quieras proteger.

¿Se puede revertir el código ofuscado?

En parte. Las herramientas de formato restauran la sangría y los desofuscadores pueden decodificar los arreglos de cadenas, pero los nombres y comentarios originales se pierden para siempre y desenredar un flujo de control aplanado requiere mucho esfuerzo. Los ajustes más fuertes aumentan ese esfuerzo.

¿Se sube mi código?

No. La biblioteca de ofuscación se ejecuta en tu navegador y tu código nunca se envía a un servidor. La función de comparación también se ejecuta localmente, en un web worker aislado.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Formateadores y validadores de código →