Browser Environment
Укажите, по какой схеме отдаётся ваша продакшен-сборка, чтобы защищённый код мог привязать к ней свою целостность.
Опция browserEnvironment объявляет факты о среде, в которой отдаётся ваша продакшен-сборка, чтобы защищённый код мог привязать себя к ним или реагировать на них. Это небольшой объект, и каждое его поле действует только вместе с одной конкретной защитой — сама по себе опция ничего не делает:
browserEnvironment: { transport: 'https', hosting: 'remote' }
transport
Схема, по которой продакшен отдаёт бандл: 'http' или 'https'. Действует вместе с vmSelfDefending.
При 'https' копия, которую реверс-инженер раздаёт по обычному HTTP, не будет работать корректно. 'http' или неустановленное поле такой защиты не добавляет.
hosting
Откуда отдаётся продакшен-бандл: 'remote' или 'local'. Действует вместе с vmDebugProtection и только для таргетов browser и browser-no-eval. Требует обфускатор версии 7.14.0 или новее.
При 'remote' копия, которую аналитик забрал и запускает в своём локальном окружении, считается несоответствием среды выполнения, и защиты от автоматизации реагируют так, как настроено в vmDefenseReaction. 'local' или неустановленное поле не добавляет такой защиты.
Поддерживаемые таргеты
browserEnvironment применяется только к таргетам browser, browser-no-eval и service-worker. Для node, userscript и bytenode опция отклоняется — обфускация завершается ошибкой валидации, а не молча отбрасывает настройку. hosting ещё уже: для service worker оно принимается, но ничего там не привязывает.
Требования
transportдействует вместе сvmSelfDefending,hosting— вместе сvmDebugProtection; иначе ни одно из них ничего не делает.- Таргет
browser,browser-no-evalилиservice-worker(browserилиbrowser-no-evalдляhosting). - Обфускатор версии 7.9.0 или новее для
transport, 7.14.0 или новее дляhosting.
Пример
JavaScriptObfuscator.obfuscate(code, {
vmObfuscation: true,
vmSelfDefending: true,
vmDebugProtection: true,
target: 'browser',
browserEnvironment: { transport: 'https', hosting: 'remote' }
});