JavaScript-Obfuscator

Obfuskation erhöht die Kosten für das Lesen deines JavaScript-Quellcodes, nicht absolut (keine Front-End-Obfuskation ist wasserdicht), aber genug, um eine oberflächliche Inspektion abzuschrecken und automatisiertes Scraping zu verlangsamen. Dieses Tool wendet String-Array-Codierung, Identifier-Mangling, Flusskontroll-Glättung und optionale Injektion von totem Code an, wobei jede Option je nach gewünschter Aggressivität auswählbar ist.

Wie man JavaScript obfuskiert

  1. 1

    Füge den Quellcode ein

    Jedes gültige JS. Wenn es auf spezifische globale Eigenschaftsnamen einer Hostseite angewiesen ist, setze diese als reserviert.

  2. 2

    Wähle Techniken

    String-Codierung (hex / base64), Identifier-Mangling, Flusskontroll-Glättung, Injektion von totem Code, selbstverteidigender Wrapper.

  3. 3

    Wähle das Zielprofil

    Browser (ES5-sicher, keine Node-APIs), Node.js (erlaubt `require`, `Buffer`), oder niedrig (hauptsächlich minifizieren).

  4. 4

    Obfuskation

    Das Tool gibt den transformierten Code mit einer Größenänderung aus. Aggressive Einstellungen können die Ausgabe 3-5x größer machen als die Quelle.

Techniken und was sie dich kosten

Technik Erhöht den Aufwand des Angreifers Laufzeitkosten Größenkosten
Umbenennung von Variablen Niedrig Vernachlässigbar Kleiner (Minifizierungseffekt)
String-Array-Codierung Mittel Winzig (ein Lookup pro String) +10-30%
Flusskontroll-Glättung Hoch Messbar (~2-5%) +50-150%
Injektion von totem Code Niedrig (Sicherheits-Theater) Klein +20-50%
Selbstverteidigender Wrapper Mittel Einmalige Überprüfung +5-10%
Debug-Schutz Mittel (erkennt DevTools) Einmalige Überprüfung +5%
VM / Virtualisierung (Premium) Sehr hoch Groß (5-20x) +300-500%

Was Obfuskation nicht schützen kann

  • Geheimnisse. Jede Konstante in deinem Front-End-Quellcode ist lesbar, wenn man genug Zeit hat. API-Schlüssel, Auth-Geheimnisse, Preislogik, verlasse dich niemals auf Obfuskation, um diese zu verbergen. Verschiebe sie serverseitig.
  • Algorithmen mit einem beobachtbaren Ergebnis. Wenn der Browser es ausführen kann, kann ein Angreifer mit einem Debugger jede Eingabe und Ausgabe beobachten. Obfuskation verlangsamt das; sie stoppt es nicht.
  • Automatisiertes Scraping in großem Maßstab. Anti-Scraping hängt von Verhaltensdetektion (Fingerprinting, Ratenlimits, CAPTCHA) ab, nicht von Quell-Obfuskation.

Wann Obfuskation sinnvoll ist

  • Anti-Manipulation bei eingebetteten SDKs (Lizenzierung, Ad-SDKs, Spiel-Clients).
  • Die Kosten erhöhen für das mühelose Kopieren einer konkurrierenden Implementierung.
  • Automatisierte Skriptklassifizierung erschweren für breit gefächerte Scraper.

Wann es kontraproduktiv ist

  • Du hast bereits einen Bundler. Webpack + Terser im Produktionsmodus minifiziert und mangelt bereits lokale Variablen. Eine zweite Obfuskationspassage bringt dir wenig und erhöht die Bundle-Größe.
  • Du optimierst für First-Paint / Core Web Vitals. Aggressive Obfuskation verdreifacht das Bundle; das schadet FCP und LCP.
  • Du musst in der Produktion debuggen. Starke Obfuskation macht Sentry-Stack-Traces nahezu nutzlos ohne eine passende Source-Map, und das Versenden der Source-Map untergräbt die Obfuskation.

Häufige Fehler

  • Obfuskation als gleichwertig mit Verschlüsselung behandeln. Das ist es nicht, es ist ein Geschwindigkeitsbumper.
  • Die Source-Map zusammen mit dem obfuskierten Bundle in die Produktion schicken. Das neutralisiert die Obfuskation vollständig.
  • Dritte-Bibliotheken, die du bereits von einem CDN geladen hast, obfuskieren. Du bekommst die Größenstrafe ohne jeglichen Gewinn.

Häufig gestellte Fragen

Nein. Obfuskation ist ein Geschwindigkeitsbumper, kein Schloss. Ein entschlossener Analyst mit einem Debugger wird die Logik wiederherstellen. Es erhöht die Kosten genug, um oberflächliche Inspektionen und die meisten automatisierten Scraper abzuschrecken, aber es ist keine Sicherheit.

Wenn du auf Eigenschaften dynamisch zugreifst (obj["field_name"], Object.keys(obj)), oder auf spezifische Funktions- / Klassennamen der Hostseite angewiesen bist, füge diese zur reservierten Liste hinzu. Ohne das kann die Umbenennung von Eigenschaften externe Integrationen brechen.

Bewahre den ursprünglichen Quellcode auf. Der Obfuskator ist eine einseitige Transformation; du kannst den Originalcode nicht genau aus der obfuskierten Ausgabe wiederherstellen, nur eine lesbare Annäherung.

Leichte Obfuskation fügt ~10-30% hinzu. Flusskontroll-Glättung plus String-Arrays fügt 50-150% hinzu. Die schwersten Einstellungen können die Größe verdreifachen. Überprüfe den Ausgabedatenzähler, bevor du versendest.

Verwandte Tools

Tool in anderen Sprachen verfügbar