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
Webpack-konfigurationsgenerator
Skapa en webpack.config.js för webpack 5 från ett kort formulär: ange entry, output-mapp och mode, och slå sedan på TypeScript, Babel, en CSS-loader, HtmlWebpackPlugin och en dev-server.
SVG-blobgenerator
Generera organiska, slumpmässiga SVG-blobformer med justerbar komplexitet, kontrast och seed. Kopiera SVG-pathen för bakgrunder, hero-sektioner och avatarmasker.
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.
Generator för platshållarbilder
Skapa en bild på 1–4000 px med egna färger och text, ladda ned PNG eller kopiera webbadress och HTML.
SQL till NoSQL
Gör om en enda SQL-SELECT-sats till en MongoDB-find()-fråga. Mappar kolumner, WHERE (=, >, <, >=, <=, !=), AND/OR, ORDER BY och LIMIT. Ingen JOIN, GROUP BY eller aggregering.
SVG-våggenerator
Generera en mjuk SVG-vågavdelare för rubriker och sidfötter med justerbar amplitud, frekvens, färg och position upptill eller nedtill. Kopiera SVG-koden.
Verktyget finns på andra språk
- Obfuscator JavaScript [ID]
- JavaScript難読化ツール [JA]
- JavaScript 난독화 도구 [KO]
- เครื่องมือปิดบังโค้ด JavaScript [TH]
- Obfuskator JavaScript [PL]
- JavaScript-Obfuscator [DE]
- Trình làm rối mã JavaScript [VI]
- Ofuscador de JavaScript [PT]
- Ofuscador de JavaScript [ES]
- مُبهِّم JavaScript [AR]
- JavaScript-obfuscator [NL]
- Obfuscateur JavaScript [FR]
- JavaScript Obfuscator [EN]
- Offuscatore JavaScript [IT]
- Обфускатор JavaScript [RU]
- JavaScript Kod Gizleme Aracı [TR]
- JavaScript混淆器 [ZH]