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
- Cole o seu JavaScript ou abra um arquivo
.js. - 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.
- Ative Renomear nomes globais só se nada fora do script fizer referência às funções ou variáveis de nível superior dele.
- Desative Saída em uma linha se quiser o resultado distribuído em várias linhas.
- 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.