SS Тулбокс
SS Тулбокс
Все данные обрабатываются локально

Обфускатор JavaScript — повысить стоимость чтения, а не шифровать

Обфусцируйте JavaScript в браузере со стандартным пресетом javascript-obfuscator. Строки переносятся в вращающийся массив, идентификаторы становятся шестнадцатеричными, вывод сжимается и упрощается — читать сложнее, но это не шифрование и код остаётся обратимым. Без загрузки и без переключателей опций.

Это выглядит странно, но это действительно работает, вы можете скопировать его в Devtool, чтобы попробовать

Что этот обфускатор делает — и чего не делает

  1. Обфускация — барьер для чтения, а не шифрование

    На выходе обычный JavaScript: его выполнит любой браузер, а разработчик может отформатировать. Это увеличивает время чтения, но не скрывает логику, не защищает секреты и не мешает деобфускации.

  2. Использует стандартный пресет библиотеки

    Включено: строковый массив с ротацией, перемешиванием и сдвигом индексов (порог 0,75), шестнадцатеричные идентификаторы, компактный вывод и упрощение. Выключено: уплощение потока управления, вставка мёртвого кода, защита отладки, самозащита кода, глобальное переименование, Unicode-экранирование.

  3. Полностью работает в браузере

    Обработка идёт через javascript-obfuscator в этой вкладке. Ничего не загружается; исходники закрытых проектов остаются на устройстве.

  4. Одна кнопка, предсказуемое поведение

    Страница намеренно не показывает переключатели опций и всегда применяет один и тот же осторожный пресет, чтобы вывод не стал неожиданно большим или медленным.

  5. Вывод можно сразу вставлять

    Результат — обычный JavaScript. Копируйте его в DevTools, шаг сборки или файл, но перед публикацией прогоните тесты.

Частые вопросы

Обфускация делает код безопасным?

Нет. Она лишь увеличивает трудозатраты на чтение. Это не шифрование, ключа нет, а целеустремлённый человек может отформатировать код и проследить логику. Не храните API-ключи, пароли и ключевые алгоритмы в клиентском JavaScript — используйте серверные проверки и контроль доступа.

Какие опции включены по умолчанию?

Страница вызывает javascript-obfuscator без пользовательских опций. По умолчанию включены: компактный вывод, шестнадцатеричные идентификаторы, упрощение и строковый массив с ротацией, перемешиванием и сдвигом индексов при пороге 0,75. Уплощение потока, мёртвый код, защита отладки, самозащита, renameGlobals, numbersToExpressions, transformObjectKeys и unicodeEscapeSequence выключены.

Что на самом деле делает строковый массив?

Строковые литералы переносятся в массив и заменяются обращениями по индексу; небольшой загрузчик при старте вращает и перемешивает массив. Искать сообщение или URL в исходнике сложнее, но во время выполнения строки остаются и их можно восстановить.

Что такое уплощение потока управления и используется ли оно здесь?

Ветвления и циклы переписываются в автомат состояний на switch, из-за чего поток сложнее отследить. Здесь он выключен: увеличивает размер и нагрузку на CPU и иногда ломает код. При необходимости включите его через CLI или библиотеку javascript-obfuscator.

Может ли обфускация сломать код или замедлить его?

Стандартный пресет довольно осторожен, но может сломать код, зависящий от имён функций, toString(), eval или рефлексии фреймворка. Косвенные обращения к массиву строк немного увеличивают запуск; уплощение потока (здесь не используется) добавляет больше. Всегда тестируйте обфусцированную сборку.

Как отлаживать обфусцированный код? Создаются ли source maps?

Source maps не создаются. Сохраните исходник, отлаживайте до обфускации или в dev-сборке и публикуйте обфусцированную версию только после тестов. Форматирование помогает увидеть структуру, но идентификаторы остаются нечитаемыми.

Можно обфусцировать несколько файлов или весь проект сразу?

Нет. Страница обрабатывает одну вставку за раз. Для нескольких файлов используйте CLI или плагины сборки javascript-obfuscator.

Связанные инструменты
SponsorMindElixir