混淆主要涉及兩種思路:安全
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。