JS批量加密:NodeJS中调用JShaman接口上传Zip文件

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码。

相关推荐
fengfuyao9852 分钟前
海浪PM谱及波形的Matlab仿真实现
开发语言·matlab
xiaoye-duck22 分钟前
C++ string 底层原理深度解析 + 模拟实现(下)——面试 / 开发都适用
开发语言·c++·stl
xiaoqi92237 分钟前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233221 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
Hx_Ma161 小时前
SpringMVC框架提供的转发和重定向
java·开发语言·servlet
期待のcode2 小时前
原子操作类LongAdder
java·开发语言
烬头88213 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas1363 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠3 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
2601_949833393 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter