Ofuscador de JavaScript
A ofuscação aumenta o custo de leitura do seu código-fonte JavaScript, não de forma absoluta (nenhuma ofuscação de front-end é à prova de balas), mas o suficiente para desencorajar inspeções casuais e desacelerar a raspagem automatizada. Esta ferramenta aplica codificação de array de strings, mangling de identificadores, achatamento de fluxo de controle e injeção de código morto opcional, com cada opção selecionável dependendo de quão agressivo você deseja ser.
Como ofuscar JavaScript
-
1
Cole o código-fonte
Qualquer JS válido. Se depender de nomes de propriedades globais específicas de uma página host, defina-os como reservados.
-
2
Escolha técnicas
Codificação de strings (hex / base64), mangling de identificadores, achatamento de fluxo de controle, injeção de código morto, wrapper autodefensivo.
-
3
Escolha o perfil de destino
Navegador (seguro para ES5, sem APIs do Node), Node.js (permite `require`, `Buffer`), ou baixo (principalmente minificação).
-
4
Ofuscar
A ferramenta gera o código transformado com uma diferença de tamanho. Configurações agressivas podem fazer a saída ser 3-5x maior que a fonte.
Técnicas e o que elas custam
| Técnica | Aumenta o esforço do atacante | Custo em tempo de execução | Custo de tamanho |
|---|---|---|---|
| Renomeação de variáveis | Baixo | Negligível | Menor (efeito colateral da minificação) |
| Codificação de array de strings | Médio | Pequeno (uma busca por string) | +10-30% |
| Achatamento de fluxo de controle | Alto | Mensurável (~2-5%) | +50-150% |
| Injeção de código morto | Baixo (teatro de segurança) | Pequeno | +20-50% |
| Wrapper autodefensivo | Médio | Verificação única | +5-10% |
| Proteção contra depuração | Médio (detecta DevTools) | Verificação única | +5% |
| VM / virtualização (premium) | Muito alto | Grande (5-20x) | +300-500% |
O que a ofuscação não pode proteger
- Segredos. Qualquer constante no seu código-fonte de front-end é legível dado tempo suficiente. Chaves de API, segredos de autenticação, lógica de preços, nunca confie na ofuscação para esconder isso. Mova-os para o lado do servidor.
- Algoritmos com uma saída observável. Se o navegador pode executá-lo, um atacante com um depurador pode observar cada entrada e saída. A ofuscação desacelera isso; não o impede.
- Raspagem automatizada em grande escala. A anti-raspagem depende da detecção comportamental (impressão digital, limites de taxa, CAPTCHA), não da ofuscação do código-fonte.
Quando a ofuscação vale a pena
- Anti-tampering em SDKs embutidos (licenciamento, SDKs de anúncios, clientes de jogos).
- Aumentar o custo para cópias de baixo esforço de uma implementação concorrente.
- Dificultar a classificação automatizada de scripts para raspadores de amplo espectro.
Quando é contraproducente
- Você já tem um empacotador. Webpack + Terser em modo de produção já minifica e modifica locais. Adicionar uma segunda passagem de ofuscação pouco traz e inflaciona o tamanho do pacote.
- Você está otimizando para o primeiro carregamento / Core Web Vitals. A ofuscação agressiva triplica o pacote; isso prejudica FCP e LCP.
- Você precisa depurar em produção. A ofuscação pesada torna as pilhas de Sentry quase inúteis sem um mapa de origem correspondente, e enviar o mapa de origem derrota a ofuscação.
Erros comuns
- Tratar a ofuscação como equivalente à criptografia. Não é, é um obstáculo.
- Enviar o mapa de origem junto com o pacote ofuscado para produção. Isso neutraliza completamente a ofuscação.
- Ofuscar bibliotecas de terceiros que você já carregou de um CDN. Você recebe a penalidade de tamanho sem nenhum ganho.
Perguntas frequentes
Não. A ofuscação é um obstáculo, não uma fechadura. Um analista determinado com um depurador recuperará a lógica. Aumenta o custo o suficiente para desencorajar inspeções casuais e a maioria dos raspadores automatizados, mas não é segurança.
Se você acessar propriedades dinamicamente (obj["field_name"], Object.keys(obj)), ou depender de nomes de funções / classes específicas da página host, adicione-os à lista de reservados. Sem isso, a renomeação de propriedades pode quebrar integrações externas.
Mantenha o código-fonte original. O ofuscador é uma transformação unidirecional; você não pode recuperar exatamente o original a partir da saída ofuscada, apenas uma aproximação legível.
A ofuscação leve adiciona ~10-30%. O achatamento de fluxo de controle mais arrays de strings adicionam 50-150%. As configurações mais pesadas podem triplicar o tamanho. Verifique o contador de tamanho da saída antes de enviar.
Ferramentas relacionadas
Gerador de cards CSS
Crie um card com seu título, texto e link opcional. Ajuste cores, borda, espaçamento, sombra e efeito ao passar o mouse. Depois copie ou baixe o HTML e o CSS.
Gerador de textura de ruído
Gere uma textura de ruído em SVG que se repete sem emendas, com opacidade, frequência do grão, tipo de ruído e cor de fundo ajustáveis, e copie o CSS já pronto.
Gerador de Configuração Webpack
Crie um webpack.config.js para webpack 5 a partir de um formulário curto: defina o entry, a pasta de saída e o modo, e ative TypeScript, Babel, um loader CSS, HtmlWebpackPlugin e um servidor de desenvolvimento.
Gerador de Docker Compose
Gere um docker-compose.yml a partir de definições de serviços com imagem, portas e volumes, com padrões de boas práticas.
Conversor de base numérica
Converta números entre binário, octal, decimal, hexadecimal e qualquer base personalizada de 2 a 36, com o detalhamento posicional.
Desofuscador de JavaScript
Desofusque JavaScript minificado ou empacotado com renomeação de variáveis, decodificação de arrays de strings, reversão de achatamento de fluxo de controle e embelezamento.
Ferramenta disponível em outros idiomas
- مُبهِّم JavaScript [AR]
- Ofuscador de JavaScript [ES]
- JavaScript-obfuscator [NL]
- JavaScript 난독화 도구 [KO]
- Obfuscateur JavaScript [FR]
- Trình làm rối mã JavaScript [VI]
- เครื่องมือปิดบังโค้ด JavaScript [TH]
- Obfuskator JavaScript [PL]
- JavaScript-obfuskerare [SV]
- Obfuscator JavaScript [ID]
- JavaScript難読化ツール [JA]
- JavaScript-Obfuscator [DE]
- JavaScript Obfuscator [EN]
- Offuscatore JavaScript [IT]
- Обфускатор JavaScript [RU]
- JavaScript Kod Gizleme Aracı [TR]
- JavaScript混淆器 [ZH]