安装环境
首先安装Node.js环境,然后在命令行中输入
npm install javascript-obfuscator -g
安装完成后,javascript-obfuscator就是一个独立的可执行命令了。
javascript-obfuscator -v
使用
混淆单个文件:
javascript-obfuscator input_file_name.js [options]
javascript-obfuscator input_file_name.js --output output_file_name.js [options]
javascript-obfuscator input_file_name.js --output output_folder_name [options]
javascript-obfuscator input_folder_name --output output_folder_name [options]
将单个扩展名为 .js 的输入文件混淆。
如果未使用 --output 选项指定目标路径,则混淆后的文件将保存在输入文件目录中,文件名为 INPUT_FILE_NAME-obfuscated.js。
简单使用
简单实用:
javascript-obfuscator input_file_name.js
//执行上面的指令后,会生成input_file_name-obfuscated.js
批量操作
javascript-obfuscator ./
//采用递归的方式混淆当前目录下的所有js文件(包括子文件),在原js文件中进行修改。
javascript-obfuscator ./ -o ./data
//采用递归的方式混淆当前目录下的所有js文件(包括子文件),对原文件进行拷贝,会生成新的js文件,在新的js文件中进行修改。保存到同目录的data目录下
调用参数
-v, --version: 显示版本信息。
-h, --help: 显示帮助信息。
-o, --output: 指定输出路径。
--compact <boolean>: 是否压缩代码。
--config <string>: 指定配置文件路径。
--control-flow-flattening <boolean>: 是否对控制流进行扁平化。
--control-flow-flattening-threshold <number>: 控制流扁平化的阈值。
--dead-code-injection <boolean>: 是否进行死代码注入。
--dead-code-injection-threshold <number>: 死代码注入的阈值。
--debug-protection <boolean>: 是否启用调试保护。
--debug-protection-interval <number>: 调试保护的间隔。
--disable-console-output <boolean>: 是否禁用控制台输出。
--domain-lock '<list>': 域锁定,用于限制脚本在特定域上运行。
--domain-lock-redirect-url <string>: 域锁定重定向 URL。
--exclude '<list>': 排除的文件列表。
--force-transform-strings '<list>': 强制转换的字符串列表。
--identifier-names-cache-path <string>: 标识符名称缓存路径。
--identifier-names-generator <string>: 标识符名称生成器类型。
--identifiers-dictionary '<list>': 标识符字典列表。
--identifiers-prefix <string>: 标识符前缀。
--ignore-imports <boolean>: 是否忽略导入。
--log <boolean>: 是否记录日志。
--numbers-to-expressions <boolean>: 是否将数字转换为表达式。
--options-preset <string>: 预设选项。
--rename-globals <boolean>: 是否重命名全局变量。
--rename-properties <boolean>: 是否重命名属性。
--rename-properties-mode <string>: 属性重命名模式。
--reserved-names '<list>': 保留的名称列表。
--reserved-strings '<list>': 保留的字符串列表。
--seed <string|number>: 随机种子。
--self-defending <boolean>: 是否启用自我保护。
--simplify <boolean>: 是否简化代码。
--source-map <boolean>: 是否生成源映射。
--source-map-base-url <string>: 源映射基础 URL。
--source-map-file-name <string>: 源映射文件名。
--source-map-mode <string>: 源映射模式。
--source-map-sources-mode <string>: 源映射源模式。
--split-strings <boolean>: 是否拆分字符串。
--split-strings-chunk-length <number>: 拆分字符串的块长度。
--string-array <boolean>: 是否使用字符串数组。
--string-array-calls-transform <boolean>: 是否转换字符串数组调用。
--string-array-calls-transform-threshold <number>: 字符串数组调用转换的阈值。
--string-array-encoding '<list>': 字符串数组编码类型。
--string-array-indexes-type '<list>': 字符串数组索引类型。
--string-array-index-shift <boolean>: 是否进行字符串数组索引偏移。
--string-array-rotate <boolean>: 是否旋转字符串数组。
--string-array-shuffle <boolean>: 是否洗牌字符串数组。
--string-array-wrappers-count <number>: 字符串数组包装器数量。
--string-array-wrappers-chained-calls <boolean>: 是否允许字符串数组包装器链式调用。
--string-array-wrappers-parameters-max-count <number>: 字符串数组包装器参数最大数量。
--string-array-wrappers-type <string>: 字符串数组包装器类型。
--string-array-threshold <number>: 字符串数组阈值。
--target <string>: 目标环境。
--transform-object-keys <boolean>: 是否转换对象键。
--unicode-escape-sequence <boolean>: 是否使用 Unicode 转义序列。
Github开源:https://github.com/javascript-obfuscator/javascript-obfuscator