Що робить інструмент
Обфускатор JavaScript переписує скрипт так, що він працює точно так само, але людям набагато важче його читати й копіювати. Імена змінних і функцій стають беззмістовними ідентифікаторами на кшталт _0x3f2a, рядкові літерали переносяться в закодовану таблицю, а на вищих рівнях потік керування перемішується й додається мертвий код.
Це корисно для браузерних ігор, демо, віджетів і перевірок ліцензії, які ви постачаєте як звичайний JavaScript і не хочете, щоб їх копіювали слово в слово.
Як користуватися
- Вставте свій JavaScript або відкрийте файл
.js. - Виберіть Силу:
- Низька перейменовує локальні імена й переносить рядки в масив-таблицю. Результат лишається швидким і досить компактним.
- Середня додає закодовані рядки, сплощення потоку керування й трохи мертвого коду.
- Висока застосовує все на повну силу. Результат може бути в рази більшим і помітно повільнішим.
- Вмикайте Перейменовувати глобальні імена лише тоді, коли ніщо поза скриптом не звертається до його функцій чи змінних верхнього рівня.
- Вимкніть Вивід в один рядок, якщо хочете, щоб результат займав кілька рядків.
- Скопіюйте або збережіть обфускований код і протестуйте його перед деплоєм.
Приклад
Приклад визначає функцію greet і лічильник відвідувань. Після обфускації з низькою силою код стає одним рядком шістнадцяткових імен, але під час запуску все одно виводить Hello, Ada! You have visited 1 time(s).
Обфускація проти мініфікації
Мініфікація, яку виконує мініфікатор JavaScript і CSS, видаляє пробіли й скорочує імена, щоб файли були меншими й швидше завантажувалися. Обфускація щодо розміру діє навпаки: вона навмисно додає непрямість, щоб код було важче зрозуміти. Багато проєктів мініфікують усе, а обфускують лише кілька файлів із логікою, яку варто захистити.
Обмеження
Обфускація не може захистити секрети. Усе, що може виконати браузер, користувач рано чи пізно зможе дослідити, тож тримайте API-ключі й бізнес-правила, які мають лишатися приватними, на своєму сервері. Важкі налаштування також уповільнюють код, тож уникайте їх у гарячих циклах і на сторінках, критичних до продуктивності.
Часті запитання
› Чи змінює обфускація поведінку мого коду?
Ні. Обфускований скрипт поводиться так само, як оригінал; змінюється лише його форма. Завжди запускайте тести на обфускованій збірці, бо код, що аналізує власне джерело чи імена функцій, може поводитися інакше.
› Чи можна обернути обфускований код?
Не повністю, але наполеглива людина з часом усе одно розбереться, що він робить. Сприймайте обфускацію як «лежачого поліцейського» проти випадкового копіювання, а не як місце для зберігання секретів на кшталт API-ключів.
› Коли вмикати «Перейменовувати глобальні імена»?
Лише тоді, коли скрипт самодостатній. Перейменування глобальних імен ламає HTML-атрибути, інші скрипти чи тести, які викликають ваші функції верхнього рівня за назвою.
› Чи завантажується мій код на сервер?
Ні. Обфускація виконується у вашому браузері за допомогою відкритої бібліотеки javascript-obfuscator.