这是一个完全免费、无广告、无功能限制的在线JavaScript混淆加密工具网站,核心用于对JS代码进行不可逆混淆处理,提升代码可读性门槛,保护代码不被轻易窃取或篡改。以下从功能模块、关键特性、注意事项等方面展开介绍:
一、核心功能模块与配置说明
网站提供丰富的混淆参数配置,覆盖「代码结构混淆」「字符串保护」「调试防护」「白名单控制」等多维度,具体如下:
1. 基础混淆设置
压缩成一行:去除代码换行符,减少代码体积。
标识符混淆:可选择3种变量/函数名混淆方式:
`dictionary`:使用自定义「标识符字典」中的名称;
`hexadecimal`:生成十六进制随机名(如`0xabc123`);
`mangled`:使用极简短名称(如`a`「`b`「`c`)。
标识符前缀:为混淆后的标识符添加特定前缀(用于避免多文件全局变量冲突)。
混淆全局变量(需谨慎):开启后会混淆全局变量/函数名,但可能影响其他代码运行。
2. 代码保护功能
自我保护:加密后的代码无法被格式化,若尝试格式化会导致代码失效;开启后强制压缩成一行。
控制流平坦化(性能影响大):通过打乱代码控制流阻碍理解,阈值(0~1)越高,代码越难读但运行效率越低。
死代码注入(增加代码量):随机插入无意义但不执行的代码,提升解密难度;阈值(0~1)调节注入比例。
3. 字符串处理
字符串转换为数组:将代码中的固定字符串(如`”Hello World”`)提取到统一数组,运行时通过函数调用获取(如`_0xb0c3(‘0x1’)`),需配合其他功能使用:
打乱字符串数组位置/排序:提升数组可读性门槛;
加密字符串数组:用Base64或RC4加密(RC4更难解密但运行慢30%35%);
字符串转数组阈值:调节字符串插入数组的概率(0~1,避免频繁调用影响速度)。
分割字符串(需配合「字符串转数组」):按「分割块长度」将字符串拆分,增加破解难度。
转换Object Keys:混淆对象键名(如`{enabled: true}`→`a[_0x2ae0[‘0x0’]] = true`)。
字符串转Unicode(不建议):将字符串转为Unicode编码(如`”Hello”`→`”x48x65x6cx6cx6f”`),易解码且增加代码体积。
4. 调试防护
禁用控制台输出:重写`console.log`「`console.info`等方法,阻止调试信息输出。
禁止控制台调试(冻结浏览器):开启后若打开浏览器控制台,会触发定时器卡住页面,无法调试(支持Chrome、Firefox)。
5. 白名单与源映射
白名单域名:限制加密代码仅在指定域名下运行(子域名用`.example.com`形式)。
白名单标识符/字符串:通过正则表达式指定不混淆的变量、函数名或字符串(如`^someName`匹配所有以`someName`开头的标识符)。
Source Map(生产环境禁用):生成调试映射文件(内联或单独文件),方便本地调试,但会暴露原始代码结构。
6. 其他设置
加密种子:默认(0)每次加密结果不同;设为固定整数可保持结果一致。
运行环境:支持`Browser`「`Browser No Eval`「`Node`(当前`Browser`与`Node`处理逻辑一致)。
二、常见问题与注意事项
加密后无法运行:可能因原始代码不规范(如缺少分号、闭包写法错误)或配置错误(如混淆全局变量影响其他代码)。
安全性说明:仅能「防小白」,无法100%阻止大神逆向破解(JS需在前端运行,本质无法完全隐藏)。
代码体积变大:因插入死代码、分割字符串等保护逻辑导致。
禁止多工具叠加加密:会破坏代码结构,导致运行失败。
隐私保障:代码全程在本地处理,网站不会保存原始代码;断网后仍可使用。
无法恢复原始代码:加密是不可逆的,需妥善保存原始文件。
支持Node.js:可用于混淆Node.js后端代码。
三、工具背景
该工具基于开源项目「JavaScript Obfuscator」开发,作者为Tiago Serafim与Timofey Kachalov,归属「孟坤工具箱」(可通过页面链接访问更多工具)。
整体来看,这是一个针对JS代码保护的实用工具,适合需要提升代码可读性门槛的开发者,但需注意合理配置参数以平衡安全性与性能。
