使用php对js进行混淆加密,具体方法如下:
<?php //js路径 $jsPath = __DIR__.'/assets/js/*'; //不需要压缩的JS $exclude = array( 'jQuery.ui.position.min.js', 'easy_validator.pack.js', 'easydialog.min.js', 'jquery.ad-gallery.js', 'jquery.autocomplete.js', 'jquery.bgiframe.min.js', 'jquery.fancybox-1.3.4.pack.js', 'jquery.min.js', 'jquery.mousewheel-3.0.4.pack.js', 'jquery.uploadify.js', 'jquery.validationEngine-zh_CN.js', 'jquery.validationEngine.js', 'exportting.js', 'highcharts.js', 'jquery.bgiframe.min.js', ); //js混淆加密并更换名称 foreach(glob($jsPath) as $filePath) { $fileName = array_pop(explode('/',$filePath)); if( !in_array($fileName,$exclude) ) { $content = file_get_contents($filePath); //js混淆 $params = array( 'code' => $content, 'operate' => 'uglify', ); $response = remote::post($params); if( $response['status'] == true) { //js加密 $params = array( 'operate' => 'pack', 'code' => $response['text'], ); $response = remote::post($params); if( $response['status'] == true) { $text = $response['text']; file_put_contents($filePath,$text); //更换js文件名 $id = uuid(false).'.js'; $newPath = str_replace($fileName,$id,$filePath); rename($filePath,$newPath); error_log("{$filePath}======>{$newPath}\n", 3, "log.txt"); } } } else { $id = uuid(false).'.js'; $newPath = str_replace($fileName,$id,$filePath); rename($filePath,$newPath); error_log("{$filePath}======>{$newPath}\n", 3, "log.txt"); } sleep(1); } class remote { public static $timeout = 30; const HTTP_OK = 200; const HTTP_FAIL = 401; const HTTP_ERROR = 500; public static function post($params=array()) { $paramss = ''; $headers[] = 'Accept application/json, text/javascript, */*; q=0.01'; $headers[] = 'Content-Type application/x-www-form-urlencoded; charset=UTF-8'; $headers[] = 'Accept-Language zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3'; $user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:20.0) Gecko/20100101 Firefox/20.0'; $ch = curl_init('http://tool.lu/js/ajax.html'); curl_setopt($ch,CURLOPT_HTTPHEADER, $headers); curl_setopt($ch,CURLOPT_REFERER,'http://tool.lu/js/'); curl_setopt($ch,CURLOPT_USERAGENT,$user_agent); curl_setopt($ch,CURLOPT_TIMEOUT,self::$timeout); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); if(!empty($params)) { curl_setopt($ch,CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_POSTFIELDS,$params); } $response = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); switch($status) { case self::HTTP_OK: case self::HTTP_FAIL: $json = json_decode($response, true); break; case self::HTTP_ERROR: default: $json = null; break; } curl_close($ch); return $json; } } function uuid( $more = true, $admin = false ) { if ( $more ) { return uniqid( md5( mt_rand() ), true ); } else { if ( $admin ) return uniqid( "zzz", false ); return uniqid( create_guid_section( 3 ), false ); } } function create_guid_section( $characters ) { $return = ""; for ( $i = 0; $i < $characters; $i++ ) { $return .= dechex( mt_rand( 0, 15 ) ); } return $return; }