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
Referência da Tabela ASCII
Tabela ASCII completa de 0 a 127 com valores decimais, hexadecimais, octais e binários e notação de referência numérica HTML, incluindo NUL, LF e DEL.
Referência de Caracteres HTML
Lista pesquisável de entidades HTML, seus códigos nomeados e numéricos, e uma cópia com um clique para caracteres e símbolos especiais.
Referência de atalhos de teclado
Pesquise atalhos padrão documentados do VS Code, Chrome e Bash com GNU Readline no macOS, Windows e Linux.
Gerador de EditorConfig
Gere um arquivo .editorconfig com suas regras de estilo e tamanho de indentação, fim de linha, charset e espaços em branco para formatação consistente entre IDEs e editores.
Validador de Email
Valide um endereço de email: verificação de sintaxe RFC 5322, consulta de registro MX em tempo real, além de detalhes de parte local, domínio e comprimento. Nenhum email é enviado.
Formatador de HTML
Formate HTML localmente no navegador com indentação de dois ou quatro espaços. O HTML não é enviado nem validado.
Ferramenta disponível em outros idiomas
- Trình làm rối mã JavaScript [VI]
- مُبهِّم JavaScript [AR]
- Obfuscateur JavaScript [FR]
- Obfuscator JavaScript [ID]
- JavaScript-Obfuscator [DE]
- JavaScript 난독화 도구 [KO]
- JavaScript-obfuskerare [SV]
- JavaScript-obfuscator [NL]
- เครื่องมือปิดบังโค้ด JavaScript [TH]
- Obfuskator JavaScript [PL]
- JavaScript難読化ツール [JA]
- Ofuscador de JavaScript [ES]
- JavaScript Obfuscator [EN]
- Offuscatore JavaScript [IT]
- Обфускатор JavaScript [RU]
- JavaScript Kod Gizleme Aracı [TR]
- JavaScript混淆器 [ZH]