Часто задаваемые вопросы
Общие вопросы
Частые вопросы об обфускации JavaScript и о том, как она работает.
Причин защищать код много: не дать кому угодно просто скопировать вашу работу (особенно важно для клиентских проектов вроде HTML5-игр), усложнить понимание и изменение кода, а также защитить работу, которая ещё не оплачена, - чтобы показывать клиентам рабочую сборку, не отдавая исходный код.
Обычная обфускация переписывает ваш JavaScript в более трудный для чтения JavaScript: имена заменяются, строки переносятся и кодируются, поток управления перестраивается, но результат остаётся JavaScript, по которому можно пройти отладчиком. VM-обфускация (обфускация на основе виртуальной машины) компилирует тела ваших функций в собственный байт-код и поставляет встроенный интерпретатор, который его выполняет, так что защищённая логика больше не существует в виде JavaScript. Какие функции покрываются и как их выбрать, описано в разделе VM-обфускация.
Да. Установите vmTargetFunctionsMode в comment и отметьте каждую функцию, которую нужно защитить, комментарием /* javascript-obfuscator:vm */. Сохраняйте эти комментарии на всех этапах сборки, которые выполняются до обфускации. См. Выбор конкретных функций.
Нет. API-ключи, секреты и учётные данные НИКОГДА не должны храниться в коде фронтенда. Даже при самом высоком уровне обфускации любые данные во фронтенд-коде на JavaScript может извлечь настойчивый злоумышленник. Обфускация усложняет реверс-инжиниринг, но это не шифрование, и полагаться на неё в защите секретов нельзя. Вместо этого храните секреты на своём сервере, используйте переменные окружения на стороне сервера, проксируйте вызовы API через бэкенд, чтобы скрыть ключи, или выдавайте краткоживущие токены со своего сервера.
Обфускация усложняет понимание и изменение кода, кто бы ни проводил анализ - человек, инструмент или ИИ-ассистент, но не гарантирует невозможность реверс-инжиниринга. Среда выполнения остаётся наблюдаемой, если её контролирует злоумышленник. Храните секреты и принимайте окончательные решения о безопасности на сервере. Как VM преобразует код.
Сначала исключите защиты времени выполнения. VM Self Defending и VM Debug Protection намеренно ломают выполнение под средствами автоматизации, в headless-браузерах и под отладчиком, а также когда target не совпадает с реальной средой, поэтому функциональные тесты запускайте на отдельной тестовой сборке, где они выключены. Если и эта сборка не работает, сузьте проблему с помощью vmTargetFunctionsMode: 'comment', виртуализируя функции по одной. В разделе Диагностика ошибок выполнения VM описан каждый шаг и что приложить к отчёту об ошибке.
Обфускатор добавляет код: идентификаторы получают сгенерированные имена, строки переносятся в массив строк с функциями доступа (при необходимости закодированный), а при VM-обфускации вместе с байт-кодом поставляется целый интерпретатор виртуальной машины. Из-за размера не стоит переживать слишком сильно - обфусцированный код хорошо сжимается gzip или Brotli, которые на большинстве серверов включены по умолчанию.
Более тяжёлые пресеты могут увеличивать размер результата и время выполнения. Измеряйте время запуска, часто выполняемые участки и сжатый размер своего бандла, а не ориентируйтесь на фиксированные коэффициенты замедления. Справочник опций · Лучшие практики
Нет. Переписывание результата может его сломать, особенно с Self Defending или VM Self Defending, которые обнаруживают изменения кода. Прогнать код через минификатор перед обфускацией можно, если он сохраняет комментарии javascript-obfuscator, например /* javascript-obfuscator:vm */.
Мы не храним ваш исходный код. Базовая обфускация JavaScript выполняется в вашем браузере. При VM- и HTML-обфускации исходник отправляется на наши серверы, которые обрабатывают его и удаляют; если запрос больше 4.4 МБ, на тарифах Team и Business он загружается во временное хранилище, которое очищается после обработки. Для борьбы со злоупотреблениями и анализа использования мы храним в течение трёх месяцев SHA-256-хеш каждого обфусцированного результата и некоторые использованные настройки (например, пресет, target и защиты VM), но никогда не храним сам код или его содержимое. История хранится только в вашем браузере; управляйте ею в разделе «История».
Нет. Обфускатор не сохраняет ваши исходные имена, комментарии и форматирование, поэтому результат нельзя превратить обратно в ваш исходный код. Это не гарантия безопасности (см. вопрос о деобфускации выше), но это значит, что оригинал нужно хранить в надёжном месте.
Да. В опциях обфускации можно выбрать целевую среду «Node», чтобы оптимизировать результат под окружение Node.js.
Поддерживаются синтаксис ES2015+, async/await, optional chaining и приватные поля классов; более новый синтаксис проверьте на выбранной версии обфускатора. Скомпилируйте TypeScript и JSX и соберите приложение в бандл до обфускации - см. Совместимость со средой. HTML-файлы поддерживаются через parseHtml; см. Обфускация HTML.
Обфусцированный результат - включая интерпретатор VM и слой Self Defending - активно поддерживается и тестируется в вечнозелёных десктопных браузерах и в iOS 16+ (примерно последние 4 года). Более старые браузеры поддерживаются по мере возможности вплоть до жёсткой границы - поддержки модулей ES2015; всё, что ниже, включая Internet Explorer, вне зоны поддержки.
Посмотрите наши тарифы с VM-защитой или попробуйте бесплатную онлайн-песочницу для стандартной обфускации. Полное пошаговое описание - в руководстве по началу работы.
Тарифы и аккаунт
Вопросы о тарифах, оплате и лимитах использования.
Расход считается по размеру вашего исходного кода в байтах. За каждую задачу обфускации списывается минимум 0,1 МБ (102 400 байт) - это обеспечивает справедливое распределение ресурсов. Например, если вы обфусцируете файл размером 50 КБ, из квоты спишется 0,1 МБ. Файлы больше 0,1 МБ списываются по фактическому размеру.
Как только вы достигнете лимита VM-обфускации, вы сможете и дальше бесплатно и без ограничений пользоваться стандартной обфускацией в браузере. На платных тарифах VM-квота обновляется каждый месяц в день, соответствующий дате начала подписки, в том числе на годовых тарифах. У тарифа Free лимит выдаётся на весь срок и не обновляется. На тарифах с дневным лимитом VM после его исчерпания VM-обфускация снова становится доступна на следующий день. Вы можете в любой момент перейти на более высокий тариф и получить больше VM-квоты.
Да, вы можете сменить тариф в любое время. При переходе на более высокий тариф с вас спишется пропорциональная сумма за оставшуюся часть расчётного периода. При переходе на более низкий тариф новая цена начнёт действовать со следующего расчётного периода.
Вы можете отменить подписку в любой момент. Доступ к возможностям тарифа сохранится до конца текущего расчётного периода. Обратите внимание: мы не возвращаем средства за неполные расчётные периоды и неиспользованное время.
Мы принимаем все основные кредитные карты (Visa, Mastercard, American Express) и дебетовые карты через нашего защищённого платёжного провайдера Stripe. Все транзакции шифруются и соответствуют стандарту PCI.
