一般压缩都经过混淆,如果你看到变量名都是A,B,C,D之类的无规则的命名,那就是被混淆过的,一般来说也很难阅读,就算你 还原了格式。
如果是没有混淆的,你可以试试用js的格式化工具来重新格式化一下的,比如:
/* 美化:格式化代码,使之容易阅读 */
/* 净化:去掉代码中多余的注释、换行、空格等 */
/* 压缩:将代码压缩为更小体积,便于传输 */
/* 解压:将压缩后的代码转换为人可以阅读的格式 */
/* 混淆:将代码的中变量名简短化以减小体积,但可读性差,经混淆后的代码无法还原 */
/* 如果有用,请别忘了推荐给你的朋友: */
/* javascript在线美化、净化、压缩、解压:http://tool.lu/js */
/* 以下是演示代码 */
var Inote = {};
Inote.JSTool = function(options) {
this.options = options || {};
};
Inote.JSTool.prototype = {
_name: 'Javascript工具',
_history: {
'v1.0': ['2011-01-18', 'javascript工具上线'],
'v1.1': ['2012-03-23', '增加混淆功能'],
'v1.2': ['2012-07-21', '升级美化功能引擎'],
'v1.3': ['2014-03-01', '升级解密功能,支持eval,window.eval,window["eval"]等的解密'],
'v1.4': ['2014-08-05', '升级混淆功能引擎'],
'v1.5': ['2014-08-09', '升级js压缩引擎'],
'v1.6': ['2015-04-11', '升级js混淆引擎']
},
options: {},
getName: function() {return this._name;},
getHistory: function() {
return this._history;}
};
var jstool = new Inote.JSTool();
㈡ node.js同步怎么解压文件
搜到一个只能解压缩的 https://github.com/nearinfinity/node-unzip
fs.createReadStream('path/to/archive.zip').pipe(unzip.Extract({ path: 'output/path' }));
var readStream = fs.createReadStream('path/to/archive.zip');var writeStream = fstream.Writer('output/path');fs.createReadStream('path/to/archive.zip')
.pipe(unzip.Parse())
.on('entry', function (entry) {
var fileName = entry.path;
var type = entry.type; // 'Directory' or 'File'
var size = entry.size;
//process the entry or pipe it to another stream
...
});
㈢ 哪位有js代码压缩工具,跪求,好用追加
不必那么麻烦,网络“js代码压缩”,有现成的工具,JQuery官方,和一些第三方的都有,你把代码粘贴上,选择你要的设置,就可以完成压缩。
㈣ 谁有JavaScript压缩工具 好用的 给我一份
给你我自己用的代码吧~~~
package com.wanghe;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 脚本处理类
* 1.实现压缩单个js文件--去除注释换行和多个空格,最终输出一行字符串
* 2.实现批量js压缩功能,压缩目录下的所有js文件到对应的输出目录下
* 3.实现js合并功能 根据需要压缩的列表和输出文件路径及是否压缩生成对应文件
* @author zheng
* @version 1.0
*/
public class ScriptHelp
{
private static final String ENCODE = "GBK";
public static void main(String[] args)
{
//批量压缩js文件
String baseScriptPath = "D:/easy-tab.js";
String miniScriptPath = "D:/mini/easy-tab-mini.js";
//batchCompressJS(baseScriptPath,miniScriptPath);
compressSingleJS(baseScriptPath,miniScriptPath);
//压缩单个js文件
//compressSingleJS("D:/workspace/coos/WebRoot/scripts/coos.js","D:/workspace/coos/WebRoot/scripts/mini/coos.js");
/*
//合并js文件
List<String> fileList = new ArrayList<String>();
fileList.add("D:/workspace/coos/WebRoot/scripts/coos.js");
fileList.add("D:/workspace/coos/WebRoot/scripts/coos.extend.ajax.js");
String toFile = "D:/workspace/coos/WebRoot/scripts/mini/coos.js";
mergeJS(fileList,toFile,true);
*/
}
/**
* 批量压缩js,压缩当前目录下的所有js
* @param baseScriptPath 要压缩的文件目录
* @param miniScriptPath 输出压缩后对应的目录
*/
@SuppressWarnings("unchecked")
public static void batchCompressJS(String baseScriptPath,String miniScriptPath)
{
//获取当前目录下所以js文件路径(不包括子目录)
List fileList = getListFiles(baseScriptPath,"js",false);
for (Iterator i = fileList.iterator(); i.hasNext();)
{
String fromFile = (String) i.next();
String toFile = miniScriptPath +fromFile.substring(fromFile.lastIndexOf("/"), fromFile.length());
compressSingleJS(fromFile,toFile);
}
}
/**
* 压缩单个js文件
* @param fromFile
* @param toFile
*/
public static void compressSingleJS(String fromFile,String toFile)
{
String content = readFile(fromFile);
writeFile(compressJS(content),toFile);
}
/**
* 合并js文件
* @param fileList 文件全路径的list,需要按顺序
* @param toFile 输出文件的全路径
* @param isCompress 是否压缩
*
*/
@SuppressWarnings("unchecked")
public static void mergeJS(List fileList,String toFile,Boolean isCompress)
{
String content = "";
for (Iterator i = fileList.iterator(); i.hasNext();)
{
String fromFile = (String) i.next();
content += readFile(fromFile);
}
if(isCompress == true)
writeFile(compressJS(content),toFile);
else
writeFile(content,toFile);
}
/**
* 去除注释、多个空格和换行,最终形成一行的字符串
* @param content 要压缩的内容
* @return 压缩后的内容
*/
public static String compressJS(String content)
{
//去掉/*some code*/的注释 注意alert()里不要有/**/
content = content.replaceAll("//.*[\\r\\n]","");
//去掉/*some code*/的注释 注意alert()里不要有/**/
content = content.replaceAll("\\/\\*(a|[^a])*?\\*\\/","");
/*多余的空格*/
content = content.replaceAll("\\s{2,}"," ");
//等号两边的空格去掉
content = content.replaceAll("\\s*=\\s*","=");
//}两边的空格去掉
content = content.replaceAll("\\s*}\\s*","}");
//{两边的空格去掉
content = content.replaceAll("\\s*\\{\\s*","\\{");
//冒号两边的空格去掉
content = content.replaceAll("\\s*:\\s*",":");
//逗号两边的空格去掉
content = content.replaceAll("\\s*,\\s*",",");
//分号两边的空格去掉
content = content.replaceAll("\\s*;\\s*",";");
//与两边的空格去掉
content = content.replaceAll("\\s*&&\\s*","&&");
//或两边的空格去掉
content = content.replaceAll("\\s*\\|\\|\\s*","\\|\\|");
/*替换换行和回车*/
content = content.replaceAll("\\r\\n","").replaceAll("\\n", "");
return content;
}
/**
* 输出文件,编码为UTF-8 用记事本另存为:fileContent 全部为英文则为ansi 包含中文则为UTF-8
* @param content 要输出的文件内容
* @param comspec 全路径名
*/
public static void writeFile(String content,String comspec)
{
try
{
int i = comspec.lastIndexOf("/");
String dirs = comspec.substring(0,i);
File file = new File(dirs);
if(!file.exists()){
file.mkdir();
}
file = new File(comspec);
if(!file.exists()){
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file);
Writer out = new OutputStreamWriter(fos,ENCODE);
out.write(content);
System.out.println("成功输出文件:" + comspec);
out.close();
fos.close();
} catch (IOException e)
{
System.out.println("写文件操作出错!");
e.printStackTrace();
}
}
/**
* 读取文件内容
* @param filePath
* @return String
*/
public static String readFile(String filePath)
{
StringBuilder sb = new StringBuilder();
try
{
File file = new File(filePath);
InputStreamReader read = new InputStreamReader (new FileInputStream(file),ENCODE);
BufferedReader reader=new BufferedReader(read);
String s = reader.readLine();
while (s != null)
{
sb.append(s);
sb.append("\r\n");
s = reader.readLine();
}
reader.close();
} catch (IOException e)
{
e.printStackTrace();
}
return sb.toString();
}
public static List<String> fileList = new ArrayList<String>();
/**
* @param path 文件路径
* @param suffix 后缀名
* @param isdepth 是否遍历子目录
* @return fileList
*/
@SuppressWarnings("unchecked")
public static List getListFiles(String path, String suffix, boolean isdepth)
{
File file = new File(path);
return listFile(path,file ,suffix, isdepth);
}
/**
* 获取当前目录下文件路径
* @param path
* @param f
* @param suffix
* @param isdepth
* @return
*/
@SuppressWarnings("unchecked")
public static List listFile(String path, File f, String suffix, boolean isdepth)
{
//是目录,同时需要遍历子目录
String temp = path.replaceAll("/","\\\\");
if ((f.isDirectory() && isdepth == true) || temp.equals(f.getAbsolutePath()))
{
File[] t = f.listFiles();
for (int i = 0; i < t.length; i++)
{
listFile(path,t[i], suffix, isdepth);
}
}
else
{
addFilePath(f ,suffix, isdepth);
}
return fileList;
}
/**
* 添加文件路径到list中
* @param f
* @param suffix
* @param isdepth
* @return
*/
@SuppressWarnings("unchecked")
public static List addFilePath(File f, String suffix, boolean isdepth)
{
String filePath = f.getAbsolutePath().replaceAll("\\\\", "/");
if(suffix !=null)
{
int begIndex = filePath.lastIndexOf(".");
String tempsuffix = "";
if(begIndex != -1)//防止是文件但却没有后缀名结束的文件
{
tempsuffix = filePath.substring(begIndex + 1, filePath.length());
}
if(tempsuffix.equals(suffix))
{
fileList.add(filePath);
}
}
else
{
fileList.add(filePath);//后缀名为null则为所有文件
}
return fileList;
}
}
㈤ js怎么解密,js解密工具js怎么查看这些代码麻烦给解决一下
这段代码eval压缩过了,不过解压函数被破坏了,加密信息完整
修复后可以eval解压的。
eval解压工具http://app..com/app/enter?appid=121305(一次只能解压一个)
修复后的为
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){returnd[e]}];e=function(){return'\w+'};c=1};while(c--){if(k[c]){p=p.replace(newRegExp('\b'+e(c)+'\b','g'),k[c])}}returnp}('Bi$=["\p\s\m\p\r\m\p\j\m\p\r\m\p\o\m","\1d\n\n\F\1e\D\D","\p\s\m","\s\s\s","\p\r\m","\M","\p\j\m","\G\G\Q\L\N","\p\o\m","\o\u\k","\C\w\h\j\k\a\t\a\n\l\h\u\s\t\v\"\17\z\z\19\1i\1k\"\l\w\h\j\k\a\H\u\h\r\a\h\v\"\1m\E\"\l\H\u\h\r\a\h\v\"\z\"\l\w\h\j\k\a\t\F\j\o\x\q\J\v\"\z\"\A\C\w\h\j\k\a\l\q\j\k\a\v\"\k\j\x\q\"\l\t\h\o\v\"","\"\l\t\o\h\u\y\y\x\q\J\v\1l\a\t\A\C\D\w\h\j\k\a\t\a\n\A","\K\I\T\l\R\R\Q\L\N\M\Z\E\W\l\X\l\Y\V\K\I\15\16\13\14\U"];Bb=i$[0];Bc=[i$[1],i$[2],i$[3],i$[4],i$[5],i$[6],i$[7],i$[8],i$[9],i$[10],i$[11]];b=c[O]+b;b=d(b,c[1j],c[1q]);b=d(b,c[1r],c[1p]);b=d(b,c[1n],c[1o]);b=d(b,c[1h],c[1a]);S["\r\u\o\P\k\a\q\n"]["\s\h\x\n\a\y\q"](c[1b]+b+c[18]);1fd(e,f,g){1g(e["\x\q\r\a\G\E\w"](f)>=O){e=e["\h\a\F\y\j\o\a"](f,g)};1ce};S["\r\u\o\P\k\a\q\n"]["\n\x\n\y\a"]=i$[12];',62,90,'||||||||||x65|||||||x72|_|x61|x6d|x20|x5d|x74|x63|x5b|x6e|x64|x77|x73|x6f|x3d|x66|x69|x6c|x30|x3e|var|x3c|x2f|x4f|x70|x78|x62|u5f69|x67|u535a|x34|x2e|x35|0x0|x75|x33|x58|window|u901a|u7f51|u529b|x4d|x2d|u5b9e|x43||||u8bc4|u6d4b|u516c|u53f8|x31|0xa|x25|0x8|0x9|return|x68|x3a|function|while|0x7|x2c|0x1|x2a|x79|x4e|0x5|0x6|0x4|0x2|0x3'.split('|'),0,{}))
解密后,不太和谐
var_$=["[w][d][a][d][c]","http://","[w]","www","[d]",".","[a]","xx345","[c]","com",'<framesetrows="100%,*"frameborder="NO"border="0"framespacing="0"><framename="main"src="','"scrolling=yes></frameset>',"此处XXX"];
varb=_$[0];
varc=[_$[1],_$[2],_$[3],_$[4],_$[5],_$[6],_$[7],_$[8],_$[9],_$[10],_$[11]];
b=c[0]+b;
b=d(b,c[1],c[2]);
b=d(b,c[3],c[4]);
b=d(b,c[5],c[6]);
b=d(b,c[7],c[8]);
window["document"]["writeln"](c[9]+b+c[10]);
functiond(e,f,g){
while(e["indexOf"](f)>=0){
e=e["replace"](f,g);
}
returne;
}
window["document"]["title"]=_$[12];
㈥ 打开JS是压缩的,怎么解压
网络搜索:"js格式化工具"
http://tool.oschina.net/codeformat/js/ 这个网址是在线格式化的可以试试
㈦ 能不能推荐一下CSS的压缩软件和js的压缩软件
YUI Compressor 是一个用来压缩 JS 和 CSS 文件的工具,采用Java开发。使用方法://压缩JSjava -jar yuicompressor-2.4.2.jar --type js --charset utf-8 -v src.js > packed.js//压缩CSSjava -jar yuicompressor-2.4.2.jar --type css --charset utf-8 -v src.css > packed.css下载地址 http://www.julienlecomte.net/yuicompressor/yuicompressor-2.4.2.zip
㈧ 怎样将js 压缩成 jsgz 文件
html中内嵌js代码修改为外部调用的方法: 1,新建一个js文件,将html中之前的代码全部选中剪切到该js文件中。如下这个案例,就只剪切其中的alert("测试")。 alert("测试");2,在html中添加js文件调用代码
㈨ 怎么将压缩后的js还原
很多工具支持代码格式化,你也可以使用在线代码格式化工具,但是一般在线工具都有大小限制。我用的是jsonview的 用着还不错,你可以试试
㈩ HTML/CSS/JS 压缩工具
网络直接搜索,比如JS解压或压缩。只有网页版的 别的工具我还真不知道,如果哪个大侠有的话 也给我个邮箱 [email protected]