我正在寻找类似此工具或类似工具: http://javascriptobfuscator.com/Javascript-Obfuscator.aspx
但是作为node.js的模块,因此您可以在发送客户端js文件之前对其进行混淆。
上面 url 中的工具做的事情很少,但最重要的是它将引号和变量名称之间的字符串更改为不可读的形式。
我尝试编写仅编码字符串的代码,但这使我的代码损坏:
var output = str.replace(/(")(([^"\\]|\\.)+)(")/gi, function(match, p1, p2, p3, p4) {
return p1 + someEncodingFunc(p2) + p4;
});
编辑:
感谢 robertklep,我找到了 Confusion 模块。它几乎做得很好。也许有人可以帮助我解决这个问题? https://github.com/uxebu/confusion/issues/1
您可以在项目页面的此代码输出中看到问题:
(function(_x24139) {
a[_x24139[0]](called[_x24139[1]](_x24139[2]));
an[_x24139[3]](_x24139[4], _x24139[5], _x24139[6]);
}).call(
this,
["property", "with", "a string literal", "other", "call", "is", "here"]
);
我需要的只是混淆数组中的这些字符串。我注意到如果字符串中有任何 utf8 字符,那么它将被混淆为\uXXXX 形式。但只有utf8。如果这也会将 ascii 混淆为\xYY 形式......基本上所有字符。
最佳答案
你为什么不试试JScrambler反而?。它不仅具有更多针对字符串和控制流的源代码转换,而且还具有一堆代码陷阱和称为“ self 防御”的运行时保护。
而且,它对我来说开箱即用。他们声称兼容所有 JS 库,目前据我所知,他们是唯一正式支持 Node.js 的解决方案:
Jscrambler Compliance Report
我认为 Uglify 不是一个好的选择。它是一个代码优化器,并不是为了保护您的代码。它确实重命名了变量和函数,但这种保护太弱,值得考虑。
关于javascript - 用于客户端文件的 Node.js 混淆工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30650299/