js代码压缩和混淆

文章介绍了如何使用Terser库对JavaScript文件进行压缩,以及如何使用javascript-obfuscator库对文件进行混淆,包括读取、处理和保存操作的过程。
摘要由CSDN通过智能技术生成

js代码压缩:
npm install terser -g
执行代码:
const fs = require(‘fs’);
const path = require(‘path’);
const Terser = require(‘terser’);

// 源文件夹路径,包含要压缩的 JS 文件
const sourceDir = ‘./’;
// 目标文件夹路径,用于存放压缩后的 JS 文件
const targetDir = ‘./jsm/’;

// 确保目标文件夹存在
if (!fs.existsSync(targetDir)) {
fs.mkdirSync(targetDir, { recursive: true });
}

// 遍历源文件夹下的所有文件
fs.readdirSync(sourceDir).forEach(file => {
const filePath = path.join(sourceDir, file);
const stats = fs.statSync(filePath);

// 只处理文件,忽略子文件夹
if (stats.isFile()) {
const extname = path.extname(file);
// 只处理 .js 文件
if (extname === ‘.js’) {
const targetFilePath = path.join(targetDir, file);

  // 读取文件内容  
  const fileContent = fs.readFileSync(filePath, 'utf8');  

  // 使用 Terser 压缩文件内容  
  (async () => {  
    const minified = await Terser.minify(fileContent);  
    const minifiedContent = minified.code;  

    // 将压缩后的内容写入目标文件  
    fs.writeFileSync(targetFilePath, minifiedContent);  
    console.log(`Compressed ${filePath} to ${targetFilePath}`);  
  })();  
}  

}
});
js代码混淆:
npm install javascript-obfuscator --save-dev
执行代码:
const fs = require(‘fs’);
const path = require(‘path’);
const JavaScriptObfuscator = require(‘javascript-obfuscator’);

// 指定要混淆的文件夹路径
const folderPath = ‘./path/to/your/js/files’;

// 遍历文件夹中的所有文件
function traverseDirectory(dirPath) {
const files = fs.readdirSync(dirPath);

files.forEach(file => {
const filePath = path.join(dirPath, file);
const stats = fs.statSync(filePath);

if (stats.isDirectory()) {  
  // 如果是目录,递归遍历  
  traverseDirectory(filePath);  
} else if (path.extname(file) === '.js') {  
  // 如果是 .js 文件,则混淆它  
  obfuscateFile(filePath);  
}  

});
}

// 混淆单个文件
function obfuscateFile(filePath) {
fs.readFile(filePath, ‘utf8’, (err, data) => {
if (err) {
console.error(Error reading file ${filePath}:, err);
return;
}

const obfuscatedCode = JavaScriptObfuscator.obfuscate(data, {  
  compact: true,  
  controlFlowFlattening: true,  
  controlFlowFlatteningThreshold: 0.75,  
  numbersToExpressions: true,  
  simplify: true,  
  shuffleStringArray: true,  
  splitStrings: true,  
  stringArrayThreshold: 0.75,  
  unicodeEscapeSequence: true,  
}).getObfuscatedCode();  

fs.writeFile(filePath, obfuscatedCode, 'utf8', err => {  
  if (err) {  
    console.error(`Error writing file ${filePath}:`, err);  
  } else {  
    console.log(`File ${filePath} obfuscated successfully.`);  
  }  
});  

});
}

// 开始遍历文件夹
traverseDirectory(folderPath);

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值