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


当前回答

我已经使用Jasob多年了,它无疑是最好的混淆器。 它有一个高级的用户界面,但仍然直观和易于使用。 它还可以处理HTML和CSS文件。

使用它的最好方法是给所有私有变量加上下划线之类的前缀,然后使用排序功能将它们组合在一起,并将它们作为混淆的目标进行检查。

用户仍然可以查看您的源代码,但是当您的私有变量从_sUserPreferredNickName转换为。

该引擎将自动统计目标变量的数量,并优先考虑它们以获得最大的压缩。

我不是为雅各布工作,我从推销他们中得不到任何东西,只是提供一些友好的建议。 缺点是它不是免费的,而且有点贵,但与其他选择相比还是值得的——“免费”选项甚至无法相提并论。

其他回答

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

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

非开源的基于javascript的应用程序是相当愚蠢的。Javascript是一种客户端解释语言。混淆不是什么保护…

JS混淆通常是为了减少脚本的大小,而不是“保护”它。如果你不希望你的代码是公开的,Javascript不是正确的语言。

市面上有很多工具,但大多数都有“压缩器”(或“迷你器”)的名字。

与大多数其他答案相反,我建议反对YUI压缩机;你应该使用谷歌闭包。

不是因为它压缩更多,但主要是因为它会捕捉javascript错误,如a = [1,2,3,];这让IE失去了控制。

我正在使用闭包编译器实用程序的java脚本混淆。它减少了代码,并为混淆提供了更多的选项。 此实用程序可在谷歌代码在以下URL: 闭包的工具

但是现在我听到很多关于UglifyJS的消息。你可以在闭包编译器和UglifyJS之间找到各种比较,其中Uglify似乎是赢家。 UglifyJS:一种可以与闭包媲美的快速Node.js压缩器

很快我就给了UglifyJS机会。

解释型语言的问题在于,你要发送源代码才能让它们工作(除非你有一个字节码的编译器,但话说回来,反编译是相当简单的)。

因此,如果您不想牺牲性能,您只能对变量和函数名进行操作,例如。用a, b…aa、ab……或者a101 a102等等。当然,尽可能多地删除空间/换行符(这就是所谓的JS压缩器所做的)。 如果您必须实时加密和解密字符串,那么混淆字符串将会对性能造成影响。加上一个JS调试器可以显示最终值…