Benoly

[整理]javascript压缩、格式化

2014-06-03 13:15  Benoly  阅读(528)  评论(0编辑  收藏  举报

1.使用packer来压缩JS文件

packer工具在线版:http://dean.edwards.name/packer/

通过packer对js打包压缩的同时,执行Base62 encode编码后,代码变得难以阅读。

如:

eval(function(p,a,c,k,e,r){e=String;if(!\'\'.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return\'\\w+\'};c=1};while(c--)if(k[c])p=p.replace(new RegExp(\'\\b\'+e(c)+\'\\b\',\'g\'),k[c]);return p}(\'0(1);\',2,2,\'alert|123\'.split(\'|\'),0,{}))

2.还原packer压缩的JS源码

有时候,我们需要把packer压缩后的js还原成原始的可阅读的js代码,方法有很多种,毕竟,压缩后的js最终还是要在浏览器上执行的。

(1)使用浏览器内置的开发工具

http://www.cnblogs.com/52cik/p/js-unpacker.html,已说明使用方法。

(2)直接修改已打包压缩的js源文件,返回JS源文件

eval(function (p, a, c, k, e, d) {
            e = function (c) { return (c < a ? \'\' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!\'\'.replace(/^/, String)) { while (c--) d[e(c)] = k[c] || e(c); k = [function (e) { return d[e] } ]; e = function () { return \'\\w+\' }; c = 1 };
            while (c--)
                if (k[c])
                    p = p.replace(new RegExp(\'\\b\' + e(c) + \'\\b\', \'g\'), k[c]);
            /*return p*/
            /*begin 添加如下代码,直接显示p*/
            document.getElementById(\'textareaID\').innerText = p;
            /*end*/
        } (\'1(0);\', 62, 2, \'123|alert\'.split(\'|\'), 0, {}))

 (3)通过Eval执行压缩的代码,得到JS源码

有一点必须知道,压缩后的js最终还是要在浏览器上执行的,浏览器肯定认识的,那么我们可以借助eval来获取JS源码。

        function decode() {
            var code = document.getElementById(\'code\').value;
            code = code.replace(/^eval/, \'\');
            document.getElementById(\'code\').value = eval(code);
        } 

3.格式化JS

获得JS源码后,需要格式化,方便阅读。

http://www.css88.com/tool/js_beautify/

另:本文的附件中有相关js工具。

4.其他在线工具:

 http://tool.chinaz.com/js.aspx(JS混淆加密压缩)

 http://tool.oschina.net/jscompress

5.附件(JS压缩&格式化工具)

JS压缩&格式化工具

 

 

分类:

技术点:

相关文章: