后台返回的数据是gzip 加密过的,需要解压数据,如下图所示:
我们需要上图标出来的加密数据进行解密出来
1 安装 :
2 使用
Ⅱ nodejs zlib 怎么把几个压缩过的文件解压拼接
我请求管用所结束httpvar http = require("http"),
zlib = require("zlib");
function getGzipped(url, callback) {
// buffer to store the streamed decompression
var buffer = [];
http.get(url, function(res) {
// pipe the response into the gunzip to decompress
var gunzip = zlib.createGunzip();
res.pipe(gunzip);
gunzip.on('data', function(data) {
// decompression chunk ready, add it to the buffer
buffer.push(data.toString())
}).on("end", function() {
// response and decompression complete, join the buffer and return
callback(null, buffer.join(""));
}).on("error", function(e) {
callback(e);
})
}).on('error', function(e) {
callback(e)
});
}
getGzipped(url, function(err, data) {
console.log(data);
});
2. 尝试添加encoding: null给传递给选项request避免载体转换字符串并保持二进制缓冲区
3. 工作示例(使用节点请求模块)gunzips响应function gunzipJSON(response){
var gunzip = zlib.createGunzip();
var json = "";
gunzip.on('data', function(data){
json += data.toString();
});
gunzip.on('end', function(){
parseJSON(json);
});
response.pipe(gunzip);
}
全码:
4. 像@Iftah说设置encoding: null 完整例(少错误处理):request = require('request');
zlib = require('zlib');
request(url, {encoding: null}, function(err, response, body){
if(response.headers['content-encoding'] == 'gzip'){
zlib.gunzip(body, function(err, dezipped) {
callback(dezipped.toString());
}
} else {
callback(body);
}
});
Ⅲ [油猴脚本开发指南]JSZIP库压缩解压文件
JSZip库是前端实现文件压缩与解压的强大工具。通过创建JSZip实例,我们可以管理一组文件,进行添加、删除、修改操作。
实例化JSZip后,添加或更新文件及文件夹变得简单直接。file函数与folder函数提供方便的链式调用,允许在目录结构中组织文件。添加至目录的文件,实质上也存在于JSZip实例中。
使用file方法可访问文件内容,而删除文件或文件夹则可通过特定命令实现。生成zip文件时,使用generateAsync方法,注意生成的并非真实文件,而是一种内存表示。
加载Zip文件则需调用loadAsync方法,并确保使用二进制下载文件后进行解压。值得注意的是,JSZip在功能上有一定局限性,不支持加密zip、多卷zip,且仅支持UTF8编码,输出与输入zip可能不完全相同。
Ⅳ 纯js远程下载zip,实现自动解压到js所在的当前目录
这代码做起来不难,唯一的、但又能让你绝望的问题是:任何浏览器都不会允许这样的js脚本代码运行的,这属于最严重的安全隐患问题,试想想,世界上的任何一个人,只要打开某个网页,自己的电脑上就会自动被下载一个zip文件并自动解压,然后里面的说不定是什么的东西就为所欲为了,哇,世界末日的感觉啊……
对了,其实这波操作就是早期网络木马所采用的,现在各大浏览器早就已经把这漏洞补上了。