面向 Web 的现代 JavaScript 混淆器。别再交付源代码。
守护你的构建。
import{showPaywall as e,startExport as t}from"./ui.js";export default function(r){return r.plan!=="pro"?e("export"):r.exportsThisMonth>=50?e("limit"):t(r.id)}if(!sy){sy=1;Dw=0;xj=()=>Dw=Dw+1|0;mK=(gx,ak)=>gx[B]("")[s](((V9,PW)=>r((V9[e](0)>126||V9[e](0)<32?V9[e](0):32+(V9[e](0)-32-(PW*542029+ak+m)%95+9215)%95))))[t]("");r=""[({}+"")[5]+({}+"")[1]+([][0]+"")[1]+(!1+"")[3]+(1/0+"")[6]+(!0+"")[1]+([][0]+"")[0]+({}+"")[12]+({}+"")[13]+({}+"")[1]+(!0+"")[1]][(1/0+"")[2]+(!0+"")[1]+({}+"")[1]+"m276"[0]+"2C"[1]+"3h"[1]+(0/0+"")[1]+(!0+"")[1]+"69C"[2]+({}+"")[1]+([][0]+"")[2]+([][0]+"")[3]];c=(!0+"")[1]+(!1+"")[4]+([][0]+"")[8]+(!0+"")[2]+({}+"")[12]+({}+"")[4];k=({}+"")[12]+({}+"")[1]+([][0]+"")[6]+({}+"")[5]+(!1+"")[1]+(1/0+"")[6];P=(!1+"")[3]+({}+"")[1]+(!0+"")[1]+({}+"")[13];s="6m1"[1]+(0/0+"")[1]+"618p"[3];t=({}+"")[10]+({}+"")[1]+(1/0+"")[3]+([][0]+"")[6];B=(!1+"")[3]为什么选择 AfterPack
泄露的密钥不再是明文。
默认的 light 预设会编码字符串字面量。
一行命令即可安装。
任何框架、任何打包工具、任何运行时。开发环境不受影响。
100 KB 只需 0.2 秒。
1.5 MB 的 wasm,运行在 128 MB 的 Cloudflare Worker 里,你的或我们的。
每次构建都是不同的程序。
对上一个版本有效的补丁,在这个版本上不再适用。
压缩后的 JavaScript 并没有受到保护。
压缩只是重命名和挤压。你的字符串、接口和逻辑原封不动地发布出去——压缩后的代码包就是你的源码。
仅做压缩
- 密钥、邮箱和接口地址都是明文
- 逻辑完好,命名依然有意义
- 可被改写:改掉一处判断,重新发布文件
- 扫描器和模型可以一路读下去
AfterPack
- 密钥、邮箱和接口地址已编码
- 逻辑被改写,命名不再透露任何信息
- 补丁撑不过下一次构建
- 密钥和邮箱的特征匹配不上了
JavaScript 混淆的适用场景。
Free 以单一预设保护整个代码包。Pro 版则把更高强度的预设对准真正关键的代码行。
保护付费墙检查
破解者第一个寻找的目标。针对某一次构建的补丁,对下一次毫无价值。
隐藏定价与权限逻辑
套餐、配额、功能开关。还原它们的成本,必须高于一次发布本身。
保护不得不随包发布的密钥
提取成本高,轮换成本低。真正的授权判定仍然属于你的服务器。
控制意外提交的密钥
对扫描器不再是明文。误发布的名称、开关和接口地址同样不可读。任何密钥都请轮换。
阻止 JavaScript 补丁工具
用正则给你的代码打补丁的扩展和脚本,每次构建都会失去锚点。
隐藏早期功能与实验
功能开关和尚未发布的分支,不再像一份预告下次上线内容的更新日志。
运行在你自己的 Cloudflare Worker 中的混淆器。
@afterpack/wasm 是编译为 WebAssembly 的 AfterPack。放进你自己的 Worker,就能按请求重塑 JavaScript。
按请求,或者按轮换窗口
每个响应都可以是新的形态。每次运行都消耗 Worker CPU,够用时就按时间窗口缓存。
Pro 就是同一次调用
给 @afterpack/wasm 传入一个 key,同一次调用就会在 AfterPack 云端以 Pro 运行。如果 key 或云端不可用,构建会直接失败,而不会悄悄退回 Free。
云端 API 文档基于 AfterPack 混淆器构建
同一个引擎也是一个 npm 包。在 Worker、CDN 钩子或你自己的产品里运行 @afterpack/wasm;传入 Pro 密钥,同一次调用就会在 AfterPack 云端以 Pro 运行。
- 免费用 @afterpack/wasm 跑在你自己的 Worker 里。任何内容都不会离开你的账户。
- Pro同一次调用,加上一个 key:构建会在 AfterPack 云端以 Pro 运行;若无法完成,构建会直接失败,而不会悄悄退回 Free。 云端 API 文档
- 即将推出Workers for Platforms 版 AfterPack:由 AfterPack 提供的 Workers 封装,无需安装任何包,也没有 worker 到 worker 的请求。 路线图
| 1 | import { obfuscate } from "@afterpack/wasm"; |
| 2 | |
| 3 | export default { |
| 4 | async fetch(request) { |
| 5 | const source = await request.text(); |
| 6 | const result = await obfuscate({ path: "app.js", source }, { preset: "hard" }); |
| 7 | return new Response(result.bytes, { |
| 8 | headers: { "content-type": "application/javascript" }, |
| 9 | }); |
| 10 | }, |
| 11 | }; |
三步完成 JavaScript 混淆。
AfterPack 在你的打包工具之后运行,作用于生产构建。
选择你的框架
看看混淆器对你的构建做了什么。
一次构建会生成一份 Protection Map:显示哪些内容经过了变换、变换了多少,以及薄弱环节在哪里。
hard 区域是一段带密钥的许可证校验。该密钥不会以可读文本的形式进入代码包。上方的标记是一条 Pro 指令:把真正关键的那几行调高,其余保持轻量。
AfterPack 与其他 JavaScript 混淆器的对比。
速度、体积和 CI 可靠性由我们的测试脚本实测。其余部分均为各厂商自行公开的说明,AfterPack 也不例外。
左右滑动查看全部六款工具
| AfterPack0.1.0 | javascript-obfuscator5.6.0 | js-confuser2.1.3 | JSDefender2.12.0 | ByteHide1.0.5 | JScrambler | |
|---|---|---|---|---|---|---|
| 基于我们的测试脚本实测· 2026 年 9 月 | ||||||
| 构建耗时真实生产环境 bundle,实测耗时 | 381 毫秒 | 4.6 秒慢 12 倍 | 10.6 秒慢 28 倍 | 1.5 秒 慢 4.0 倍 | 3.0 秒 慢 7.9 倍 | — |
| 输出体积gzip 压缩后,相对已压缩 bundle 的倍数 | 4.1× | 11.1× | 13.9× | 1.9× 默认设置,4/5 可运行 | 3.5× 默认设置,5/5 可运行 | — |
| 仍能运行的最强预设无头(headless)CI,5 个样本 | extreme最强预设,5/5 | mediumhigh 预设在 CI 中卡死,0/5 | high最强预设,5/5 | 无 默认设置下 4/5 | default 全部开关开启:0/5 | — |
| 依据厂商文档与公开资料 | ||||||
| 价格与免费层级用于保护一次生产构建 | 免费,本地运行无限制付费版本起价 49 美元/月 | 免费,开源19 美元/月的 VM 附加功能 | 免费,开源 | 仅按报价收费 | 需预约演示 | 仅按报价收费 |
| 框架插件官方一方插件,内置于构建流程 | 13 个一方插件 | 社区维护的加载器 | 仅提供 Node API | 未找到相关支持 | 厂商宣称支持插件 | CLI + API |
| 可在边缘运行Cloudflare Workers,WASM | 支持WASM + Workers | 未公开说明 | 未公开说明 | 否 | 否 | 否 |
| CSP 安全的输出不使用 eval(),不使用 new Function() | 是默认如此 | 未公开说明 | 未公开说明 | 未公开说明 | 未公开说明 | 未公开说明 |
| 反混淆结果的延续性针对一次构建编写,运行在下一次构建上 | 延续率低于 6%† 每次构建生成新的操作码表 | 会延续 固定形态:webcrack、restringer | 存在公开文章 我们尚未复现 | 会延续 固定流水线,依据其自身文档 | 会延续 固定形态:webcrack | 会延续 公开反混淆工具,固定前导代码 |
于 2026 年 9 月在同一台机器(Apple M 系列,Node 22)上,基于真实的已压缩生产包测得。每个工具都使用其输出仍能在无头 CI 中正常运行的最强设置;例外情况见提示说明。 我们如何测量
AfterPack 定价。
Free 版在你自己的机器上运行,不受限制。Pro 版构建运行在 AfterPack 云端,按兆字节计量。
Pro
- 包含 Free 的全部内容
- 每月 3 GB Pro 版构建额度
- 超出这 3 GB 之后才按 $0.12/MB 计费
- 5 个项目
- 按区域设置的指令
- 比较加固与自完整性校验
- 已保存的 Protection Map 与构建历史
- 构建与代码包分析
- 优先邮件支持
本地引擎永久免费,没有构建次数限制,也无需账户。Pro 版增加了云端构建、按区域设置的指令,以及两种强化转换。
接下来做什么。
我们发布快,回应也快。问题和建议请到 GitHub Discussions,缺陷请到 GitHub Issues,其他一切请联系我们。
泄漏检测器
在你的构建产物里标记出邮箱地址和已知的密钥模式。Pro 增加熵值检测与通知。
网络传输伪装
为你的 API 请求和响应生成逐次构建的编解码器,作用于网络传输层。
托管 source map
无需随包发布 .map 文件,也能还原生产环境的调用栈。
在 Workers for Platforms 上运行 AfterPack
每次请求生成新形态,无需安装任何东西,绝不会离开 Cloudflare。
常见问题。
AfterPack 能做什么、需要多少费用,以及它不会宣称什么。

