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:
Opciones
Cómo usar Ofuscador de JavaScript
- Pega tu JavaScript o abre un archivo .js. Se carga un ejemplo para que veas el resultado de inmediato.
- 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.
- Ajusta las opciones si hace falta, por ejemplo conserva los nombres de funciones públicas en Conservar estos nombres.
- Pulsa Ofuscar JavaScript y revisa el cambio de tamaño en la barra de estado.
- 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ón | Efecto | Costo |
|---|---|---|
| Renombrar identificadores | total 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 cadenas | Los 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 / RC4 | Las cadenas del arreglo se guardan codificadas, así que no se pueden encontrar buscando en el archivo. | RC4 es más lento de decodificar |
| Rotar / mezclar | El arreglo se guarda en un orden desordenado y se restaura al iniciar. | Mínimo |
| Dividir cadenas | Las cadenas largas se cortan en fragmentos unidos con +. | Salida más grande |
| Aplanamiento del flujo de control | Los 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 muerto | Agrega código de aspecto realista que nunca se ejecuta. | Salida mucho más grande |
| Números a expresiones | 100 se convierte en algo como -0x1*0x9e5+0x2a3*0x3+... | Pequeño |
| Transformar claves de objetos | Las claves de los literales de objeto se asignan una por una a través del arreglo de cadenas. | Pequeño |
| Autodefensivo | El 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 consola | Reemplaza 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.