NodeJS中调用JShaman接口上传Zip文件,一次性完成加密Zip中的所有JS文件。
const request = require('request');
const fs = require('fs');
//上传的文件的路径,修改为自己的zip文件路径
var fileToUpload = './file.zip';
var url = 'http://jshaman.com:800/upload_zip_file/';
//参数
var formData = {
compact: ['true'],
controlFlowFlattening: ['true'],
stringArray: ['true'],
stringArrayEncoding: ['false'],
disableConsoleOutput: ['false'],
debugProtection: ['false'],
deadCodeInjection: ['false'],
time_range: ['false'],
time_start: ['20240118'],
time_end: ['20240118'],
vip_code: ['此处替换成你的JShaman VIP码'],
domainLock: [''],
reservedNames: [''],
zip_file: fs.createReadStream(fileToUpload)
};
//上传文件
request.post({
url: url,
formData: formData
}, (err, response, body) => {
if (err) {
console.error('Error uploading file:', err);
} else {
console.log('File uploaded successfully:', body);
//成功标识
if(JSON.parse(body).message.indexOf("[^_^]") == -1){
console.log("文件上传未成功");
return;
}
var token;
//查询令牌/token
token = JSON.parse(body).content
console.log("上传处理状态查询令牌:", token)
var stop_flag = setInterval(function() {
request.post({
url: "http://jshaman.com:800/uploaded_zip_process/",
//JSON格式查询
headers: {
'Content-Type': 'application/json'
},
//参数:vip码、查询令牌
body: JSON.stringify({
vip_code: "此处替换成你的JShaman VIP码",
upload_time_token: token
})
}, (err, response, body) => {
if (err) {
console.error('Error uploading file:', err);
} else {
console.log(body);
//上传处理成功标识,可以下载了
var ready_to_download_flag = body.indexOf("[^_^]");
if (ready_to_download_flag != -1) {
//可下载的ZIP文件名
var zip_to_download = body.substring(ready_to_download_flag + "[^_^]".length);
//下载地址
var download_url = "http://www.jshaman.com:800/download/?id=" + zip_to_download;
console.log("下载地址:", download_url);
//停止查询
clearInterval(stop_flag);
}
}
});
}, 3000);
}
});
运行到最后,会得到一个Zip下载地址,里面是所有加密过的JS文件。
注意:
1、用于混淆加密JS的参数必须完整提供,不可缺少,参数值true为启用、false为禁止对应的功能。
2、代码中的VIP码需替换为你从JShaman获取的VIp码。