Ofuscador de JavaScript
La ofuscación aumenta el costo de leer tu código fuente de JavaScript, no de manera absoluta (ninguna ofuscación del front-end es a prueba de balas) pero lo suficiente para desincentivar la inspección casual y ralentizar el scraping automatizado. Esta herramienta aplica codificación de arreglos de cadenas, mangling de identificadores, aplanamiento de flujo de control e inyección de código muerto opcional, con cada opción seleccionable dependiendo de cuán agresivo quieras ser.
Cómo ofuscar JavaScript
-
1
Pega el código fuente
Cualquier JS válido. Si depende de nombres de propiedades globales específicas de una página anfitriona, configúralas como reservadas.
-
2
Elige técnicas
Codificación de cadenas (hex / base64), mangling de identificadores, aplanamiento de flujo de control, inyección de código muerto, envoltura autodefensiva.
-
3
Elige el perfil de destino
Navegador (seguro para ES5, sin APIs de Node), Node.js (permite `require`, `Buffer`), o bajo (principalmente minificar).
-
4
Ofuscar
La herramienta genera el código transformado con un delta de tamaño. Configuraciones agresivas pueden hacer que la salida sea 3-5 veces más grande que la fuente.
Técnicas y lo que te cuestan
| Técnica | Aumenta el esfuerzo del atacante | Costo en tiempo de ejecución | Costo de tamaño |
|---|---|---|---|
| Renombrado de variables | Bajo | Insignificante | Más pequeño (efecto secundario de minificación) |
| Codificación de arreglos de cadenas | Medio | Pequeño (una búsqueda por cadena) | +10-30% |
| Aplanamiento de flujo de control | Alto | Medible (~2-5%) | +50-150% |
| Inyección de código muerto | Bajo (teatro de seguridad) | Pequeño | +20-50% |
| Envoltura autodefensiva | Medio | Verificación única | +5-10% |
| Protección contra depuración | Medio (detecta DevTools) | Verificación única | +5% |
| VM / virtualización (premium) | Muy alto | Grande (5-20x) | +300-500% |
Lo que la ofuscación no puede proteger
- Secretos. Cualquier constante en tu código fuente del front-end es legible dado el tiempo suficiente. Claves API, secretos de autenticación, lógica de precios, nunca confíes en la ofuscación para ocultar esto. Muévelo al lado del servidor.
- Algoritmos con una salida observable. Si el navegador puede ejecutarlo, un atacante con un depurador puede observar cada entrada y salida. La ofuscación ralentiza eso; no lo detiene.
- Scraping automatizado a gran escala. La anti-scraping depende de la detección de comportamiento (huellas digitales, límites de tasa, CAPTCHA), no de la ofuscación del código fuente.
Cuándo vale la pena la ofuscación
- Anti-manipulación en SDKs embebidos (licencias, SDKs de anuncios, clientes de juegos).
- Aumentar el costo para la copia y pega de una implementación competidora de bajo esfuerzo.
- Hacer más difícil la clasificación automatizada de scripts para scrapers de amplio espectro.
Cuándo es contraproducente
- Ya tienes un empaquetador. Webpack + Terser en modo de producción ya minifica y manglea locales. Agregar un segundo pase de ofuscación te da poco y aumenta el tamaño del paquete.
- Estás optimizando para el primer pintado / Core Web Vitals. La ofuscación agresiva triplica el paquete; eso perjudica el FCP y LCP.
- Tienes que depurar en producción. La ofuscación pesada hace que las trazas de pila de Sentry sean casi inútiles sin un mapa de origen coincidente, y enviar el mapa de origen derrota la ofuscación.
Errores comunes
- Tratar la ofuscación como equivalente a la encriptación. No lo es, es un obstáculo.
- Enviar el mapa de origen junto con el paquete ofuscado a producción. Eso neutraliza completamente la ofuscación.
- Ofuscar bibliotecas de terceros que ya cargaste desde un CDN. Obtienes la penalización de tamaño sin ningún beneficio.
Preguntas frecuentes
No. La ofuscación es un obstáculo, no un candado. Un analista decidido con un depurador recuperará la lógica. Aumenta el costo lo suficiente para disuadir la inspección casual y la mayoría de los scrapers automatizados, pero no es seguridad.
Si accedes a propiedades dinámicamente (obj["field_name"], Object.keys(obj)), o dependes de nombres de funciones / clases específicas para la página anfitriona, agrégalas a la lista reservada. Sin eso, el renombrado de propiedades puede romper integraciones externas.
Mantén el código fuente original. El ofuscador es una transformación unidireccional; no puedes recuperar exactamente el original de la salida ofuscada, solo una aproximación legible.
La ofuscación ligera agrega ~10-30%. El aplanamiento de flujo de control más arreglos de cadenas agrega 50-150%. Las configuraciones más pesadas pueden triplicar el tamaño. Verifica el contador de tamaño de salida antes de enviar.
Herramientas relacionadas
Referencia de la tabla ASCII
Tabla ASCII completa del 0 al 127 con decimal, hex, octal, binario y referencia numérica HTML para cada carácter, incluidos los códigos de control como NUL, LF y DEL.
Referencia de caracteres HTML
Lista buscable de entidades HTML, sus códigos nombrados y numéricos, y una copia con un clic para caracteres y símbolos especiales.
Referencia de atajos de teclado
Busca los atajos predeterminados documentados de VS Code, Chrome y Bash con GNU Readline en macOS, Windows y Linux.
Generador de letras aleatorias
Genera letras aleatorias A-Z. Elige la cantidad, usa mayúsculas, minúsculas o mezcla de ambas, y aplica el resultado en juegos, consignas o clase.
Generador de Paletas de Color
Genera paletas monocromáticas, análogas, complementarias, triádicas o tetrádicas desde un color base HEX y exporta variables CSS listas para copiar.
Generador de EditorConfig
Genera un archivo .editorconfig con tu estilo y tamaño de indentación, fin de línea, charset y reglas de espacios para un formato consistente en IDEs y editores.
Herramienta disponible en otros idiomas
- Obfuscateur JavaScript [FR]
- JavaScript-obfuskerare [SV]
- เครื่องมือปิดบังโค้ด JavaScript [TH]
- مُبهِّم JavaScript [AR]
- Obfuscator JavaScript [ID]
- Trình làm rối mã JavaScript [VI]
- JavaScript 난독화 도구 [KO]
- JavaScript-Obfuscator [DE]
- JavaScript-obfuscator [NL]
- Obfuskator JavaScript [PL]
- JavaScript難読化ツール [JA]
- Ofuscador de JavaScript [PT]
- Обфускатор JavaScript [RU]
- JavaScript Kod Gizleme Aracı [TR]
- JavaScript混淆器 [ZH]
- JavaScript Obfuscator [EN]
- Offuscatore JavaScript [IT]