DevToolPal
RU

Обфускатор JavaScript

Делает JavaScript трудночитаемым: переименовывает переменные, скрывает строки и запутывает логику, сохраняя прежнее поведение.

Работает локально, без загрузки на сервер

Параметры

Сила

Чем выше сила, тем больше скрыто, но код становится больше и медленнее.

Ввод

Символов: 0 · 0 B

Результат

Символов: 0 · 0 B

Что делает инструмент

Обфускатор JavaScript переписывает скрипт так, что он работает точно так же, но людям гораздо труднее его прочитать и скопировать. Имена переменных и функций превращаются в бессмысленные идентификаторы вроде _0x3f2a, строковые литералы переносятся в закодированную таблицу, а на высоких уровнях поток управления перемешивается и добавляется мёртвый код.

Это полезно для браузерных игр, демо, виджетов и проверок лицензии, которые вы распространяете в виде обычного JavaScript и не хотите, чтобы их копировали слово в слово.

Как пользоваться

  1. Вставьте JavaScript или откройте файл .js.
  2. Выберите Силу:
    • Низкая переименовывает локальные имена и переносит строки в массив. Результат остаётся быстрым и довольно компактным.
    • Средняя добавляет кодирование строк, выравнивание потока управления и немного мёртвого кода.
    • Высокая применяет всё на полную мощность. Результат может быть во много раз больше и заметно медленнее.
  3. Включайте Переименовывать глобальные имена, только если ничто вне скрипта не обращается к его функциям и переменным верхнего уровня.
  4. Выключите Вывод в одну строку, если хотите получить результат на нескольких строках.
  5. Скопируйте или скачайте обфусцированный код и протестируйте его перед деплоем.

Пример

В примере определены функция greet и счётчик посещений. После обфускации с низкой силой код превращается в одну строку с шестнадцатеричными именами, но при запуске всё так же выводит Hello, Ada! You have visited 1 time(s).

Обфускация и минификация

Минификация, как в минификаторе JavaScript и CSS, удаляет пробелы и сокращает имена, чтобы файлы были меньше и быстрее загружались. Обфускация в плане размера действует наоборот: она намеренно добавляет косвенность, чтобы код было труднее понять. Многие проекты минифицируют всё, а обфусцируют только несколько файлов с логикой, которую стоит защитить.

Ограничения

Обфускация не защищает секреты. Всё, что может выполнить браузер, пользователь рано или поздно сможет изучить, поэтому держите API-ключи и бизнес-правила, которые должны оставаться приватными, на сервере. Тяжёлые настройки к тому же замедляют код, так что избегайте их в горячих циклах и на страницах, чувствительных к производительности.

Частые вопросы

› Меняет ли обфускация поведение кода?

Нет. Обфусцированный скрипт ведёт себя так же, как исходный; меняется только его форма. Всегда прогоняйте тесты на обфусцированной сборке: код, который анализирует собственный исходный текст или имена функций, может вести себя иначе.

› Можно ли восстановить обфусцированный код?

Не полностью, но упорный человек со временем всё же разберётся, что он делает. Считайте обфускацию «лежачим полицейским» против случайного копирования, а не местом для хранения секретов вроде API-ключей.

› Когда включать «Переименовывать глобальные имена»?

Только когда скрипт самодостаточен. Переименование глобальных имён ломает HTML-атрибуты, другие скрипты или тесты, которые вызывают ваши функции верхнего уровня по имени.

› Загружается ли мой код на сервер?

Нет. Обфускация выполняется в браузере с помощью open source библиотеки javascript-obfuscator.