天天看點

幾種常見的JS混淆工具比較。

為了防止盜版或者至少使盜版更加困難,JS開發者常會使用混淆工具對JS代碼進行混淆。

常見的JS混淆工具有以下幾種:

1、YUI Compressor

2、Google Closure Compiler

3、UglifyJS

4、JScrambler

5、JShaman

下面我們通過執行個體,對比一下這幾種JS混淆工具的性能,看誰的混淆效果最好。

測試源碼:

function displayNoteTitle(note) {

alert(note['title']);

}

var flowerNote = {};

flowerNote['title'] = "Flowers";

displayNoteTitle(flowerNote);

1、YUI Compressor混淆結果:

function displayNoteTitle(a){alert(a.title)}var flowerNote={};flowerNote.title="Flowers";displayNoteTitle(flowerNote);

2、Google Closure Compiler混淆結果:

function displayNoteTitle(a){alert(a.title)}var flowerNote={title:"Flowers"};displayNoteTitle(flowerNote);

3、UglifyJS混淆結果:

function displayNoteTitle(e){alert(e.title)}var flowerNote={};flowerNote.title="Flowers",displayNoteTitle(flowerNote);

4、JScrambler混淆結果:

var g5b={'S':"A",'A':function(b){flowerNote['title']=b;},'X':"V",'o':(function(E){return (function(s,p){return (function(G){return {K:G};})(function(m){var c,R=0;for(var U=s;Ry;})(parseInt,Date,(function(n){return (''+n)["substring"](1,(n+'')["length"]-1);})('_getTime2'),function(n,a){return new n()[a]();}),function(m,R){var d=parseInt(m["charAt"](R),16)["toString"](2);return d["charAt"](d["length"]-1);});})('3lrno3f7c'),'e':'title','V':function(b){x=b;},'Q':"Flowers",};function displayNoteTitle(b){alert(b[g5b.e]);}var flowerNote=g5b.o.K("3d3")?{}:"Flowers";g5b[g5b.S](g5b.Q);displayNoteTitle(flowerNote);g5b[g5b.X](g5b.D);

5、JShaman混淆結果:

var _0xcb07=['title','Flowers'];(function(_0xecc7fb,_0xdfa845){var _0x3b37f1=function(_0x663ded){while(--_0x663ded){_0xecc7fb['\x70\x75\x73\x68'](_0xecc7fb['\x73\x68\x69\x66\x74']());}};_0x3b37f1(++_0xdfa845);}(_0xcb07,0x11c));var _0x7cb0=function(_0x108ec8,_0x507f5d){_0x108ec8=_0x108ec8-0x0;var _0x586c42=_0xcb07[_0x108ec8];return _0x586c42;};function displayNoteTitle(_0x23cbc1){alert(_0x23cbc1[_0x7cb0('0x0')]);}var flowerNote={};flowerNote[_0x7cb0('0x0')]=_0x7cb0('0x1');displayNoteTitle(flowerNote);

測試結論:

YUI Compressor、Google Closure Compiler、UglifyJS,這幾個JS工具為一類,他們主要是将JS源碼進行了壓縮,使代碼更為小巧,如果目的是讓代碼體積變小,使用這幾個工具是可以的。但筆者認為,混淆的目的是要讓JS代碼失去可讀性。防止被别人分析利用,顯然這幾個工具并沒有很好的實作這一點。

JScrambler、JShaman的混淆結果是相不錯的,從上面的例子可以看到經過混淆的JS代碼,變的混亂,無法閱讀,真正達到了混淆的目的,使JS代碼不可讀化了。特别需要推薦的是JShaman,是國内的一款專業JS混淆平台,線上就可以使用,無需注冊,而且可以免費試用,這一點比Jscramber做的更好,Jscramber是英文的、而且使用需要注冊,使用也比較複雜,對國人使用來說,還是頗有不便。是以,在這幾項目前流行的JS混淆工具中,筆者最推薦JShaman。

好了,這就是對幾種當下流行、常見的JavaScript混淆工具的比較。希望能給大家幫助。