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.
Contador de FPS
Meça o FPS do navegador com requestAnimationFrame: suavização, taxa de quadros mínima e máxima, limite de alerta e gráfico opcional. Roda localmente, sem upload nem API.
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.
Conversor de Tamanho de Arquivo
Converta entre bytes, KB, MB, GB, TB e as unidades binárias IEC (KiB, MiB, GiB, TiB), combinando decimal e binário como preferir.
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
- Obfuskator JavaScript [PL]
- JavaScript-obfuskerare [SV]
- JavaScript難読化ツール [JA]
- เครื่องมือปิดบังโค้ด JavaScript [TH]
- Trình làm rối mã JavaScript [VI]
- JavaScript-Obfuscator [DE]
- JavaScript 난독화 도구 [KO]
- Ofuscador de JavaScript [ES]
- مُبهِّم JavaScript [AR]
- Obfuscator JavaScript [ID]
- JavaScript-obfuscator [NL]
- Obfuscateur JavaScript [FR]
- JavaScript Obfuscator [EN]
- Offuscatore JavaScript [IT]
- Обфускатор JavaScript [RU]
- JavaScript Kod Gizleme Aracı [TR]
- JavaScript混淆器 [ZH]