🥷
JS 代码混淆
变量名混淆、字符串加密、控制流扁平化、死代码注入,让代码难以阅读
加入控制流扁平化与死代码注入,体积约翻倍
输入
164 字节 · 160 字符
输出
0 字节 · 耗时 0 ms
- 混淆的目标是「难以阅读」,不是「无法还原」。任何混淆过的 JS 都能被格式化、重命名与逐步调试后还原,只是要花时间。
- 控制流扁平化把顺序执行的代码改写成 while + switch 的状态机,是最有效的手段之一,代价是体积膨胀与运行变慢。
- 死代码注入会插入永不执行的分支,按比例随机插入;比例越高越难读,但体积和耗时也越大。
- 「自我防护」会让代码在被格式化或改写后拒绝运行,属于 javascript-obfuscator 的 selfDefending 能力,但会显著增加调试难度——上线前务必回归测试。
- 「反调试」会检测 DevTools 并干扰调试,可能误伤正常用户(例如打开了控制台的页面),请谨慎开启。
- 「重命名全局变量」会破坏跨文件的引用:如果代码依赖全局变量被其他脚本访问,请关闭它。
- 含 ES Module(import / export)的代码无法在 eval 环境中执行,请先打包成 IIFE 再混淆。
- 混淆在浏览器本地的 Web Worker 中完成,代码不会离开你的设备;大文件耗时较长,可随时点「取消」。
使用说明 / 算法说明
- 混淆的目标是「难以阅读」,不是「无法还原」。任何混淆过的 JS 都能被格式化、重命名与逐步调试后还原,只是要花时间。
- 控制流扁平化把顺序执行的代码改写成 while + switch 的状态机,是最有效的手段之一,代价是体积膨胀与运行变慢。
- 死代码注入会插入永不执行的分支,按比例随机插入;比例越高越难读,但体积和耗时也越大。
- 「自我防护」会让代码在被格式化或改写后拒绝运行,属于 javascript-obfuscator 的 selfDefending 能力,但会显著增加调试难度——上线前务必回归测试。
- 「反调试」会检测 DevTools 并干扰调试,可能误伤正常用户(例如打开了控制台的页面),请谨慎开启。
- 「重命名全局变量」会破坏跨文件的引用:如果代码依赖全局变量被其他脚本访问,请关闭它。
- 含 ES Module(import / export)的代码无法在 eval 环境中执行,请先打包成 IIFE 再混淆。
- 混淆在浏览器本地的 Web Worker 中完成,代码不会离开你的设备;大文件耗时较长,可随时点「取消」。
同类工具 · 代码保护与凭证