Po co obfuskować JavaScript?
Wszystko co wysyłasz do przeglądarki - kod JS, klucze API, logika płatna, walidacja licencji - można otworzyć w DevTools w 3 sekundy i przeczytać. Obfuskacja nie szyfruje tego kodu (to nie jest możliwe - przeglądarka musi w końcu go wykonać), tylko podnosi poprzeczkę tak żeby zwykłe `Ctrl+F` w panelu Sources nic ciekawego nie znalazło.
Zmienne dostają nazwy w stylu `_0x4857`, stringi lądują w zaszyfrowanej tablicy, control flow zostaje "spłaszczony" i zamotany, liczby zamieniane są na wyrażenia (`5` → `0x1 + 0x4`). Wszystko dalej działa identycznie w przeglądarce.
Wklej kod, wybierz preset (Niski / Średni / Wysoki) albo wyklikaj opcje ręcznie, skopiuj albo pobierz wynik. Cała robota dzieje się w twojej przeglądarce - kod nie idzie nigdzie na zewnątrz. To istotne, bo zwykle obfuskujesz coś, czego nie chcesz pokazywać.
Jak korzystać
- Wklej kod JavaScript w lewy panel albo kliknij "Wczytaj plik" żeby załadować `.js`, `.ts`, `.mjs` z dysku.
- Wybierz preset: Niski (lekka kosmetyka), Średni (rozsądny domyślny), Wysoki (maks. zamotanie - wolniejszy runtime).
- Opcjonalnie rozwiń opcje zaawansowane i przełącz pojedyncze flagi (np. dodaj selfDefending, wyłącz deadCodeInjection).
- Po prawej zobaczysz wynik obfuskacji plus porównanie rozmiaru - im wyższy preset, tym większy plik.
- Sprawdź wynik w DevTools - powinien działać identycznie jak oryginał. Jeśli coś wybucha, zmniejsz preset.
- Kliknij "Kopiuj" żeby wkleić do bundlera albo "Pobierz" żeby zapisać jako `obfuscated.js`.
- Wrzuć wynik do produkcji. Oryginalny kod trzymaj prywatnie - obfuskat jest tym, co ląduje na serwerze.
Do czego się przydaje
Konkretne sytuacje gdy warto obfuskować:
- Własny algorytm po stronie klienta. Np. spersonalizowany engine rekomendacji, oryginalny algorytm sortowania, niestandardowa logika gry przeglądarkowej.
- Walidacja licencji w SaaS. Klient ma dostęp do JS, ale szybki crack ("usuń `if (!valid) return`") jest trudniejszy, bo `valid` nie istnieje już jako nazwa.
- Ukrycie endpointów API. URL-e i klucze są dalej widoczne (dla każdego kto chce je znaleźć), ale nie wyskakują z grep-a w pierwszej sekundzie.
- Ochrona kodu przed konkurencją. Mała firma, biblioteka SaaS hostowana u klienta - obfuskacja podnosi koszt skopiowania logiki.
- Anti-tampering w widgetach. Widget czatu, formularz lead-gen, embed analityczny - utrudnia modyfikowanie tych skryptów na żywo.
- Skrypty extension/userscript. Jeśli rozprowadzasz userscript, obfuskacja chroni przed "fork i sprzedaj jako własne".
Potem zoptymalizuj jeszcze SVG albo przekonwertuj HTML do JSX. Do bezpieczeństwa po stronie klienta użyj raczej generatora silnych haseł.