Ugrás a tartalomhoz

JavaScript obfuscator

A JavaScript forráskódot hexadecimálisan kódolt eval(unescape(...)) részletté alakítja, amely elrejti a kódot egy gyors pillantás elől.

Bemenet
Kimenet

JavaScript obfuscator

Illesszen be JavaScript forráskódot, és ez az eszköz egy hexadecimálisan escape-elt karakterláncra írja át, amely eval(unescape('...')) segítségével újra összeáll és futtatja magát. Ez a klasszikus "alapvető obfuszkáció" trükk: a kód minden karaktere egy %XX sorrend (vagy %uXXXX az első 256 kódponton kívüli karaktereknél) válik, így a forrás első pillantásra nem olvasható — nincsenek változónevek, nincsenek karakterlánc-literálok, nincsenek látható megjegyzések.

Alapértelmezés szerint a kimenet egy önvégrehajtó függvénybe van csomagolva, (function(){eval(unescape('...'))})();, így az eredményt közvetlenül elhelyezheti egy <script> címkébe vagy egy másik fájlba, és azonnal futtatódik — pontosan az eredeti módon. Kapcsolja ki az "Csomagolás önvégrehajtó függvénybe" lehetőséget, ha helyette csak a eval(unescape('...')); utasítást szeretné, például egy olyan függvénybe ágyazásához, amelyet már kontrolál.

Ez obfuszkáció, nem titkosítás vagy biztonság: az unescape() és eval() látható a kimenetben, és a hexadecimális karakterlánc forrásra való dekódolása egyetlen sor művelete mindazoknak, akik nézik — a böngésző konzol olyan gyorsan megteszi, mint ahogy beillesztheti. Tekintse ezt úgy, mint a véletlen másolás elrettentésének módja, vagy egy részlet eltartása a gyors view-source pillantás elől, nem pedig a titkok, API-kulcsok vagy bármi olyan védelme, amely valóban bizalmas marad.

Minden helyileg fut a böngészőjében. Az általa beillesztett kód soha nem töltődik fel vagy nem kerül sehova, így biztonságos a saját vagy még nem közzétett szkriptek obfuszkálása. A kimenet alatti élő számláló mutatja, hány karakter ment be, hány jött ki, és hány bájtot kódoltak hexadecimálisan, így a másolás vagy letöltés előtt láthatja a méretnövekedést.

Gyakori kérdések

Ez valódi biztonság, vagy a kód de-obfuszkálható?
Ez nem biztonság. Bárki futtathat unescape()-et a kimeneten belüli karakterláncra, és egyetlen lépésben megkaphatja az eredeti forráskódot — ez csak a kódot rejti el egy gyors pillantás elől, nem pedig azok elől, akik valóban nézik.
Az obfuszkált kód pontosan úgy működik, mint az eredeti?
Igen. Az eval(unescape('...')) szó szerint újra összead és futtat az eredeti forráskódot, karakterről karakterre, szóközöket, sorvégeket és karakterlánc-tartalmat is beleértve.
Mit csinál a "Csomagolás önvégrehajtó függvénybe"?
Az eval(unescape('...')) hívást (function(){...})(); függvénybe csomagolja, így az eredmény azonnal önálló utasításként futtatódik. Kapcsolja ki, ha az eval(unescape('...'); hívást a saját függvényébe vagy hatókörébe szeretné helyezni.
Működik minifikált kódon is?
Igen. Bármilyen JavaScript szöveget obfuszkálhat, minifikáltat vagy nem — az eszköz a bemenetet egyszerű szövegként kezeli, és karakterről karakterre hexadecimálisan kódolja, így az első minifikálás (CSS/JS minifier segítségével) csak a kódolt kimenetet rövidíti.
A forráskódomat feltöltötték valahova?
Nem. Az obfuszkátor teljes egészében a böngészőjében futtat — az általa beillesztett kód soha nem hagyja el az eszközét.