Recetas

Guías completas y con criterio para los problemas habituales de integración de javascript-obfuscator. Cada receta se centra en cómo combinar opciones para lograr un resultado concreto, en lugar de documentar cada flag por separado.

Elige la receta que se ajuste al problema que intentas resolver. Con el tiempo se añadirán más recetas: si te has topado con un escenario de integración que aquí no se cubre, avísanos y lo documentaremos.

En esta sección

Buenas prácticas

Qué proteger, qué dejar intacto y qué no puede hacer la ofuscación por ti.

Sustitución de plantillas en el servidor

Inyecta valores renderizados en el servidor dentro de JavaScript ofuscado con VM usando reservedNames y reservedStrings.

Clave de codificación del array de bytecode

Proporciona tu propia clave de cifrado del bytecode de la VM con vmBytecodeArrayEncodingKey y resuélvela en tiempo de ejecución con un getter de clave, desde el almacenamiento del cliente o descargándola desde tu backend.

Telemetría y reacciones de las defensas VM

Informa a tu backend de las detecciones de las defensas VM con vmDefenseHook y ajusta cómo reacciona cada categoría de detección con vmDefenseReaction.

Ocultar los nombres de las funciones al análisis con LLM

Por qué el código ofuscado con VM puede filtrar nombres de funciones con significado a un LLM y cómo una envoltura IIFE elimina esa filtración.

Ofuscación VM con eval y new Function

Cómo trata la ofuscación VM las llamadas a eval directo y al constructor Function, qué se convierte en bytecode y qué se omite, las advertencias que emite el ofuscador y cómo diagnosticar un ReferenceError en tiempo de ejecución.

Evitar colisiones de identificadores

Por qué agrupar varios archivos ofuscados con VM puede provocar un "Identifier already declared" al analizar el código, y cómo solucionarlo con identificadores random o hexadecimal.

Diagnosticar errores de la VM en tiempo de ejecución

Lista de comprobación paso a paso para errores de la VM en tiempo de ejecución como "Invalid array length", que distingue una configuración incorrecta de target o self-defending de un error real.