Compatibilidade de execução
Escolha o target do ambiente de execução real. Builds Browser e Node podem conter defesas diferentes; um target Browser não substitui Node.
target
browser- Chrome, Firefox, Safari, Edge.browser-no-eval- igual abrowser, mas a saída não usaeval(). Use quando a página de destino tiver uma Content Security Policy que proíbaeval/unsafe-eval.node- ambiente Node.js. As opções específicas de navegador são desativadas (elas exigemwindow/documente seriam no-ops ou lançariam exceções no Node). Algumas defesas devmSelfDefendingque dependem de APIs exclusivas do navegador - detecção de navegador headless, recuperação de realm limpo via iframe, verificações anti-inspector/DOM - não são emitidas para este target.service-worker- contexto de Service Worker. Semwindow, semdocument, com um globalselfdiferente.userscript- sandbox de gerenciadores de userscripts (por exemplo, Tampermonkey). As defesas devmSelfDefendingsão ajustadas de acordo. Requer a ofuscação VM (ou Parse HTML) e o ofuscador v6.9.0+.bytenode- para código que será compilado em.jsccom o bytenode. Requer a ofuscação VM (ou Parse HTML) e o ofuscador v6.13.0+.
Ambiente do navegador e domínios
As declarações sobre onde o código roda devem corresponder à implantação real. browserEnvironment precisa descrever como o build é de fato servido (veja Browser Environment), e o VM Domain Lock precisa listar todos os domínios que o servem (veja VM Domain Lock). Automação e depuradores podem acionar as defesas avançadas; veja Testes e CI.
JavaScript
Os nomes de funções e o texto-fonte das funções podem mudar com a ofuscação. Não use .name nem .toString() como dados estáveis da aplicação; use identificadores explícitos. Globais públicos podem continuar visíveis quando suas configurações exigirem.
strictMode
strictMode: null e strictMode: false continuam reconhecendo diretivas explícitas, módulos ES e métodos de classe como estritos. strictMode: true trata toda a entrada como estrita. Corresponda ao contexto final de execução; um bundler que adicione o modo estrito depois da ofuscação pode mudar o comportamento.
Pipeline de build
Compile TypeScript ou JSX e empacote a sua aplicação antes da etapa final de ofuscação. Mantenha os comentários /* javascript-obfuscator:vm */ ao longo desse build para que o modo comment ainda consiga encontrá-los. Não minifique, formate nem reescreva de outra forma a saída com Self Defending ou VM Self Defending depois disso. Source maps não estão disponíveis para a ofuscação VM nem para a ofuscação de HTML.
