这个工具做什么
本混淆器使用 acorn 解析你的代码,构建语法树,应用若干结构性变换,再用 astring 重新生成 JavaScript——整个过程都在你的浏览器中完成。你粘贴的任何内容都不会被上传到服务器。
必须说清楚这里“混淆”的含义:它是阻止随意阅读的手段,不是加密,也不是真正的安全防护。任何愿意运行并检查你的代码(或只是更耐心地阅读)的人,仍然可以还原其行为。发送到浏览器的 JavaScript 始终可以被下载并由接收方执行——任何变换都无法改变这一点。请用它来增加随意复制粘贴的难度,而不是用来保护秘密。无论是否混淆,都不要把真正的 API 密钥或凭据放进客户端 JavaScript 中。
三个级别
基础会重命名工具能够证明属于局部绑定的每一个标识符——函数参数,以及函数内部的 var/let/const 声明——依据的是真正的词法作用域分析,而非猜测。任何解析到全局或外部引用的标识符都会被有意保留原样:重命名会破坏你的代码。重新生成代码时也会去除空白和注释。
中等在基础的基础上,还会把每个作为表达式使用的字符串字面量收集到文件顶部的一个数组中,并将每次出现替换为形如 _fn(3) 的调用,通过索引查找该字符串。
激进在中等的基础上,还会把该数组中的每个字符串写成 \x/\u 转义形式,而不是普通字符,并把三条及以上的连续直线语句重写为 while(1) { switch(_i) { ... } } 调度循环,使代码结构不再是从上到下可读的。
正确性优先
每个级别的设计目标都是让生成的代码与你粘贴的原始代码运行结果完全一致。当某种结构无法被证明是安全的——例如解构模式、eval、with——工具会跳过对它的重命名,而不是冒险破坏你的程序。如果你的代码使用了 eval 或 with,会有提示告诉你重命名因此被完全跳过。
如何解读大小数据
统计栏显示输入和输出的精确字节数以及百分比变化。重命名和字符串提取通常会略微增加体积,即使代码变得更难随意阅读——混淆和压缩是两个不同的目标。
常见用途
- 在分享演示或代码片段前,让一个小脚本不那么容易被随意读懂。
- 通过对比输入输出,学习混淆器的工作原理。
- 为逻辑本身并不敏感的脚本增加一点轻度的阅读门槛。
粘贴 JavaScript 代码,选择一个级别,然后复制或下载结果。
Tiny Online Tools







