如果你想在 ThinkPHP6 项目中针对特定的某个 JS 文件(例如存放解密逻辑的 decrypt.js)进行混淆,而不是混淆整个项目的代码,可以参考以下三种方式:
1. 命令行方式(最简单直接)
如果你不想配置复杂的构建环境,直接使用全局命令行工具即可。
安装工具:
bash
npm install -g javascript-obfuscator请谨慎使用此类代码。
执行混淆:
bash
# 基础混淆 javascript-obfuscator ./public/static/js/decrypt.js --output ./public/static/js/decrypt.min.js # 高强度混淆(带加密字符串和防调试) javascript-obfuscator ./public/static/js/decrypt.js --output ./public/static/js/decrypt.min.js --string-array true --string-array-encoding 'base64' --debug-protection true --self-defending true请谨慎使用此类代码。
[1]
2. 使用 Node.js 脚本批量处理(推荐)
如果你有多个指定文件,或者想在发布前自动化处理,可以写一个简单的 obfuscate.js 脚本放到项目根目录。
javascript
// obfuscate.js
const JavaScriptObfuscator = require('javascript-obfuscator');
const fs = require('fs');
// 1. 指定要处理的文件路径
const targetFiles = [
'./public/static/js/decrypt.js',
'./public/static/js/api_config.js'
];
targetFiles.forEach(file => {
const code = fs.readFileSync(file, 'utf8');
// 2. 执行混淆
const obfuscatedCode = JavaScriptObfuscator.obfuscate(code, {
compact: true,
controlFlowFlattening: true,
stringArray: true,
stringArrayEncoding: ['base64'],
identifierNamesGenerator: 'hexadecimal'
}).getObfuscatedCode();
// 3. 覆盖原文件或另存为
fs.writeFileSync(file.replace('.js', '.min.js'), obfuscatedCode);
console.log(`${file} 混淆完成!`);
});
请谨慎使用此类代码。
运行: node obfuscate.js