简体中文

JavaScript 代码混淆,在线免费

无需注册即可混淆 JavaScript:粘贴代码,选择预设,复制受保护的结果。程序的行为不变,但变量名、字符串和结构都被改写,阅读、复制和修改的成本大大提高。

无需账号

免费开始

在线工具可保护 32 KB 以内的代码,并可在选择套餐前试用全部选项,包括付费选项。

在线粘贴、选择预设、复制。
npm 命令行用于构建和 CI。
Windows在本机处理整个文件夹。
使用方法

四步在线混淆 JavaScript

工具界面为英文;引号中是按钮上的原文。

  1. 粘贴代码到左侧面板,或用「Upload File」上传(.js 或 .txt 文件)。
  2. 选择预设:「Standard」「Balanced」或「Maximum」。每个付费选项都标有在预览之外使用所需的套餐。
  3. 点击「Obfuscate」。结果下方会列出哪些选项生效、哪些没有效果。
  4. 复制或下载结果(「Copy」或「Download」),发布前先在你的应用中测试。

打开在线混淆工具 ›

各预设的作用

  • Standard:重命名变量,移动并编码字符串,压缩输出。与 CLI 的 --preset standard 相同。
  • Balanced:增加短变量名、深度混淆、代码重排、Flat Transform 和字符串加密。
  • Maximum:启用单文件脚本可用的全部选项,包括运行时防护。
代码的变化

行为相同,代码不同

本混淆器的真实输出:变量名被替换,字符串被移入数组并编码。两个版本运行结果相同。

混淆前
function isLicensed(user) {
  var plan = user.plan;
  if (plan === "pro" || plan === "team") {
    return user.key !== "TRIAL-KEY";
  }
  return false;
}
混淆后(为便于阅读已格式化)
var _$_2476=["\x70\x72\x6F","\x74\x65\x61\x6D",
  "\x54\x52\x49\x41\x4C\x2D\x4B\x45\x59"];
function isLicensed(b)
{
	var a=b.plan;
	if(a=== _$_2476[0x0]|| a=== _$_2476[0x1])
	{
		return b.key!== _$_2476[0x2]
	}
	return false
}

在文件中已经搜不到 TRIAL-KEY。启用「Encrypt Strings」后,字符串连编码形式都不会出现——效果见 JavaScript 加密页面(英文)。

整个项目

在构建流程中混淆 JS

混淆已经构建并压缩好的 bundle,而不是源代码。没有账号时,CLI 在你的电脑上执行免费选项:不上传任何内容,也没有大小限制。付费选项通过云端服务执行。

npm install --save-dev javascriptobfuscator-com
npx javascriptobfuscator-com --input dist --output dist-protected

支持 Rollup、esbuild、Rspack、Parcel 和 Gulp 插件;Node.js 代码可用 --target node(详见英文 CLI 页面)。整个文件夹以及 HTML、PHP、ASP、JSP 中的 JavaScript,可以使用 Windows 桌面版。

发布之前

混淆做不到的事

  • 不能隐藏密钥。浏览器里的 API 密钥照样能被读到,请放在服务器端。
  • 不能替代服务器端校验。谁运行代码,谁就能控制它。
  • 务必测试混淆后的副本,并保留其他代码会调用的名称(公开 API、框架回调)。
  • 不要发布 source map:它会还原原始名称。
套餐

公开价格,以美元按月计

套餐价格包含
Free0 USD在线工具(32 KB 以内)、不限量的 CLI 免费选项、有限额的 API;重命名和字符串编码。
Basic29 USD更大的文件、压缩、深度混淆和代码重排。
Corporate49 USD更高额度、全局名称重命名和死代码插入。
Enterprise99 USD最高额度、字符串加密和 Flat Transform。

限额和选项详情见价格页面(英文)。

常见问题

关于 JavaScript 混淆器

混淆器免费吗?

免费。在线工具无需账号,可保护 32 KB 以内的代码,所有选项都可试用。没有账号时,npm CLI 在你的电脑上执行免费选项,不上传代码,也没有大小限制。高级选项的套餐每月 29 美元起。

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

在浏览器中运行的代码总能被分析。我们用 webcrack 等工具实测过:字符串常常能被还原,但原始变量名一个都恢复不了。混淆让理解和复用代码的成本大大提高,但它不是安全屏障,也不能用来隐藏密钥。 反混淆实测(英文)

混淆会让代码变慢或变大吗?

重命名标识符会让代码变小。字符串表、加密和控制流变换会让代码变大,启动时可能增加一些开销。请用你自己的代码测量大小和加载时间。

我的代码会被发送到服务器吗?

在线工具会。没有账号时,npm CLI 在你的电脑上执行免费选项,不上传任何内容;付费选项使用云端服务。Windows 桌面版的 Local Standard 模式也能离线保护简单的 ES5 文件。

用你自己的代码试试

粘贴任意 JavaScript,选择预设,比较结果。无需注册。