我想做一个JavaScript应用程序,不是开源的,因此我希望学习如何可以混淆我的JS代码?这可能吗?


当前回答

你试过香蕉脚本吗?它生成高度压缩且完全不可读的代码。

其他回答

你可以随心所欲地混淆javascript源代码,但它总是可以通过要求所有源代码实际运行在客户端机器上进行逆向工程…我能想到的最好的选择是用服务器端代码完成所有的处理,而javascript所做的所有客户端代码都是向服务器本身发送处理请求。否则,任何人都将始终能够跟踪代码正在执行的所有操作。

有人提到base64是为了保证字符串的安全。这是个糟糕的主意。Base64可以立即被那些想要对你的代码进行反向工程的人识别出来。他们要做的第一件事就是解编码,看看是什么。

我可以推荐Patrick J. O'Neil的JavaScript Utility。它可以模糊/紧凑和压缩,它似乎很擅长这些。也就是说,我从未尝试将它集成到任何类型的构建脚本中。

至于混淆和缩小,我不太喜欢前者。它使调试不可能(错误在第一行…“等等,只有一行”),而且他们总是要花时间打开行李。但如果你需要…好。

我建议先用YUI压缩机之类的东西缩小,然后用http://www.javascriptobfuscator.com/之类的东西将所有字符串和数字转换为十六进制值

这样,代码就会变得几乎不可能被理解,我认为在这个阶段,黑客重新执行你的代码所花费的时间要比他从头重写的时间要多。重写和克隆是你无法停止的。毕竟我们是自由人!

你不能保护客户端代码:只需在谷歌Chrome上按F12,暂停javascript执行,你就会得到所有的字符串,即使是那些加密的。美化它和重命名变量,你会得到几乎原始的代码。

如果你正在编写服务器端javascript(即NodeJS),害怕有人入侵你的服务器,并想让黑客的工作更加困难,给你更多的时间来取回你的访问权限,那么使用javacript编译器:

你需要在高级编译中使用闭包编译器,因为它是唯一重命名所有变量的工具,即使这些变量在多个文件/模块中使用。但它有一个问题:它只有在你用它的编码风格写的时候才能工作。

我很惊讶没有人提到谷歌的闭包编译器。它不只是缩小/压缩,它分析找到并删除未使用的代码,并重写以最大限度地缩小。它还可以进行类型检查,并对语法错误发出警告。

JQuery最近从YUI压缩器切换到闭包编译器,并看到了“坚实的改进”