@winner-fed/js-obfuscator
v1.0.0
Published
混淆指定 JS 文件,支持 CLI 与 API
Downloads
23
Maintainers
Readme
@winner/js-obfuscator
混淆指定 JavaScript 文件,支持 CLI 与 API。基于内置的 lib/obfuscator.js(javascript-obfuscator)。
要求:Node.js >= 14
安装
npm install @winner/js-obfuscator本地开发可在本目录执行:
npm linkCLI
js-obfuscator <文件> [选项]| 参数 / 选项 | 说明 |
| --- | --- |
| <文件> | 待混淆的 JS 文件路径 |
| -o, --output <路径> | 输出路径;省略则覆盖原文件 |
| -h, --help | 显示帮助 |
示例:
# 覆盖原文件
js-obfuscator dist/app.js
# 输出到新文件
js-obfuscator src/config.js -o dist/config.js
# 不安装,直接跑
node bin/cli.js src/config.js -o dist/config.jsAPI
const {
obfuscate,
obfuscateFile,
DEFAULT_OPTIONS,
JavaScriptObfuscator
} = require('@winner/js-obfuscator')obfuscate(sourceCode, options?)
混淆源码字符串,返回混淆后的代码。
const code = obfuscate('var x = 1; console.log(x);')obfuscateFile(inputPath, options?)
混淆文件并写入磁盘。
| 字段 | 类型 | 默认 | 说明 |
| --- | --- | --- | --- |
| output | string | 原路径 | 输出路径,省略则覆盖原文件 |
| write | boolean | true | 是否写入文件 |
| 其余字段 | object | — | 传给混淆引擎,与默认配置合并 |
返回值:{ input, output, code }
// 覆盖原文件
obfuscateFile('dist/app.js')
// 写到新文件
const result = obfuscateFile('src/config.js', {
output: 'dist/config.js'
})
console.log(result.output)
// 只拿混淆结果,不写盘
const { code } = obfuscateFile('src/a.js', { write: false })自定义选项
传入的选项会与 DEFAULT_OPTIONS 合并:
obfuscate(sourceCode, {
compact: true,
selfDefending: false
})
obfuscateFile('app.js', {
output: 'app.obf.js',
controlFlowFlattening: false
})默认混淆配置
{
compact: true,
controlFlowFlattening: true,
controlFlowFlatteningThreshold: 0.75,
deadCodeInjection: true,
deadCodeInjectionThreshold: 0.5,
numbersToExpressions: true,
simplify: true,
selfDefending: true,
shuffleStringArray: true,
splitStrings: true,
stringArrayThreshold: 0.75,
unicodeEscapeSequence: true
}完整选项说明见 javascript-obfuscator。
目录结构
obfuscator/
├── bin/cli.js # CLI 入口
├── index.js # API 入口
├── lib/obfuscator.js # 混淆引擎
└── package.json