已更新9月 2026
Basic hex-string encoding (light obfuscation, not encryption). Anyone can reverse it.
如何使用JavaScript 混淆器
- 粘贴您的 JavaScript - 工作的、经过测试的代码(开发后最后进行混淆)。
- 复制混淆的输出并将其替换为可读版本。
- 保留原始源 - 混淆的文件是您无法维护的构建工件。
- 彻底测试 - 依赖于名称的模式和评估可能会在激进的变换下崩溃。
JavaScript 混淆器是什么?
JavaScript 混淆器故意重写代码以抵抗人类阅读:标识符变成无意义的符号,字符串被编码,控制流变得混乱——而程序仍然以相同的方式运行。它超越了压缩(其扰乱是大小的副作用),使逆向工程变得非常乏味。
诚实的框架:混淆是一种威慑,而不是加密。浏览器最终必须执行逻辑,因此坚定的分析师会使用调试器和时间来执行它。混淆带来的是摩擦——足以阻止随意的复制粘贴盗窃并提高克隆成本——而不是保密。
关于JavaScript 混淆器
粘贴您的 JavaScript 并获取混淆版本 - 重命名标识符、编码字符串、重构流程 - 功能相同,可读性大大降低。
合法用途:提高客户端业务逻辑(小部件、游戏、必须发送到浏览器的许可组件)的复制成本、隐藏琐碎提取的字符串常量(端点、格式字符串 - 不是秘密),以及满足需要代码保护的许可或合同条款。预算的权衡是:混淆的代码运行得更慢、更大,堆栈跟踪变得不可读(保留原始代码以供调试),一些激进的转换可能会破坏依赖于函数名称或评估模式的代码 - 始终测试输出。
硬边界:任何真正秘密的东西 - API 密钥、凭证、安全检查 - 都必须存在于服务器端。混淆是大海捞针;大海捞针仍在大海捞针。客户端验证,无论是否经过混淆,始终可以通过直接调用 API 来绕过。
常见问题解答
它阻止了随意复制并提高了逆向工程成本——仅此而已。浏览器必须执行逻辑,因此确定的分析最终总是会成功。想想“玻璃门上锁”:诚实的人不会进来。
否 - 密钥必须到达网络层,无论源代码多么混乱,DevTools 都会一键读取它。秘密属于服务器端,通过您自己的 API 进行代理。没有任何客户端技术可以改变这一点。
缩小缩小(可读性损失是一种副作用,并且在结构上很大程度上是可逆的);混淆故意最大化阅读难度(字符串编码、流程扁平化)并降低大小/速度。不同的目标,常常结合在一起。
在某种程度上——字符串解码和流间接增加了开销,通常是个位数的百分比,但在激进的设置下更糟。基准热路径;当速度很重要时,混淆敏感部分而不是整个包。
您保留原始源和映射(混淆器可以发出保持私有的源映射)。直接调试混淆的文本是故意的痛苦——这就是产品的工作原理。