我想做一个JavaScript应用程序,不是开源的,因此我希望学习如何可以混淆我的JS代码?这可能吗?
当前回答
我已经使用Jasob多年了,它无疑是最好的混淆器。 它有一个高级的用户界面,但仍然直观和易于使用。 它还可以处理HTML和CSS文件。
使用它的最好方法是给所有私有变量加上下划线之类的前缀,然后使用排序功能将它们组合在一起,并将它们作为混淆的目标进行检查。
用户仍然可以查看您的源代码,但是当您的私有变量从_sUserPreferredNickName转换为。
该引擎将自动统计目标变量的数量,并优先考虑它们以获得最大的压缩。
我不是为雅各布工作,我从推销他们中得不到任何东西,只是提供一些友好的建议。 缺点是它不是免费的,而且有点贵,但与其他选择相比还是值得的——“免费”选项甚至无法相提并论。
其他回答
我可以推荐Patrick J. O'Neil的JavaScript Utility。它可以模糊/紧凑和压缩,它似乎很擅长这些。也就是说,我从未尝试将它集成到任何类型的构建脚本中。
至于混淆和缩小,我不太喜欢前者。它使调试不可能(错误在第一行…“等等,只有一行”),而且他们总是要花时间打开行李。但如果你需要…好。
解释型语言的问题在于,你要发送源代码才能让它们工作(除非你有一个字节码的编译器,但话说回来,反编译是相当简单的)。
因此,如果您不想牺牲性能,您只能对变量和函数名进行操作,例如。用a, b…aa、ab……或者a101 a102等等。当然,尽可能多地删除空间/换行符(这就是所谓的JS压缩器所做的)。 如果您必须实时加密和解密字符串,那么混淆字符串将会对性能造成影响。加上一个JS调试器可以显示最终值…
我正在使用闭包编译器实用程序的java脚本混淆。它减少了代码,并为混淆提供了更多的选项。 此实用程序可在谷歌代码在以下URL: 闭包的工具
但是现在我听到很多关于UglifyJS的消息。你可以在闭包编译器和UglifyJS之间找到各种比较,其中Uglify似乎是赢家。 UglifyJS:一种可以与闭包媲美的快速Node.js压缩器
很快我就给了UglifyJS机会。
混淆永远不会真正起作用。对于任何真正想要获取您代码的人来说,这只是一个减速带。更糟糕的是,它使您的用户无法修复错误(并将修复文件发送给您),并且使您更难在该领域诊断问题。这是浪费你的时间和金钱。
和律师谈谈知识产权法以及你的法律选择。“开源”并不意味着“人们可以阅读源代码”。相反,开源是一种特定的许可模型,允许自由使用和修改您的代码。如果您不授予这样的许可证,那么复制您的代码的人就是违法的,(在世界上大多数地区)您可以通过法律手段阻止他们。
真正能保护代码的唯一方法是不发布它。将重要的代码移到服务器端,并让公共Javascript代码对其进行Ajax调用。
点击这里查看我关于混淆器的完整回答。
我建议先用YUI压缩机之类的东西缩小,然后用http://www.javascriptobfuscator.com/之类的东西将所有字符串和数字转换为十六进制值
这样,代码就会变得几乎不可能被理解,我认为在这个阶段,黑客重新执行你的代码所花费的时间要比他从头重写的时间要多。重写和克隆是你无法停止的。毕竟我们是自由人!
推荐文章
- 使用jQuery改变输入字段的类型
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用jQuery以像素为整数填充或边距值
- 检查是否选择了jQuery选项,如果没有选择默认值
- Next.js React应用中没有定义Window
- 如何重置笑话模拟函数调用计数之前,每次测试
- 如何强制一个功能React组件渲染?
- 在javascript中从平面数组构建树数组
- 将Dropzone.js与其他字段集成到现有的HTML表单中
- 如何在AngularJS中观察路由变化?
- JavaScript DOM删除元素
- 将dd-mm-yyyy字符串转换为日期
- Javascript复选框onChange
- Javascript函数前导bang !语法
- 如何在页面上遍历所有DOM元素?