JavaScript-obfuskerare
Obfuskering ökar kostnaden för att läsa din JavaScript-källkod, inte helt (ingen frontend-obfuskering är vattentät), men tillräckligt för att avskräcka en flyktig granskning och bromsa automatiserad skrapning. Verktyget tillämpar strängmatriskodning, förvrängning av identifierare, utplattning av kontrollflöde och valfri injektion av död kod, där varje alternativ kan väljas beroende på hur aggressiv du vill vara.
Så obfuskerar du JavaScript
-
1
Klistra in källkoden
Vilken giltig JS som helst. Om den förlitar sig på specifika globala egenskapsnamn från en värdsida, ange dem som reserverade.
-
2
Välj tekniker
Strängkodning (hex / base64), förvrängning av identifierare, utplattning av kontrollflöde, injektion av död kod, självförsvarande wrapper.
-
3
Välj målprofil
Webbläsare (ES5-säker, inga Node-API:er), Node.js (tillåter `require`, `Buffer`) eller låg (mestadels minifiering).
-
4
Obfuskera
Verktyget matar ut den omvandlade koden med en storleksförändring. Aggressiva inställningar kan göra utdatan 3–5 gånger större än källan.
Tekniker och vad de kostar dig
| Teknik | Ökar angriparens ansträngning | Kostnad vid körning | Storlekskostnad |
|---|---|---|---|
| Omdöpning av variabler | Låg | Försumbar | Mindre (bieffekt av minifiering) |
| Strängmatriskodning | Medel | Minimal (en uppslagning per sträng) | +10–30% |
| Utplattning av kontrollflöde | Hög | Mätbar (~2–5%) | +50–150% |
| Injektion av död kod | Låg (skensäkerhet) | Liten | +20–50% |
| Självförsvarande wrapper | Medel | Engångskontroll | +5–10% |
| Felsökningsskydd | Medel (upptäcker DevTools) | Engångskontroll | +5% |
| VM / virtualisering (premium) | Mycket hög | Stor (5–20x) | +300–500% |
Vad obfuskering inte kan skydda
- Hemligheter. Varje konstant i din frontend-källkod går att läsa med tillräckligt med tid. API-nycklar, autentiseringshemligheter, prislogik, förlita dig aldrig på obfuskering för att dölja dessa. Flytta dem till servern.
- Algoritmer med en observerbar utdata. Om webbläsaren kan köra det kan en angripare med en felsökare observera varje in- och utdata. Obfuskering bromsar det; den stoppar det inte.
- Automatiserad skrapning i stor skala. Skrapningsskydd bygger på beteendedetektering (fingerprinting, hastighetsgränser, CAPTCHA), inte på obfuskering av källkoden.
När obfuskering är värd det
- Manipuleringsskydd för inbäddade SDK:er (licensiering, annons-SDK:er, spelklienter).
- Höja kostnaden för enkel kopiering av en konkurrerande implementation.
- Försvåra automatiserad skriptklassificering för bredspektrumskrapare.
När det är kontraproduktivt
- Du har redan en bundlare. Webpack + Terser i produktionsläge minifierar och förvränger redan lokala variabler. Att lägga till ett andra obfuskeringssteg ger lite och blåser upp buntens storlek.
- Du optimerar för First Paint / Core Web Vitals. Aggressiv obfuskering tredubblar bunten, vilket skadar FCP och LCP.
- Du måste felsöka i produktion. Tung obfuskering gör Sentrys stackspårningar närmast värdelösa utan en matchande källkarta, och att skicka med källkartan omintetgör obfuskeringen.
Vanliga misstag
- Att behandla obfuskering som likvärdig med kryptering. Det är den inte, den är bara ett gupp som fördröjer.
- Att skicka källkartan tillsammans med den obfuskerade bunten till produktion. Det neutraliserar obfuskeringen helt.
- Att obfuskera tredjepartsbibliotek som du redan laddat från ett CDN. Du får storleksstraffet utan någon vinst.
Vanliga frågor
Nej. Obfuskering är ett gupp, inte ett lås. En beslutsam analytiker med en felsökare återställer logiken. Den höjer kostnaden tillräckligt för att avskräcka flyktig granskning och de flesta automatiserade skrapare, men den är inte säkerhet.
Om du kommer åt egenskaper dynamiskt (obj["field_name"], Object.keys(obj)) eller förlitar dig på specifika funktions- eller klassnamn för värdsidan, lägg till dessa i den reserverade listan. Utan det kan omdöpning av egenskaper förstöra externa integrationer.
Behåll den ursprungliga källkoden. Obfuskeraren är en enkelriktad transformation; du kan inte återställa originalet exakt från den obfuskerade utdatan, bara en läsbar approximation.
Lätt obfuskering lägger till ~10–30%. Utplattning av kontrollflöde plus strängmatriser lägger till 50–150%. De tyngsta inställningarna kan tredubbla storleken. Kontrollera räknaren för utdatastorlek innan du levererar.
Relaterade verktyg
ASCII-tabellreferens
Full ASCII-tabell från 0 till 127 med decimal-, hex-, oktal- och binärvärden samt notation för numeriska HTML-referenser, inklusive NUL, LF och DEL.
HTML-teckenreferens
En sökbar lista över HTML-entiteter med deras namngivna och numeriska koder samt kopiering med ett klick för specialtecken och symboler.
Referens för kortkommandon
Sök dokumenterade standardkommandon för VS Code, Chrome och Bash med GNU Readline i macOS, Windows och Linux.
HTML-formaterare
Formatera HTML lokalt i webbläsaren med indrag på två eller fyra blanksteg. HTML laddas inte upp eller valideras.
E-postvalidator
Validera en e-postadress: RFC 5322-syntaxkontroll, live-slagning av MX-poster samt detaljer om lokal del, domän och längd. Ingen e-post skickas.
Slumpgenerator för bokstäver
Generera slumpade A-Z-bokstäver. Välj antal, versaler, gemener eller blandat läge och använd resultatet för spel, uppgifter eller klassrumsaktiviteter.
Verktyget finns på andra språk
- Trình làm rối mã JavaScript [VI]
- مُبهِّم JavaScript [AR]
- Obfuscateur JavaScript [FR]
- Obfuscator JavaScript [ID]
- JavaScript-Obfuscator [DE]
- JavaScript 난독화 도구 [KO]
- JavaScript-obfuscator [NL]
- เครื่องมือปิดบังโค้ด JavaScript [TH]
- Obfuskator JavaScript [PL]
- JavaScript難読化ツール [JA]
- Ofuscador de JavaScript [PT]
- Ofuscador de JavaScript [ES]
- JavaScript Obfuscator [EN]
- Offuscatore JavaScript [IT]
- Обфускатор JavaScript [RU]
- JavaScript Kod Gizleme Aracı [TR]
- JavaScript混淆器 [ZH]