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. 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. 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. 3

    Elige el perfil de destino

    Navegador (seguro para ES5, sin APIs de Node), Node.js (permite `require`, `Buffer`), o bajo (principalmente minificar).

  4. 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

Herramienta disponible en otros idiomas