混淆主要涉及两种思路:安全
a.经过正则替换实现的混淆器;ide
b.经过语法树替换实现的混淆器。工具
第一种实现成本低,可是效果也通常,适合对混淆要求不高的场景。第二种实现成本较高,可是更灵活,并且更安全,更适合对抗场景。网站
2.1 jascriptobfascator
包含在线版和桌面版,试用了下效果还行。编码
桌面版:spa
2.2 Uglifyjs(开源)blog
uglifyjs是一个开源的js 压缩工具,主要用于压缩,混淆功能并不强。这ip
Uglify混淆主要使用了如下方法(AST指抽象语法树):
字符串解析成AST
解析AST,计算出做用域、变量名等
提供遍历AST的方法,找到你想要修改的节点
提供把AST打印成源代码的功能
提供美化代码的功能
提供定位某个word位置的功能作用域
2.3 jshsman字符串
jshaman是一个商业级工具,看了不少社区的评论,这个目前是最好的,能够在线无偿使用,也能够购买商业版。
地址:http://jshaman.com/
网站很干净,没什么烦人的广告,用起来挺清爽。
2.4 jsfuck
jsfuck 是一个开源的js 混淆工具,原理比较简单,其实就是经过特定的字符串加上下标定位字符,再由这些字符替换源代码,从而实现混淆。
官网:http://www.jsfuck.com/,混淆功能看上去比较强大,可是本质上我认为是一种编码,并且它让会文件体积增大不少。对于太多的代码不能混淆,混淆后会出错。
建议:若是要作代码压缩,建议使用Uglifyjs,若是是为了安全性,作js代码混淆,建议使用jshaman。