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

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

本说明文档译自:
http://dean.edwards.name/packer/usage/

使用说明:

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

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

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

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

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

// 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 (;;;)
三个“;” (分号)将被当成一个单行注释,比如:

;;; alert("TEST!");

上面的代码在压缩时将被移除。

平台(Platforms)

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

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

在线 Javascript 压缩:
http://dean.edwards.name/packer/

下载地址:
http://joliclic.free.fr/php/javascript-packer/telechargement.php?id=2&action=telecharger

关于 Artlover

有多年 web 开发经验,擅长领域 PHP / MySQL / CSS / Javascript / Zend Framework ,期望:在分享中共同成长。
此条目发表在 PHP 分类目录,贴了 , , , , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*


*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>