Offuscatore JavaScript
L’offuscamento aumenta il costo di lettura del tuo codice sorgente JavaScript, non in modo assoluto (nessun offuscamento front-end è a prova di proiettile) ma abbastanza da scoraggiare ispezioni casuali e rallentare lo scraping automatizzato. Questo strumento applica codifica di array di stringhe, offuscamento degli identificatori, appiattimento del flusso di controllo e iniezione di codice morto opzionale, con ogni opzione selezionabile a seconda di quanto aggressivo vuoi essere.
Come offuscare JavaScript
-
1
Incolla il sorgente
Qualsiasi JS valido. Se dipende da nomi di proprietà globali specifici di una pagina host, impostali come riservati.
-
2
Scegli tecniche
Codifica di stringhe (esadecimale / base64), offuscamento degli identificatori, appiattimento del flusso di controllo, iniezione di codice morto, wrapper auto-difensivo.
-
3
Scegli il profilo di destinazione
Browser (sicuro per ES5, senza API Node), Node.js (consente `require`, `Buffer`), o basso (principalmente minifica).
-
4
Offusca
Lo strumento restituisce il codice trasformato con una variazione di dimensione. Impostazioni aggressive possono rendere l'output 3-5 volte più grande del sorgente.
Tecniche e cosa ti costano
| Tecnica | Aumenta lo sforzo dell’attaccante | Costo di esecuzione | Costo di dimensione |
|---|---|---|---|
| Rinominazione di variabili | Basso | Trascurabile | Più piccolo (effetto collaterale della minificazione) |
| Codifica di array di stringhe | Medio | Piccolo (una ricerca per stringa) | +10-30% |
| Appiattimento del flusso di controllo | Alto | Misurabile (~2-5%) | +50-150% |
| Iniezione di codice morto | Basso (teatro della sicurezza) | Piccolo | +20-50% |
| Wrapper auto-difensivo | Medio | Controllo una tantum | +5-10% |
| Protezione da debug | Medio (rileva DevTools) | Controllo una tantum | +5% |
| VM / virtualizzazione (premium) | Molto alto | Grande (5-20x) | +300-500% |
Cosa non può proteggere l’offuscamento
- Segreti. Qualsiasi costante nel tuo sorgente front-end è leggibile dato abbastanza tempo. Chiavi API, segreti di autenticazione, logica di prezzo, non fare mai affidamento sull’offuscamento per nascondere questi. Spostali lato server.
- Algoritmi con un output osservabile. Se il browser può eseguirlo, un attaccante con un debugger può osservare ogni input e output. L’offuscamento rallenta questo; non lo ferma.
- Scraping automatizzato su larga scala. L’anti-scraping dipende dalla rilevazione comportamentale (fingerprinting, limiti di frequenza, CAPTCHA), non dall’offuscamento del sorgente.
Quando l’offuscamento ne vale la pena
- Anti-manomissione su SDK incorporati (licenze, SDK pubblicitari, client di giochi).
- Aumentare il costo per il copia-incolla a basso sforzo di un’implementazione concorrente.
- Rendere più difficile la classificazione automatizzata degli script per scraper a spettro ampio.
Quando è controproducente
- Hai già un bundler. Webpack + Terser in modalità produzione già minifica e offusca i locali. Aggiungere un secondo passaggio di offuscamento ti dà poco e gonfia la dimensione del bundle.
- Stai ottimizzando per il primo dipinto / Core Web Vitals. L’offuscamento aggressivo triplica il bundle; questo danneggia FCP e LCP.
- Devi fare debug in produzione. L’offuscamento pesante rende le tracce dello stack di Sentry quasi inutilizzabili senza una mappa sorgente corrispondente, e spedire la mappa sorgente sconfigge l’offuscamento.
Errori comuni
- Trattare l’offuscamento come equivalente alla crittografia. Non lo è, è un ostacolo.
- Spedire la mappa sorgente insieme al bundle offuscato in produzione. Questo neutralizza completamente l’offuscamento.
- Offuscare librerie di terze parti che hai già caricato da un CDN. Ottieni la penalità di dimensione senza alcun guadagno.
Domande frequenti
No. L’offuscamento è un ostacolo, non una serratura. Un analista determinato con un debugger recupererà la logica. Aumenta il costo abbastanza da scoraggiare ispezioni casuali e la maggior parte degli scraper automatizzati, ma non è sicurezza.
Se accedi a proprietà dinamicamente (obj["field_name"], Object.keys(obj)), o fai affidamento su nomi di funzioni / classi specifiche per la pagina host, aggiungili all’elenco riservato. Senza questo, la rinominazione delle proprietà può rompere integrazioni esterne.
Tieni il sorgente originale. L’offuscatore è una trasformazione unidirezionale; non puoi recuperare esattamente l’originale dall’output offuscato, solo un’approssimazione leggibile.
Un leggero offuscamento aggiunge ~10-30%. L’appiattimento del flusso di controllo più gli array di stringhe aggiunge 50-150%. Le impostazioni più pesanti possono triplicare la dimensione. Controlla il contatore della dimensione dell’output prima di spedire.
Strumenti correlati
Riferimento Tabella ASCII
Tabella ASCII completa da 0 a 127 con decimale, esadecimale, ottale, binario e riferimento numerico HTML per ogni carattere, inclusi i codici di controllo come NUL, LF e DEL.
Riferimento ai caratteri HTML
Elenco ricercabile delle entità HTML, dei loro codici nominati e numerici, e copia con un clic per caratteri e simboli speciali.
Generatore di lettere casuali
Genera lettere A-Z casuali. Scegli la quantità, usa maiuscole, minuscole o un mix, e applica il risultato a giochi, spunti o attività in classe.
Riferimento scorciatoie da tastiera
Cerca le scorciatoie predefinite documentate di VS Code, Chrome e Bash con GNU Readline su macOS, Windows e Linux.
Promemoria Markdown
Riferimento pratico Markdown con anteprime reali ed esempi pronti da copiare per titoli, elenchi, tabelle, codice, link, immagini e sintassi GFM.
Formatter HTML
Formatta HTML localmente nel browser con rientri di due o quattro spazi. L’HTML non viene caricato né validato.
Strumento disponibile in altre lingue
- JavaScript-obfuskerare [SV]
- مُبهِّم JavaScript [AR]
- JavaScript-obfuscator [NL]
- Trình làm rối mã JavaScript [VI]
- เครื่องมือปิดบังโค้ด JavaScript [TH]
- Ofuscador de JavaScript [ES]
- JavaScript難読化ツール [JA]
- Obfuscator JavaScript [ID]
- Obfuscateur JavaScript [FR]
- JavaScript-Obfuscator [DE]
- Obfuskator JavaScript [PL]
- Ofuscador de JavaScript [PT]
- JavaScript 난독화 도구 [KO]
- Обфускатор JavaScript [RU]
- JavaScript Kod Gizleme Aracı [TR]
- JavaScript混淆器 [ZH]
- JavaScript Obfuscator [EN]