Часто задаваемые вопросы
Общие вопросы
Частые вопросы об обфускации JavaScript и о том, как она работает.
Причин защищать код много: не дать кому угодно просто скопировать вашу работу (особенно важно для клиентских проектов вроде HTML5-игр), убрать комментарии и пробелы, чтобы код быстрее загружался и хуже читался, а также защитить работу, которая ещё не оплачена, — чтобы показывать её клиентам, не отдавая исходный код.
VM-обфускация (обфускация на основе виртуальной машины) превращает ваш код на JavaScript в собственный байт-код, который исполняется встроенным интерпретатором. В отличие от стандартной обфускации, которая всё равно выдаёт читаемый JavaScript, VM-обфускация полностью скрывает структуру исходного кода. Инструменты статического анализа не смогут понять логику, пока полностью не разберут виртуальную машину. Подробнее — в нашем руководстве по VM-обфускации.
Да! У нас есть опция, которая позволяет выборочно применять VM-обфускацию к конкретным функциям или методам. Достаточно пометить нужную функцию специальным комментарием (/* javascript-obfuscator:vm */), и через VM-обфускатор пройдёт только она. Это идеальный вариант, когда нужно защитить лишь самые чувствительные алгоритмы, оставив остальной код со стандартной обфускацией или вовсе без неё, — так накладные расходы на производительность минимальны.
Нет. API-ключи, секреты и учётные данные НИКОГДА не должны храниться в коде фронтенда. Даже при самом высоком уровне обфускации любые данные во фронтенд-коде на JavaScript может извлечь настойчивый злоумышленник. Обфускация усложняет обратную разработку, но это не шифрование, и полагаться на неё в защите секретов нельзя. Вместо этого храните секреты на своём сервере, используйте переменные окружения на стороне сервера, проксируйте вызовы API через бэкенд, чтобы скрыть ключи, или выдавайте краткоживущие токены со своего сервера.
Стопроцентно надёжной обфускации не существует: JavaScript в конечном счёте выполняется в среде, которую контролирует атакующий, — в браузере или в Node.js, — а инспекция памяти во время выполнения там возможна всегда. Ни одна обфускация JavaScript не способна это закрыть; она может лишь повысить цену такого анализа. Онлайн-сервисов автоматической деобфускации для VM-обфусцированного кода сегодня не существует: каждая обфускация компилирует код в собственный байт-код с уникальной виртуальной машиной, поэтому универсальный инструмент невозможен. Стандартную обфускацию обойти намного проще: её часто удаётся частично обратить автоматическими инструментами и форматтерами кода. VM-обфускация требует полностью разобрать виртуальную машину, расшифровать и декодировать её байт-код, понять набор инструкций и проследить выполнение — на это могут уйти недели целенаправленной работы. Без VM Self Defending мощные ИИ-агенты (например, Claude Opus 4.7) способны проследить байт-код и приблизительно восстановить исходный код небольших проектов. С включённым VM Self Defending многоуровневая защита от LLM — противодействие хукам, проверка целостности между реалмами и проверка нативности байт-кода — ломает динамические приёмы, которыми агент пытается разобраться в байт-коде: инструментирование, хуки и запуск в песочнице. Статически прочитать файл по-прежнему можно, но видно будет только непрозрачный байт-код, а любая попытка понаблюдать за средой выполнения, которая его интерпретирует, срабатывает на проверке целостности. По одному только файлу автоматическая деобфускация при помощи ИИ становится непрактичной. Чтобы усилить защиту ещё больше: оборачивайте чувствительные функции в IIFE, чтобы их имена преобразовывались полностью, и включайте опции усиления вроде шифрования байт-кода. Подробнее о том, как VM преобразует код.
VM-обфускация — сложная технология, и некоторые пограничные случаи поддерживаются не полностью. Если после VM-обфускации код перестал работать, вы можете локализовать проблему с помощью vmTargetFunctionsMode: 'comment', обфусцируя функции выборочно. Пошаговые инструкции о том, как найти проблемный код и сообщить о проблеме, есть в нашем руководстве по диагностике.
Обфускатор добавляет новый код для защиты от отладки и обратной разработки. Строки переводятся в шестнадцатеричный вид, а при VM-обфускации вместе с байт-кодом поставляется целый интерпретатор виртуальной машины. Из-за размера не стоит переживать слишком сильно — обфусцированный код очень хорошо сжимается GZIP, который на большинстве серверов включён по умолчанию.
Любая обфускация в той или иной мере влияет на производительность. У стандартной обфускации накладные расходы минимальны. VM-обфускация влияет заметно сильнее, и результат сильно зависит от кода: например, код с интенсивной рекурсией, скомпилированный в байт-код, будет ощутимо медленнее. В среднем пресет low даёт замедление примерно в 10 раз, а анти-LLM-пресет с Self Defending и Debug Protection — примерно в 12 раз. Баланс можно настроить, изменив опции или применяя VM-обфускацию только к чувствительным участкам кода. Советы по оптимизации — в нашем руководстве по лучшим практикам.
Нет, это не рекомендуется, а в некоторых случаях сломает код (особенно если включена самозащита). А вот прогнать код через минификатор перед обфускацией можно.
Файлы размером меньше 4.4 МБ обрабатываются полностью в памяти, и обфусцированный результат сразу возвращается вам. Файлы большего размера (тарифы Team и Business) мы временно загружаем в защищённое хранилище и удаляем сразу после завершения обфускации. В качестве дополнительной меры каждые 5 минут запускается задача очистки, которая удаляет все файлы старше 5 минут. Ваш код никогда не сохраняется.
Нет, вернуть обфусцированный код к исходному невозможно, поэтому храните оригинал в надёжном месте.
Да. В опциях обфускации можно выбрать целевую среду «Node», чтобы оптимизировать результат под окружение Node.js.
Мы поддерживаем ES2015 (ES6) и все современные возможности JavaScript, включая синтаксис ES2022+, приватные поля классов, async/await, опциональные цепочки и многое другое. TypeScript и JSX перед обфускацией нужно скомпилировать в JavaScript. На платном тарифе можно обфусцировать и HTML-файлы: добавьте атрибут data-javascript-obfuscator к тем тегам <script>, которые нужно защитить, — они будут обфусцированы по отдельности с сохранением структуры HTML. Учтите, что код в каждом помеченном скрипте должен быть самодостаточным (без обращений к другим скриптам), а скрипты ES-модулей пропускаются.
Обфусцированный результат — включая интерпретатор VM и слой Self Defending — активно поддерживается и тестируется в вечнозелёных десктопных браузерах и в iOS 16+ (примерно последние 3 года). Более старые браузеры поддерживаются по мере возможности вплоть до жёсткой границы — поддержки модулей ES2015; всё, что ниже, включая Internet Explorer, вне зоны поддержки.
Посмотрите наши тарифы с VM-защитой или попробуйте бесплатную онлайн-песочницу для стандартной обфускации. Полное пошаговое описание — в руководстве по началу работы.
Тарифы и аккаунт
Вопросы о тарифах, оплате и лимитах использования.
pricing.faq.usageMeasured.answer
pricing.faq.exceedLimit.answer
pricing.faq.upgradeDowngrade.answer
pricing.faq.cancel.answer
pricing.faq.paymentMethods.answer
