js混淆工具--开源项目
• UglifyJS: https://github.com/mishoo/UglifyJS2
• terser: https://github.com/terser/terser
• javascript-obfuscator: https://github.com/javascript-obfuscator/javascript-obfuscator
• jsfuck: https://github.com/aemkei/jsfuck
• AAEncode: https://github.com/bprayudha/jquery.aaencode
• JJEncode: https://github.com/ay86/jEncrypt
Uglifyjs(开源)
uglifyjs是一个开源的js 压缩工具,主要用于压缩,混淆功能并不强。
Uglify混淆主要使用了以下方法(AST指抽象语法树):
字符串解析成AST
解析AST,计算出作用域、变量名等
提供遍历AST的方法,找到你想要修改的节点
提供把AST打印成源代码的功能
提供美化代码的功能
提供定位某个word位置的功能
terser
为什么选择terser?
uglify-es
is no longer maintained and uglify-js
does not support ES6+.
terser
is a fork of uglify-es
that mostly retains API and CLI compatibility with uglify-es
and uglify-js@3
.
javascript-obfuscator
important:
Only obfuscate the code that belongs to you.
It is not recommended to obfuscate vendor scripts and polyfills, since the obfuscated code is 15-80% slower (depends on options) and the files are significantly larger.
jsfuck
jsfuck 是一个开源的js 混淆工具,原理比较简单,其实就是通过特定的字符串加上下标定位字符,再由这些字符替换源代码,从而实现混淆。
官网:http://www.jsfuck.com/,混淆功能看上去比较强大,但是本质上我认为是一种编码,而且它让会文件体积增大很多。对于太多的代码不能混淆,混淆后会出错。
AAEncode
用法:使用方式不合适,需要在javaScript中嵌入其语法
HTML
<textarea id='demo'>alert('Hello, World!');</textarea>
javaScript
var demo = $('#demo').aaencode();
console.log(demo);
JJEncode
偏向于加密
js混淆--在线混淆工具
• https://obfuscator.io/
• https://www.sojson.com/jscodeconfusion.html
• http://www.jshaman.com/protect.html
• http://www.freejsobfuscator.com/
• https://www.daftlogic.com/projects-online-javascript-obfuscator.htm
• http://beautifytools.com/javascript-obfuscator.php
jshsman
jshaman是一个商业级工具,看了很多社区的评论,这个目前是最好的,可以在线免费使用,也可以购买商业版。
地址:http://jshaman.com/
网站很干净,没什么烦人的广告,用起来挺清爽。
js混淆--商业服务
• https://javascriptobfuscator.com/
• https://jscrambler.com/
• http://stunnix.com/
总结
建议:如果要做代码压缩,建议使用Uglifyjs/terser,如果是为了安全性,做js代码混淆,建议使用jshaman。
另外 单纯的本地文件加密:https://juejin.cn/post/6844904154436124686(优点:在编译阶段完成加密,不需要在工程外进行加密)
参考链接:
https://blog.csdn.net/weixin_38927522/article/details/107919946
https://zhuanlan.zhihu.com/p/88300966
网友评论