js混淆

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


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

你可能感兴趣的:(js混淆)