javascript 混淆

<script type="text/JavaScript"> alimama_pid="mm_11307516_1146824_2589042"; alimama_titlecolor="0000FF"; alimama_descolor ="000000"; alimama_bgcolor="FFFFFF"; alimama_bordercolor="E6E6E6"; alimama_linkcolor="008000"; alimama_bottomcolor="FFFFFF"; alimama_anglesize="0"; alimama_bgpic="0"; alimama_icon="0"; alimama_sizecode="12"; alimama_width=468; alimama_height=60; alimama_type=2; </script> <script src="http://a.alimama.cn/inf.js" type=text/javascript> </script>

    关键词:javascript 混淆 JsObfuscator Jsmin custom_rhino.jar    

     现在基于javascript的应用越来越复杂,为了提高代码的安全性和下载速度,需要对代码进行混淆和压缩。以前研究过几天js混淆,现在项目需要又拉出来溜溜,发现不少问题。简单讨论下三种我找到的混淆方法,以及改进。   

      一、JsObfuscator 是一个可执行的混淆压缩器,主要进行变量,函数名替换,去掉注释空行换行,压缩率比较好 。有两个地方让我觉得不爽,它每次只能压缩一人文件,它还会在每个函数结束后加个“;”,这应该不符合js的语法。当然牛人可以写个程序循环处理,但不知道能不能生成自己想要得目录,不利于发布代码。可配置性差。      

     二、第二个常用的是jsmin,他又c版本和php两个版本,都是源码。像我这样做web基本把c交给老师了,最简单也得找个turbo c,好像也有人用.net给它写了个界面,还得装.net环境,c版也被pass了。       了解php开发的可以用php版了,刚好前两天学了下php,就现学现卖吧。       

1.下载 jsmin http://down.chinaz.com/soft/22926.htm       

2.把jsmin.php放在apache的htdocs目录下。      

3.写个compress.php         

<?php         

require 'jsmin.php';         

 // Output a minified version of example.js.          echo JSMin::minify(file_get_contents('1039map.js'));         

     ?>           

  4.打开http://127.0.0.1/compress.php页面就看到压缩后的代码了。     

            他直接把代码输出到页面,这有个鸟用啊,不过有源码,可以改造它的先天不良基因。      我给它加了两个方法,一个建文件夹(存放压缩后的代码),一个新建压缩文件,并改造了minify()方法。     

///创建文件夹   

  public function createdir($dir)     {       

if(file_exists($dir) && is_dir($dir)){         }        

else{          mkdir ($dir,0777);         }  

   }       

   ///创建文件 

   function creat_file($PATH,$name)     {      

$sFile = $name;       if (file_exists($PATH.$sFile)) {        creat_file();       }

else {        $fp= fopen($PATH.$sFile,"w");        fclose($fp);       }  

    return $sFile;    

}        

  //$js:压缩文件名 ,$folder :存储路径,$fileName :压缩后的文件名   

  public static function minify($js,$folder,$fileName) {     

     $jsmin = new JSMin($js);     

  $file = $jsmin->creat_file($folder,$fileName);    

   $content = $jsmin->min();        

    $fp = fopen($folder.$fileName, 'w+');   

     fwrite($fp, $content);     

    fclose($fp);       

return $jsmin->min();      }         

  调用页面代码compress.php:      

<?php      require 'jsmin.php';       

    echo JSMin::createdir("js_compress");   

  echo JSMin::minify(file_get_contents('index.js'),"js_compress/",'index.js');   

        ?>      

    当然你可以compress.php执行多个压缩 。

    未完待续。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值