前端js代码多文件混淆


相关知识讲解链接 https://blog.csdn.net/qq_24935119/article/details/88577092

对于前端开发中的代码安全性一直是一个不可忽视的问题,前段时间公司就要求我们把我们小程序端的代码再进行混淆。看了很多网址,说的不是很明白,因此也就出了这篇文章和大家分享。

1:首先分享一下一个插件链接:https://github.com/javascript-obfuscator/javascript-obfuscator。
我用的就是这个javascript-obfuscator插件,这个插件使用教程是对单个文件进行混淆加密。

2:相对的插件工具链接:https://www.obfuscator.io/

混淆前:
混淆后:
是不是很好用,这个工具就是基于javascript-obfuscator进行混淆的。但是我们开发过程中常常并不是说把一个js进行混淆就ok了,需要把全量包的js进行混淆。

3:我使用uniapp开发的小程序,需要将编译过后的小程序代码再进行混淆,代码里包含多个js,不同的文件夹下,所以我就在想,用最简单的遍历文件的方式进行混淆代码。

4:首先需要在本机全局安装 npm install javascript-obfuscator -g
直接上代码:进入文件夹下控制台,输入 node obfuscator.js即可进行混淆代码

index.json

{
    "compact": false,
    "controlFlowFlattening": true,
    "controlFlowFlatteningThreshold": 1,
    "numbersToExpressions": true,
    "simplify": true,
    "shuffleStringArray": true,
    "splitStrings": true,
    "stringArrayThreshold": 1
}

index.js

// 检索的相对文件夹
const relativePath = '../unpackage/dist/dev/mp-weixin'
// 不需要混淆的js或文件夹
const exitFile = ['node_modules', 'index.js', 'app.js', 'common']


var fs = require('fs')
var process = require('child_process');
var readDir = fs.readdirSync(relativePath);


// 需要存在的js
const czFile = []

var filePath = relativePath
var arr = new Array()
readFile(readDir, filePath)
// 读取相对路径下的所有文件
function readFile(readDir, filePath) {
    if (readDir.length > 0) {
        for (var i = 0; i < readDir.length; i++) {
            scannerFile(readDir[i], filePath)
        }
    }
}
// 扫描文件进行检索出js文件进行混淆
function scannerFile(file, filePath) {
    console.log("file-----" + file);
    var readdirpath = ""
    if (filePath == './') {
        readdirpath = filePath + file
    } else {
        readdirpath = filePath + "/" + file
    }
    if (exitFile.indexOf(file) < 0) {
        console.log('-->Start entering FS');
        fs.stat(readdirpath, (err, data) => {
            if (err) {
                console.log(err);
            } else {
                if (data.isDirectory()) {
                    console.log('-->isDirectory:' + file);
                    var readChildDir = fs.readdirSync(readdirpath);
                    console.log(readChildDir);
                    readFile(readChildDir, readdirpath)
                } else {
                    console.log('-->isNotDirectory:' + file);
                    if (file.indexOf('.js') >= 0 && file.indexOf('.json') < 0) {
                        // 开始混淆代码
                        console.log('-->Start confusing code:' + file);
                        var cmd = ' javascript-obfuscator ' + readdirpath + ' --config index.json --output ' + readdirpath;
                        process.exec(cmd, function(error, stdout, stderr) {
                            console.log("error:" + error);
                            console.log("stdout:" + stdout);
                            console.log("stderr:" + stderr);
                        });
                        arr.push(readdirpath)
                    } else {
                        console.log('Non-folder - Non-js code :' + file);
                    }
                }
            }
        })

    } else {
        console.log('-->skip------------');
    }
}

使用方式:

 

 

 

 


————————————————
版权声明:本文为CSDN博主「背负你的星辰」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40358970/article/details/112952264


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM