Как запутать js-скрипт на сервере

У меня есть веб-приложение Java, и я хочу запутать некоторый код JS на сервере.

Теперь у меня есть сайт, куда я могу вставить свой JS-код и запутать его вручную, например.

alert(1);

«Нажатие кнопки»

Сайт использует обфускацию от:

https://cdn.jsdelivr.net/npm/javascript-obfuscator/dist/index.browser.js

и этот скрипт запутывает мой код:

var obfuscationResult = JavaScriptObfuscator.obfuscate(
        jsCodeToObfuscate,
        {
            compact: true,
            controlFlowFlattening: true,
            controlFlowFlatteningThreshold: 1,
            deadCodeInjection: true,
            deadCodeInjectionThreshold: 1,
            debugProtection: true,
            debugProtectionInterval: true,
            disableConsoleOutput: true,
            identifierNamesGenerator: 'hexadecimal',
            log: false,
            renameGlobals: false,
            rotateStringArray: true,
            selfDefending: true,
            shuffleStringArray: true,
            splitStrings: true,
            splitStringsChunkLength: 5,
            stringArray: true,
            stringArrayEncoding: 'rc4',
            stringArrayThreshold: 1,
            transformObjectKeys: true,
            unicodeEscapeSequence: false
        });

и у меня есть результат.

Мне нужно запустить обфускацию в бэкенде. Этот метод в Java должен вызывать javascript и возвращать результат обфускации внутри сервера.

Я знаю, что использование javascript в Java возможно, но я не знаю, как использовать функцию обфускации по ссылке в Java.

Можно ли запутать мой код на сервере Java? Может быть, есть какой-нибудь бесплатный API, чтобы сделать это и не делать это самому?


person Marcin Frąckiewicz    schedule 27.09.2020    source источник
comment
Может быть, выполнить JS на Java-сервере?   -  person simplecreator    schedule 27.09.2020
comment
Этот вопрос не имеет ничего общего с Java; речь идет только о Javascript. Пожалуйста, удалите тег Java. Использование тега java для этого так же оправдано, как и использование тега Human, потому что программист, скорее всего, человек.   -  person NomadMaker    schedule 28.09.2020
comment
@NomadMaker Я хочу запустить это приложение JS в Java.   -  person Marcin Frąckiewicz    schedule 28.09.2020
comment
И все же тот факт, что приложение, в котором вы это запускаете, не имеет ничего общего с вашим вопросом. Вы можете запустить его в приложении Python для всего, что имеет значение. Имеет ли значение, на каком языке написан ваш браузер? Удалите тег java или отредактируйте свой вопрос, чтобы показать, насколько важна Java для запутывания javascript.   -  person NomadMaker    schedule 28.09.2020
comment
@NomadMaker Я хочу написать метод Java, который будет вызывать JS с сервера без браузера и пользователя. Я могу запутать код на веб-сайте с помощью javascript, но я не могу запустить это только в бэкэнде Java, что мне нужно.   -  person Marcin Frąckiewicz    schedule 28.09.2020
comment
Затем, если это важно, отредактируйте свой вопрос, чтобы включить это. Если это не важно, пожалуйста, удалите тег java. Не оставляйте важную информацию в комментариях.   -  person NomadMaker    schedule 28.09.2020
comment
Отвечает ли это на ваш вопрос? Минимизация и обфускация кода JavaScript в Java   -  person Thomas Sablik    schedule 28.09.2020
comment
@ThomasSablik, к сожалению, нет, потому что есть только способ минимизировать javascript, а это недостаточно безопасно для меня.   -  person Marcin Frąckiewicz    schedule 28.09.2020
comment
Есть несколько вариантов. Вы можете выполнить минимизацию с запутыванием во время сборки или использовать такие инструменты, как wro4j, чтобы вернуть минимизированный js/css github.com/wro4j/wro4j. Есть даже стартер весенней загрузки github.com/michael-simons/wro4j-spring- boot-starter, если вы выполняете весеннюю загрузку   -  person gtiwari333    schedule 28.09.2020
comment
Кроме того, что вы подразумеваете под not secure enough for me? Вы публикуете файл .js для широкой публики, но не ожидаете, что кто-то прочитает? Обратите внимание, что даже запутанный код можно проанализировать, чтобы прочитать его обратно. Я думаю, что цель должна заключаться в том, чтобы не помещать в файл JS ничего, что вы не хотите, чтобы другие видели, максимально защитить свой бэкэнд и по-прежнему использовать минимизацию для уменьшения размера ответа полезной нагрузки.   -  person gtiwari333    schedule 28.09.2020
comment
Я только что отправил фиксацию в свой тестовый проект, чтобы показать, как вы можете использовать wro4j в веб-приложении с весенней загрузкой github.com/gtiwari333/spring-boot-blog-app/commit/   -  person gtiwari333    schedule 28.09.2020
comment
@gtiwari333 gtiwari333 Я знаю, что всегда кто-то мог прочитать это, но мне нужно запутать это. Minyfing — это не то, что я ищу, потому что это небезопасно.   -  person Marcin Frąckiewicz    schedule 28.09.2020
comment
Я заметил, что вы уже попробовали yuicompressor и все еще не удовлетворены результатом. Как насчет добавления exec-maven-plugin плагина, который выполняет ваш JavaScriptObfuscator и использует выходные файлы из target в jar/war?   -  person gtiwari333    schedule 28.09.2020
comment
Также вы можете уточнить это: I've got Java web app and I want to obfuscate some JS code on server.Now I've got site, where I can paste my JS code and obfuscate it manually Похоже, вы хотите получить текст javascript в форме HTML, выполнить обфускацию/минификацию в бэкэнде и вернуть ответ обратно в браузер для загрузки. Я думал, что вы хотите минимизировать/ запутать файлы .js, используемые вашим клиентом?   -  person gtiwari333    schedule 28.09.2020
comment
@ gtiwari333 точно. Я хочу запутать код js в бэкэнде, а затем вернуть его в браузер для загрузки.   -  person Marcin Frąckiewicz    schedule 28.09.2020
comment
Ok. Вот ваши варианты AFAICU, 1) запустите обфускатор js прямо на стороне клиента, чтобы вам не нужно было выполнять бэкэнд-вызов, чтобы сделать то же самое. 2) выполнить js в бэкэнде с помощью движка JS, такого как Rhino, или с помощью собственного процесса nodejs с помощью утилиты Java Process 3) использовать чистую утилиту минифии/обфускатора Java, такую ​​​​как YUI   -  person gtiwari333    schedule 29.09.2020