Documentação
/
Ofuscação VM
/

Browser Environment

Browser Environment

Pro
v7.9.0+

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

  • transport tem efeito com vmSelfDefending, e hosting com vmDebugProtection; caso contrário, nenhum dos dois faz nada.
  • Um target browser, browser-no-eval ou service-worker (browser ou browser-no-eval para hosting).
  • Ofuscador na versão 7.9.0 ou posterior para transport, 7.14.0 ou posterior para hosting.

Exemplo

JavaScriptObfuscator.obfuscate(code, {
    vmObfuscation: true,
    vmSelfDefending: true,
    vmDebugProtection: true,
    target: 'browser',
    browserEnvironment: { transport: 'https', hosting: 'remote' }
});