Documentação
/

Compatibilidade de execução

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 a browser, mas a saída não usa eval(). Use quando a página de destino tiver uma Content Security Policy que proíba eval/unsafe-eval.
  • node - ambiente Node.js. As opções específicas de navegador são desativadas (elas exigem window/document e seriam no-ops ou lançariam exceções no Node). Algumas defesas de vmSelfDefending que 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. Sem window, sem document, com um global self diferente.
  • userscript - sandbox de gerenciadores de userscripts (por exemplo, Tampermonkey). As defesas de vmSelfDefending sã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 .jsc com 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.