在 Gulp 中混淆 Javascript 代码的好方法

Good way to obfuscate Javascript code in Gulp

这个问题知道混淆绝不是保护代码的有力方法...

使用 Gulp,我正在寻找一种方法来防止我的应用程序的内容以过于明显的方式出现。不操纵敏感数据,但我仍然不希望我的缩小代码看起来太明显而无法修改。

一直在尝试 gulp-minify 和 gulp-uglify,但要么我对它们的使用有误,要么它们不能满足我的需要。

需要: - 函数重命名 - 变量重命名 - 字符串混淆(至少防止字符串乍一看是人类可读的) - 不超过存储需求的 2 倍

建议的方法、线索、插件是什么?

提前致谢,

到目前为止,最有效的(在我的例子中)是通过管道传输以下代码,它只应用字符旋转:

    function obfuscate(text, key, n = 126) {
        // return String itself if the given parameters are invalid
        if (!(typeof(key) === 'number' && key % 1 === 0)
            || !(typeof(key) === 'number' && key % 1 === 0)) {
            return text.toString();
        }

        var chars = text.toString().split('');

        for (var i = 0; i < chars.length; i++) {
            var c = chars[i].charCodeAt(0);

            if (c <= n) {
                chars[i] = String.fromCharCode((chars[i].charCodeAt(0) + key) % n);
            }
        }

        return chars.join('');
    },

    function defuse(text, key, n = 126) {
        // return String itself if the given parameters are invalid
        if (!(typeof(key) === 'number' && key % 1 === 0)
            || !(typeof(key) === 'number' && key % 1 === 0)) {
            return text.toString();
        }

        return obfuscate(text.toString(), n - key);
    }

试试这个:Javascript Obfuscator。 据我所知,将混淆后的代码还原成原始代码几乎是不可能的。

您可以考虑 gulp-javascript-obfuscator。这是一个节点模块,版本 ^1.1.5 对我来说效果很好。它还可以选择使用以下代码进行缩小:

// Imports ...
obfuscator    = require('gulp-javascript-obfuscator') 

// ... Other code 

gulp.src('my_file.js')
.pipe(obfuscator({compact:true}))
.pipe(gulp.dest('dist'));

你说的这些需求都是transformationsJscrambler提供的。但是,它是一个商业工具。