Документация
/

Выбор пресета

Выбор пресета

Пресеты задают начальную конфигурацию. Выберите пресет, затем проверьте фактические опции для выбранной версии обфускатора.

Смотреть

Which Obfuscator.io Preset Should I Use? VM Low vs Default vs High

Смотреть на YouTube

В версии 8.0.0 и новее рекомендуемая отправная точка для продакшена - VM Default. VM Low удобен для первоначальной проверки: VM Self Defending и VM Debug Protection в нём выключены. Остальные VM-пресеты включают обе защиты. На тарифе Free панель управления предлагает только VM Low; остальные VM-пресеты и их VM-опции требуют платного тарифа.

VM (8.0.0 и новее)

optionsPresetЧто меняется
vm-low-obfuscationVM Low начинает с меньшего числа VM-защит и оставляет выключенными stringArray и vmBytecodeArrayEncoding. Используйте его для оценки VM-обфускации, а не как основу тестовой сборки.
vm-defaultVM Default сочетает VM, защиту String Array и продвинутые защиты. Начните с него для продакшена.
vm-high-obfuscationVM High добавляет Stateful Opcodes, Stack Encoding и Compact Dispatcher. Измерьте накладные расходы на своём коде.
vm-ultra-high-obfuscationVM Ultra High сохраняет Stateful Opcodes и Stack Encoding, но не Compact Dispatcher, и добавляет Control Flow Flattening и дополнительные базовые преобразования. Это значительно снижает производительность во время выполнения.

В версии 8.0.0 и новее vm-anti-llm (VM Anti-LLM) и vm-medium-obfuscation (VM Medium) дают те же опции, что и vm-default, и больше не отображаются отдельными вариантами в интерфейсе. В старых версиях они могут быть отдельными пресетами.

Базовая обфускация

optionsPresetselfDefendingdebugProtectiondisableConsoleOutput
defaultfalsefalsefalse
low-obfuscationtruefalsetrue
medium-obfuscationtruefalsetrue
high-obfuscationtruetruetrue

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

Для сборки через API получите опции встроенного пресета для своей версии обфускатора из эндпоинта пресетов и отправьте их в options (см. Справочник API).

Пользовательские пресеты

Встроенные пресеты - это отправные точки. Как только вы что-то поменяли поверх одного из них, сохраните результат, чтобы не собирать его заново в следующий раз: выберите Новый пресет в библиотеке пресетов в верхней части панели опций. Пресет сохраняет каждую опцию в её текущем состоянии, под выбранным вами названием и с необязательным описанием; версию обфускатора он не сохраняет, поэтому применяется версия, выбранная в момент сборки. Сохранённые пресеты перечислены на вкладке Пользовательские. Пользовательские пресеты доступны на тарифах Pro и выше, до 20 на аккаунт.

Щелчок по карточке пресета применяет его к панели опций. Как только вы измените какую-либо опцию, применённый пресет получает метку Изменён: Отменить изменения возвращает его опции, а у ваших собственных пресетов Обновить пресет сохраняет в него изменения. Прежде чем другой пресет перезапишет несохранённые изменения, вас попросят подтвердить это. Редактирование, дублирование и удаление находятся в меню пресета. Типичная схема - один продакшен-пресет и его тестовый вариант, в который добавлены переопределения из раздела Тестирование и CI, чтобы обе сборки выполняли одни и те же преобразования.

Ещё два поля в диалоге сохранения выводят пресет за пределы вашей панели управления:

  • Поделиться с моей командой публикует его для вашей команды, где он также может стать пресетом команды по умолчанию. Этот переключатель видит только владелец команды. См. Общие пресеты.
  • Псевдоним для API позволяет сборке использовать пресет по имени: в пакете javascript-obfuscator (5.8.0+) optionsPreset со значением псевдонима получает опции пресета во время сборки, так что конфигурация живёт в панели управления, а изменение в ней попадает в следующую сборку без коммита. Прямой запрос к API получает опции из эндпоинта пресетов отдельным запросом (см. Справочник API). См. Использование NPM-пакета.