如何保护js代码呢?
对JS代码进行混淆加密,就是js代码保护的正确方法。
JS代码保护有不少产品可用,有免费开源的,也有商业的。
免费的比如uglifyjs 、ob、商业的比如jscrambler、JShaman,特别值的一提的是jshaman,不但强大,而且是国产的,是具备研发能力,有核心竞争力的国内产品,
在js代码保护领域,jscrambler是国际顶级的厂商,而国内的jshaman比它毫不逊色。
比如一段js代码:
function NewObject(prefix)
var count=0;
this.SayHello=function(msg)
count++;
alert(prefix+msg);
this.GetCount=function
return count;
var obj=new NewObject("Message : ");
obj.SayHello("You are welcome.");
用jscrambler保护后的效果:
var _0x7fb4=["\x53\x61\x79\x48\x65\x6C\x6C\x6F","\x47\x65\x74\x43\x6F\x75\x6E\x74","\x4D\x65\x73\x73\x61\x67\x65\x20\x3A\x20","\x59\x6F\x75\x20\x61\x72\x65\x20\x77\x65\x6C\x63\x6F\x6D\x65\x2E"];function NewObject(_0x633dx2){var _0x633dx3=0;this[_0x7fb4[0]]= function(_0x633dx4){_0x633dx3++;alert(_0x633dx2+ _0x633dx4)};this[_0x7fb4[1]]= function{return _0x633dx3}}var obj= new NewObject(_0x7fb4[2]);obj.SayHello(_0x7fb4[3])
用jshaman对这段代码保护后的效果:
var _0xd631a=["117.","117.","68.108.122.122.104.110.108.41.51.41.","80.102.124.41.104.123.108.41.126.108.101.106.102.100.108.39."];function _0x1ffd(str,dy_key){dy_key=9;var i,k,str2="";k=str.split(".");for(i=0;ik.length-1;i++){str2+=String.fromCharCode(k[i]^dy_key);}return str2;}function NewObject(prefix){var _array="4|0|3|1|2".split(_0x1ffd(_0xd631a[0])),_index=0;while(!![]){switch(+_array[_index++]){case 0:var _2=function(s,h){return s^h;}(672336,672336);continue;case 1:this['\x53\x61\x79\x48\x65\x6c\x6c\x6f']=function(msg){var _array2="0|1".split(_0x1ffd(_0xd631a[1])),_index2=0;while(!![]){switch(+_array2[_index2++]){case 0:_2++;continue;case 1:alert(prefix+msg);continue;}break;}};continue;case 2:this['\x47\x65\x74\x43\x6f\x75\x6e\x74']=function{return _2;};continue;case 3:_0x88g=(206733^206734)+(851355^851352);continue;case 4:var _0x88g=function(s,h){return s+h;}(503683^503681,113262^113255);continue;}break;}}var obj=new NewObject(_0x1ffd(_0xd631a[2]));obj['\x53\x61\x79\x48\x65\x6c\x6c\x6f'](_0x1ffd(_0xd631a[3]));
对js代码保护有什么用呢?
可以防止代码被他们分析、复制、盗用,也可用于很多代码检测场景,比如小游戏过审、小程序过审等等。
经过混淆加密之后,js代码得到了保护,人类很难读取,即可不逆,起码绝大多数不可逆,可以有效的起到保护代码的做用。而机器运行即不受影响,可以像保护之前一样使用。