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>

     关键词:dojo  ant  custom_rhino.jar rhino javascript混淆

      三、使用dojo compressor + ant

       dojo是个非常经典的开源web开发框架,值得学习。dojo的混淆是基于custom_rhino.jar,custom_rhino.jar是基于mozilla的java脚本解析器rhino,jdk6.0就使用rhino做脚本解析。

        单个文件的压缩可以这样做,用命令行进入custom_rhino.jar目录执行下面的命令         java -jar custom_rhino.jar -c infile.js > outfile.js

       如果项目中有很多js文件,这样就很不方便了,可以写个ant脚本,ant很好很强大。

      目录结构如下:

       下面贴下我一个同事写的扩展:

       builde.xml

     

<?xml version="1.0"?>

<project name="jscompress" basedir="." default="reload">

	

	<property name="js.dir" value="js"/>

	<property name="lib.dir" value="lib"/>

	<property name="build.dir" value="build"/>

	

	<path  id="master-classpath">

		<fileset dir="${lib.dir}">

			<include name="*.jar"/>

		</fileset>

	</path>

	

	<target name="prepare">

		<mkdir dir="${build.dir}"/>

	</target>

	

	<target name="build" depends="prepare">

		<copy todir="${build.dir}">

			<fileset dir="${js.dir}">

				<include name="**"/>

			</fileset>

		</copy>

	</target>



	<!--=========added for compress js=================-->

	<target name="compress" depends="build">

	  <java classname="org.mozilla.javascript.tools.shell.Main"

		fork="true">		

	    <arg line="-f garfield_compress.js"/>

	    <classpath>

	      <path refid="master-classpath"/>

	    </classpath>

	  </java>

	</target>



</project>

 

js脚本

load("buildUtil.js");

//

//mycontents=buildUtil.readFile("infile.js","utf-8")

//filecontents=buildUtil.optimizeJs("infile.js",mycontents,"/*copyright*/",true)

//buildUtil.saveUtf8File("kaka.js",filecontents.replace(//n/g,""))

//

var js_src_path=java.io.File("js");

var compress_file_callback=function(jsfile){

    print( jsfile);

    var myfilename=jsfile.getName();

    var now_filename=jsfile.getPath();

    if(myfilename.match(/.js$/)){

	    var mycontents=buildUtil.readFile(jsfile.getPath());

	    mycontents=buildUtil.optimizeJs(now_filename,mycontents,"",true);

	    mycontents=mycontents.replace(//n/g,"");

	    buildUtil.saveUtf8File(now_filename+".compressed",mycontents);

	    jsfile.renameTo(new java.io.File(now_filename+".uncompressed"));

	    java.io.File(now_filename+".compressed").renameTo(new java.io.File(now_filename));

    }

}

var walk_directory=function(dir){

    if(dir.isDirectory()&&dir.getName().match(/^dojo/)==null){

	var file_list=dir.listFiles()

	for(var i=0;i<file_list.length;i++){

	    var myfile=file_list[i]

	    if(myfile.isFile()){

		compress_file_callback(myfile)

	    }else{

		walk_directory(myfile)

	    }

	}

    }	

}



walk_directory(js_src_path);

      其中用到了dojo的几个辅助方法,需要可以留言找我。代码比较多我就不贴了。扩展后对于代码发布很方便。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值