DevToolPal
简

JavaScript 混淆

通过重命名变量、隐藏字符串和打乱控制流让 JavaScript 难以阅读,同时保持运行结果不变。

本地处理,不上传

选项

混淆强度

强度越高隐藏得越多,但代码会更大、运行更慢。

输入

0 字符 · 0 B

输出

0 字符 · 0 B

工具简介

JavaScript 混淆工具会改写脚本,让它运行效果完全不变,但人很难读懂和照搬。变量名和函数名会变成 _0x3f2a 这样无意义的标识符,字符串会移到经过编码的查找表里;强度更高时还会打乱控制流并混入无用代码。

它适合浏览器小游戏、演示页面、网页组件和授权校验等以明文 JavaScript 发布、又不希望被原样复制的场景。

使用方法

  1. 粘贴 JavaScript 代码,或打开一个 .js 文件。
  2. 选择 混淆强度:
    • 低:重命名局部名称,把字符串移到查找数组里。输出仍然较快、体积较小。
    • 中:增加字符串编码、控制流平坦化和少量无用代码。
    • 高:所有手段全力开启,结果可能大好几倍,运行也明显变慢。
  3. 只有当脚本外部没有任何地方引用它的顶层函数或变量时,才打开 重命名全局变量和函数。
  4. 如果希望结果分成多行,关闭 输出为一行。
  5. 复制或下载混淆后的代码,部署前先测试。

示例

示例代码定义了一个 greet 函数和访问计数器。以低强度混淆后,代码变成一行十六进制名称,但运行后依然输出 Hello, Ada! You have visited 1 time(s).。

混淆和压缩的区别

压缩(比如 JavaScript 与 CSS 压缩工具)会去掉空白、缩短名称,让文件更小、下载更快。混淆在体积上正好相反:它故意增加间接层,让代码更难理解。很多项目会压缩所有文件,只对少数包含核心逻辑的文件做混淆。

局限

混淆保护不了机密。浏览器能运行的东西,用户最终都能查看,所以 API 密钥和必须保密的业务规则应该留在服务器上。高强度设置还会拖慢代码,避免用在频繁执行的循环和对性能敏感的页面里。

常见问题

› 混淆会改变代码的功能吗?

不会。混淆后的脚本运行效果和原来一样,只是形式变了。不过读取自身源码或函数名的代码可能表现不同,所以上线前务必用混淆后的版本跑一遍测试。

› 混淆后的代码能还原吗?

无法完全还原,但有足够时间和耐心的人仍然能弄清它在做什么。请把混淆当作防止随手复制的门槛,绝不要用它来隐藏 API 密钥等机密。

› 什么时候该打开「重命名全局变量和函数」?

只有脚本完全独立时才打开。重命名全局名称后,HTML 属性、其他脚本或测试里按名字调用顶层函数的地方都会失效。

› 我的代码会被上传吗?

不会。混淆在浏览器里用开源的 javascript-obfuscator 库完成。