DevToolPal
PT

Ofuscador de JavaScript

Deixe o JavaScript difícil de ler renomeando variáveis, escondendo strings e embaralhando a lógica, sem mudar o que ele faz.

Roda localmente, nada é enviado

Opções

Intensidade

Quanto maior a intensidade, mais o código fica escondido, mas também maior e mais lento.

Entrada

0 caracteres · 0 B

Saída

0 caracteres · 0 B

O que faz

O ofuscador de JavaScript reescreve um script para que ele continue rodando exatamente igual, mas fique muito mais difícil de ler e copiar. Nomes de variáveis e funções viram identificadores sem sentido como _0x3f2a, strings literais vão para uma tabela de consulta codificada e, nos níveis mais altos, o fluxo de controle é embaralhado e código morto é misturado ao resto.

É útil para jogos de navegador, demos, widgets e verificações de licença que você distribui como JavaScript puro e não quer ver copiados palavra por palavra.

Como usar

  1. Cole o seu JavaScript ou abra um arquivo .js.
  2. Escolha uma Intensidade:
    • Baixa renomeia nomes locais e move as strings para um array de consulta. A saída continua rápida e relativamente pequena.
    • Média acrescenta strings codificadas, achatamento do fluxo de controle e um pouco de código morto.
    • Alta aplica tudo na intensidade máxima. O resultado pode ficar muitas vezes maior e visivelmente mais lento.
  3. Ative Renomear nomes globais só se nada fora do script fizer referência às funções ou variáveis de nível superior dele.
  4. Desative Saída em uma linha se quiser o resultado distribuído em várias linhas.
  5. Copie ou baixe o código ofuscado e teste-o antes do deploy.

Exemplo

O exemplo define uma função greet e um contador de visitas. Depois da ofuscação em intensidade baixa, o código vira uma única linha de nomes hexadecimais, mas ao rodá-lo ele ainda imprime Hello, Ada! You have visited 1 time(s).

Ofuscação versus minificação

A minificação, como a feita pelo minificador de JavaScript e CSS, remove espaços e encurta nomes para deixar os arquivos menores e mais rápidos de baixar. A ofuscação vai no sentido contrário em tamanho: ela adiciona indireções de propósito para tornar o código mais difícil de entender. Muitos projetos minificam tudo e ofuscam só os poucos arquivos com lógica que vale a pena proteger.

Limites

A ofuscação não protege segredos. Tudo o que o navegador consegue executar, um usuário acaba conseguindo inspecionar, então mantenha no servidor as chaves de API e as regras de negócio que precisam continuar privadas. Configurações pesadas também deixam o código mais lento, então evite-as em loops críticos e páginas sensíveis a desempenho.

Perguntas frequentes

› A ofuscação muda o que o meu código faz?

Não. O script ofuscado se comporta igual ao original; só a forma muda. Sempre rode os seus testes no build ofuscado, porque código que inspeciona o próprio código-fonte ou nomes de funções pode se comportar de outro jeito.

› Código ofuscado pode ser revertido?

Não completamente, mas uma pessoa determinada e com tempo ainda consegue descobrir o que ele faz. Encare a ofuscação como um obstáculo contra cópias casuais, nunca como um lugar para esconder segredos como chaves de API.

› Quando devo ativar Renomear nomes globais?

Só quando o script é autossuficiente. Renomear globais quebra atributos HTML, outros scripts ou testes que chamam suas funções de nível superior pelo nome.

› Meu código é enviado para algum lugar?

Não. A ofuscação roda no seu navegador com a biblioteca de código aberto javascript-obfuscator.