实际开发中,有些老的项目并非工程化的项目,如纯的jquery项目等等,如果要实现所有代码的混淆加密要如何操作呢?
- 首先
npm初始化
npm init -y
- 安装
JavaScript Obfuscator
npm install --save-dev javascript-obfuscator
- 新建index.js`
内容如下:
// index.js
const fs = require('fs');
const path = require('path');
const JavaScriptObfuscator = require('javascript-obfuscator');
// 指定要混淆的目录和文件后缀
const obfuscateDirectory = 'src';
const obfuscateFileExtensions = ['.js'];
// 混淆函数
function obfuscateFile(file) {
console.log(`Obfuscating ${file}...`);
const filePath = path.resolve(__dirname, file);
const fileContent = fs.readFileSync(filePath, 'utf8');
const obfuscationResult = JavaScriptObfuscator.obfuscate(fileContent);
fs.writeFileSync(filePath, obfuscationResult.getObfuscatedCode());
}
// 遍历目录并混淆所有 JS 文件
function obfuscateFiles(directory) {
const files = fs.readdirSync(directory);
for (const file of files) {
const filePath = path.join(directory, file);
const fileStat = fs.statSync(filePath);
if (fileStat.isDirectory()) {
obfuscateFiles(filePath);
} else if (obfuscateFileExtensions.includes(path.extname(filePath))) {
obfuscateFile(filePath);
}
}
}
// 开始混淆
obfuscateFiles(obfuscateDirectory);
- 运行
node index.js查看结果
注意代码中的const obfuscateDirectory = 'src' 对应要混淆的文件夹,初次使用,建议复制整个文件夹,再进行操作
在实际使用中,最好输出到dist目录,且要避开一些已经压缩过的代码,如*min.js降低转换时间
大致原理:遍历
src路径下的所有js文件,内容替换成混淆后内容
文章介绍了如何对非工程化的jQuery项目进行代码混淆加密,通过npm初始化,安装JavaScriptObfuscator库,然后编写脚本遍历指定目录下的.js文件进行混淆。混淆过程会将源代码替换为混淆后的版本,以提高代码安全性。注意应避免混淆已压缩的.min.js文件。
238





