Documentación
/

Compatibilidad de ejecución

Compatibilidad de ejecución

Elige target según el entorno real. Las compilaciones Browser y Node pueden contener defensas diferentes; un target Browser no sustituye a Node.

target

  • browser: Chrome, Firefox, Safari, Edge.
  • browser-no-eval: igual que browser, pero la salida no usa eval(). Úsalo cuando la página de destino tenga una Content Security Policy que prohíba eval/unsafe-eval.
  • node: entorno Node.js. Las opciones específicas del navegador se desactivan (requieren window/document y en Node no harían nada o lanzarían una excepción). Algunas defensas de vmSelfDefending que dependen de API exclusivas del navegador (detección de navegadores headless, recuperación de un realm limpio mediante iframe, comprobaciones antiinspector y del DOM) no se emiten para este target.
  • service-worker: contexto de Service Worker. Sin window, sin document y con un global self diferente.
  • userscript: sandbox de un gestor de userscripts (p. ej., Tampermonkey). Las defensas de vmSelfDefending se ajustan en consecuencia. Requiere la ofuscación VM (o Parse HTML) y el ofuscador v6.9.0+.
  • bytenode: para código que se compilará a .jsc con bytenode. Requiere la ofuscación VM (o Parse HTML) y el ofuscador v6.13.0+.

Entorno del navegador y dominios

Las declaraciones sobre dónde se ejecuta el código deben coincidir con el despliegue real. browserEnvironment debe describir cómo se sirve realmente la compilación (consulta Browser Environment), y VM Domain Lock debe incluir todos los dominios que lo sirven (consulta VM Domain Lock). La automatización y los depuradores pueden activar las defensas avanzadas; consulta Pruebas y CI.

JavaScript

Los nombres de las funciones y su código fuente pueden cambiar con la ofuscación. No uses .name ni .toString() como datos estables de la aplicación; usa identificadores explícitos en su lugar. Las variables globales públicas pueden seguir siendo visibles cuando tu configuración lo requiera.

strictMode

strictMode: null y strictMode: false siguen reconociendo como estrictos las directivas explícitas, los módulos ES y los métodos de clase. strictMode: true trata toda la entrada como estricta. Haz que coincida con el contexto de ejecución final; un bundler que añada el modo estricto después de la ofuscación puede cambiar el comportamiento.

Pipeline de compilación

Compila TypeScript o JSX y empaqueta tu aplicación antes del paso final de ofuscación. Conserva los comentarios /* javascript-obfuscator:vm */ durante esa compilación para que el modo comment pueda seguir encontrándolos. No minifiques, formatees ni reescribas de ninguna otra forma la salida con Self Defending o VM Self Defending después. Los source maps no están disponibles para la ofuscación VM ni para la de HTML.