PHP 版的 Javascript 压缩混淆工具 [ Dean Edwards Packer ]


Dean Edwards 's Packer  是个非常有名的 Javascript 压缩/混淆工具,有 .NET / PERL / WSH / PHP 等几种版本, 而本文介绍的 就是Nicolas Martin 发布的 PHP 版。

使用说明:

所有声明,包括 function 函数定义,必须以分号结尾,示例代码:

Javascript: // sample code  var $input, $output;  // notice the semi-colon at the END of function declarations  onload = function() {     $input = document.getElementById("input");     $output = document.getElementById("output");     _clearAll(true); };  function _packScript() {     $output.value = pack($input.value); };  function _clearAll($focus) {     $output.value = $input.value = "";     // the "if" statement is NOT terminated with a semi-colon     if ($focus) {         $input.focus();     } };  



参数:


Encoding

设置压缩/混淆的级别:

None

    简单压缩,移除空格和注释,编码特殊字符,

Numeric (Base 10)

    所有字符将转换成数字。

Normal (Base 62)

    所有字符将转换成数字字母,这个是推荐设置。

High ASCII (Base 95)

    将获得更高的压缩比率。(文件更小)

    如果你使用这个选项,那么压缩后的代码必须使用 ISO-8859-1 编码,这是由于一个 IE 的 BUG 所致,内容页也需要同样的编码,如果你不能确定,那就使用 "Normal" 。



快速还原 (Fast Decode)

    选中此选项,将插入一小段代码(120 bytes),以使代码能够更快的还原(decode)。



特殊字符 (Special Characters)

    为了让压缩能区分全局变量和局部变量,压缩工具会将变量转换成下面的格式,由于 Javascript 并不存在确切意义上的全局变量和局部变量,我用下面的方式定义:

局部变量 Local ($)
    变量只在当前范围内有效,参数和函数内部的变量就是一个典型例子,将局部变量用 $ 标识,压缩时会截取他们的第一个字符,附加的 $ 将使截取的字符加长,数字将会被保留。

Javascript: // unpacked: function test($left, $top1, $top2, $$length) {     // do something }; // packed: function test(l,t1,t2,le){};  

注意不要让命名冲突,美元标记截取只针对局部变量。


全局变量 Private (_)
全局变量可以在整个代码中使用,用 “ _ ” (下划线)来标识,有下划线标识的全局变量将会被转换成下划线加上一个数字:

Javascript: // unpacked: var _CONSTANT = 42; function _test($left, $top1, $top2, $$length) {     return ($top1 / $top2) + _CONSTANT; }; // packed: var _0=42;function _1(l,t1,t2,le){return(t1/t2)+_0};  


调试代码 Debug Code (;;;)
三个“;” (分号)将被当成一个单行注释,比如:
Javascript: ;;; alert("TEST!");  
上面的代码在压缩时将被移除。



平台(Platforms)

压缩后的代码能够正常运行在所有支持 JavaScript 的浏览器,只有很少的 javascript 技术被用于还原代码。

有些浏览器不支持压缩,只有支持 DOM 才能正常运行,Legacy 浏览器将显示一个禁用的界面。




[本日志由 cmscn 于 2009-09-27 01:34 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 压缩
相关日志:
评论: 0 | 引用: 0 | 查看次数: 1292
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 20 字 | UBB代码 关闭 | [img]标签 关闭