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

Совместимость со средой

Совместимость со средой

Выбирайте target для реальной среды выполнения. Browser- и Node-сборки могут содержать разную защиту: target Browser не заменяет Node. Объявления среды, ограничения доменов и инструменты выполнения тоже должны соответствовать настройкам.

target

  • browser - Chrome, Firefox, Safari, Edge.
  • browser-no-eval - то же, что browser, но результат не использует eval(). Используйте, когда целевая страница имеет Content Security Policy, запрещающую eval/unsafe-eval.
  • node - среда Node.js. Специфичные для браузера опции отключаются (им нужны window/document, и в Node они были бы бездействующими или бросали бы исключения). Некоторые защиты vmSelfDefending, опирающиеся на API только для браузера, - обнаружение headless-браузера, восстановление чистого realm через iframe, проверки анти-инспектора/DOM - для этой целевой среды не выпускаются.
  • service-worker - контекст Service Worker. Нет window, нет document, другой глобальный объект self.
  • userscript - песочница менеджера пользовательских скриптов (например, Tampermonkey). Защиты vmSelfDefending соответственно подстраиваются. Требуется обфускатор v6.9.0+.
  • bytenode - для кода, который будет скомпилирован в .jsc с помощью bytenode. Требуется обфускатор v6.13.0+.

JavaScript

Имена функций и их исходное текстовое представление могут изменяться при обфускации. Не используйте .name или .toString() как стабильные данные приложения: задавайте явные идентификаторы. Публичные глобальные имена могут оставаться видимыми в зависимости от настроек.

strictMode

strictMode: null и strictMode: false всё равно распознают явные директивы, ES-модули и методы классов как строгие. strictMode: true обрабатывает весь код как строгий. Учитывайте итоговую среду: добавление строгого режима сборщиком после обфускации может изменить поведение.

CLI / API

Компилируйте TypeScript или JSX и собирайте бандл до финального этапа обфускации. Сохраняйте комментарии выбора VM-функций до этого этапа. После него не минифицируйте, не форматируйте и не изменяйте результат с Self Defending. Карты исходного кода недоступны при VM- и HTML-обфускации. Для функциональных тестов с агентами, автоматизацией или отладчиками см. Тестирование и CI.