Browser Environment
Declare como seu build de produção é servido para que o código protegido possa vincular a ele sua integridade.
A opção browserEnvironment declara fatos sobre o ambiente em que seu build de produção é servido, para que o código protegido possa se vincular a eles ou reagir a eles. É um objeto pequeno, e cada campo só tem efeito em conjunto com uma proteção específica — sozinha, a opção não faz nada:
browserEnvironment: { transport: 'https', hosting: 'remote' }
transport
O esquema pelo qual sua produção serve o bundle: 'http' ou 'https'. Tem efeito com vmSelfDefending.
Com 'https', uma cópia que um engenheiro reverso sirva por HTTP simples não funcionará corretamente. 'http' ou um campo não definido não adiciona essa proteção.
hosting
De onde seu bundle de produção é servido: 'remote' ou 'local'. Tem efeito com vmDebugProtection, e apenas nos targets browser e browser-no-eval. Requer o ofuscador na versão 7.14.0 ou posterior.
Com 'remote', uma cópia que um engenheiro reverso extrai e executa em seu próprio ambiente local é tratada como uma divergência do ambiente de execução, e as defesas contra automação reagem conforme configurado em vmDefenseReaction. 'local' ou um campo não definido não adiciona essa proteção.
Targets suportados
browserEnvironment aplica-se apenas aos targets browser, browser-no-eval e service-worker. Para node, userscript e bytenode a opção é rejeitada — a ofuscação falha com um erro de validação em vez de descartar silenciosamente a configuração. hosting é ainda mais restrito: é aceito em um service worker, mas não vincula nada ali.
Requisitos
transporttem efeito comvmSelfDefending, ehostingcomvmDebugProtection; caso contrário, nenhum dos dois faz nada.- Um target
browser,browser-no-evalouservice-worker(browseroubrowser-no-evalparahosting). - Ofuscador na versão 7.9.0 ou posterior para
transport, 7.14.0 ou posterior parahosting.
Exemplo
JavaScriptObfuscator.obfuscate(code, {
vmObfuscation: true,
vmSelfDefending: true,
vmDebugProtection: true,
target: 'browser',
browserEnvironment: { transport: 'https', hosting: 'remote' }
});