Was das Tool macht
Der JavaScript-Obfuscator schreibt ein Skript so um, dass es weiterhin exakt gleich läuft, für Menschen aber viel schwerer zu lesen und zu kopieren ist. Variablen- und Funktionsnamen werden zu bedeutungslosen Bezeichnern wie _0x3f2a, String-Literale wandern in eine kodierte Lookup-Tabelle, und auf höheren Stufen wird der Kontrollfluss durchgemischt und toter Code eingestreut.
Das ist nützlich für Browserspiele, Demos, Widgets und Lizenzprüfungen, die du als reines JavaScript auslieferst und nicht Wort für Wort kopiert sehen willst.
So funktioniert es
- Füge dein JavaScript ein oder öffne eine
.js-Datei. - Wähle eine Stärke:
- Niedrig benennt lokale Namen um und verschiebt Strings in ein Lookup-Array. Die Ausgabe bleibt schnell und relativ klein.
- Mittel ergänzt kodierte Strings, Control-Flow-Flattening und etwas toten Code.
- Hoch wendet alles in voller Stärke an. Das Ergebnis kann um ein Vielfaches größer und spürbar langsamer sein.
- Schalte Globale Namen umbenennen nur ein, wenn nichts außerhalb des Skripts auf dessen Top-Level-Funktionen oder -Variablen verweist.
- Schalte Ausgabe in einer Zeile aus, wenn das Ergebnis auf mehrere Zeilen verteilt sein soll.
- Kopiere den obfuskierten Code oder lade ihn herunter und teste ihn vor dem Deployment.
Beispiel
Das Beispiel definiert eine Funktion greet und einen Besuchszähler. Nach der Obfuskierung auf niedriger Stufe ist der Code eine einzige Zeile voller hexadezimaler Namen, gibt beim Ausführen aber immer noch Hello, Ada! You have visited 1 time(s). aus.
Obfuskierung versus Minifizierung
Minifizierung, wie sie der JavaScript- und CSS-Minifier vornimmt, entfernt Leerraum und kürzt Namen, damit Dateien kleiner werden und schneller laden. Obfuskierung geht bei der Größe den umgekehrten Weg: Sie fügt absichtlich Umwege ein, um Code schwerer verständlich zu machen. Viele Projekte minifizieren alles und obfuskieren nur die wenigen Dateien, deren Logik schützenswert ist.
Grenzen
Obfuskierung kann keine Geheimnisse schützen. Alles, was der Browser ausführen kann, kann ein Nutzer letztlich auch untersuchen – behalte API-Schlüssel und Geschäftsregeln, die privat bleiben müssen, also auf deinem Server. Starke Einstellungen verlangsamen den Code außerdem; vermeide sie in Hot Loops und auf performancekritischen Seiten.
FAQ
› Ändert die Obfuskierung, was mein Code macht?
Nein. Das obfuskierte Skript verhält sich wie das Original; nur seine Form ändert sich. Lass deine Tests trotzdem immer gegen den obfuskierten Build laufen, denn Code, der seinen eigenen Quelltext oder Funktionsnamen inspiziert, kann sich anders verhalten.
› Lässt sich obfuskierter Code zurückverwandeln?
Nicht vollständig, aber eine entschlossene Person mit genug Zeit kann trotzdem herausfinden, was er tut. Betrachte Obfuskierung als Bremsschwelle gegen beiläufiges Kopieren, niemals als Versteck für Geheimnisse wie API-Schlüssel.
› Wann sollte ich „Globale Namen umbenennen“ einschalten?
Nur, wenn das Skript in sich geschlossen ist. Das Umbenennen globaler Namen macht HTML-Attribute, andere Skripte oder Tests kaputt, die deine Top-Level-Funktionen beim Namen aufrufen.
› Wird mein Code hochgeladen?
Nein. Die Obfuskierung läuft in deinem Browser mit der Open-Source-Bibliothek javascript-obfuscator.