面向 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)}
已压缩,今天交付的代码
build/xJq9mf.js构建 #1542
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]

每次构建都是不同的形态。一张图看清哪些代码受到了保护。Rust 引擎足够小、足够快,可以跑在 Cloudflare Worker 里。

用你的助手来设置更喜欢用 CLI?
开始使用

免费本地二进制,开源。每月 10 MB Pro 云端构建免费,无需银行卡。创建账户

为什么选择 AfterPack

泄露的密钥不再是明文。

默认的 light 预设会编码字符串字面量。

一行命令即可安装。

任何框架、任何打包工具、任何运行时。开发环境不受影响。

100 KB 只需 0.2 秒。

1.5 MB 的 wasm,运行在 128 MB 的 Cloudflare Worker 里,你的或我们的。

每次构建都是不同的程序。

对上一个版本有效的补丁,在这个版本上不再适用。

一分钟看懂 AfterPack

为什么压缩后的 JavaScript 依然可读,以及当每次构建、每个请求都交付一个不同的程序时,会发生什么变化。

在 YouTube 上观看

压缩后的 JavaScript 并没有受到保护。

压缩只是重命名和挤压。你的字符串、接口和逻辑原封不动地发布出去——压缩后的代码包就是你的源码。

仅做压缩

  • 密钥、邮箱和接口地址都是明文
  • 逻辑完好,命名依然有意义
  • 可被改写:改掉一处判断,重新发布文件
  • 扫描器和模型可以一路读下去

AfterPack

  • 密钥、邮箱和接口地址已编码
  • 逻辑被改写,命名不再透露任何信息
  • 补丁撑不过下一次构建
  • 密钥和邮箱的特征匹配不上了

JavaScript 混淆的适用场景。

Free 以单一预设保护整个代码包。Pro 版则把更高强度的预设对准真正关键的代码行。

保护付费墙检查

破解者第一个寻找的目标。针对某一次构建的补丁,对下一次毫无价值。

隐藏定价与权限逻辑

套餐、配额、功能开关。还原它们的成本,必须高于一次发布本身。

保护不得不随包发布的密钥

提取成本高,轮换成本低。真正的授权判定仍然属于你的服务器。

控制意外提交的密钥

对扫描器不再是明文。误发布的名称、开关和接口地址同样不可读。任何密钥都请轮换。

阻止 JavaScript 补丁工具

用正则给你的代码打补丁的扩展和脚本,每次构建都会失去锚点。

隐藏早期功能与实验

功能开关和尚未发布的分支,不再像一份预告下次上线内容的更新日志。

运行在你自己的 Cloudflare Worker 中的混淆器。

@afterpack/wasm 是编译为 WebAssembly 的 AfterPack。放进你自己的 Worker,就能按请求重塑 JavaScript。

你的源站
可读的构建产物:checkout.js, pricing.js, auth.js
在你的 Worker 中运行
Cloudflare Worker
@afterpack/wasm
+ Pro:一次云端调用
浏览器
同样的文件,每个窗口都是新形状

你的 Worker,你的引擎

AfterPack 跑在你自己的基础设施上。没有任何东西离开你的账户。

Workers 指南

按请求,或者按轮换窗口

每个响应都可以是新的形态。每次运行都消耗 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 的请求。 路线图
worker.js
1import { obfuscate } from "@afterpack/wasm";
2
3export 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 在你的打包工具之后运行,作用于生产构建。

选择你的框架

CLI 参考

安装

为你的框架安装一个开发依赖,再加一行接入代码。

$ npm install -D @afterpack/next
Next.js 指南

照常构建

仅在生产构建时运行,除非你主动调高,否则使用 light 预设。

$ npm run build

发布

照常部署。在 Protection Map 中查看保护了哪些内容。

dist/ · 已保护
protectionMap.html · 已生成
查看 Protection Map

看看混淆器对你的构建做了什么。

一次构建会生成一份 Protection Map:显示哪些内容经过了变换、变换了多少,以及薄弱环节在哪里。

entitlements.jslight · complexity 5查看完整大小
entitlements.js 的 Protection Map。点击打开完整查看器。

hard 区域是一段带密钥的许可证校验。该密钥不会以可读文本的形式进入代码包。上方的标记是一条 Pro 指令:把真正关键的那几行调高,其余保持轻量。

看看你的网站今天泄露了什么。

这个免费扫描器像爬虫一样读取你线上的 bundle:公开的 source map、可读代码和泄露的凭据。不用 AI,也不用注册。

泄露的凭据公开的 source map技术栈可读代码

在你的终端里运行同样的扫描。无需账户。Audit 文档

打开安全扫描器

示例报告

AfterPack 与其他 JavaScript 混淆器的对比。

速度、体积和 CI 可靠性由我们的测试脚本实测。其余部分均为各厂商自行公开的说明,AfterPack 也不例外。

左右滑动查看全部六款工具

AfterPack0.1.0javascript-obfuscator5.6.0js-confuser2.1.3JSDefender2.12.0ByteHide1.0.5JScrambler
基于我们的测试脚本实测· 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/5mediumhigh 预设在 CI 中卡死,0/5high最强预设,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 云端,按兆字节计量。

永久免费

Free

$0永久

开源的 CLI 与插件。本地构建免费且无限制。

登录后可获得

需要更多?$5 即可购买 20 MB 永久有效额度。

安装
推荐

Pro

$132/月
按年结算,共 $1,590。免费送 2 个月。
组织

Enterprise

定制按合作项目

一种合作关系:优先安排你需要的开发,把私有 Pro 部署装进你自己的云环境,并与你一起梳理安全流程。

本地引擎永久免费,没有构建次数限制,也无需账户。Pro 版增加了云端构建、按区域设置的指令,以及两种强化转换。

查看完整功能对比

接下来做什么。

我们发布快,回应也快。问题和建议请到 GitHub Discussions,缺陷请到 GitHub Issues,其他一切请联系我们。

下一步

泄漏检测器

在你的构建产物里标记出邮箱地址和已知的密钥模式。Pro 增加熵值检测与通知。

下一步Pro

网络传输伪装

为你的 API 请求和响应生成逐次构建的编解码器,作用于网络传输层。

下一步Pro

托管 source map

无需随包发布 .map 文件,也能还原生产环境的调用栈。

下一步Pro

在 Workers for Platforms 上运行 AfterPack

每次请求生成新形态,无需安装任何东西,绝不会离开 Cloudflare。

查看完整路线图

登录后,产品更新会发到你的邮箱。随时可以退订。

有想法吗?来讨论路线图。

常见问题。

AfterPack 能做什么、需要多少费用,以及它不会宣称什么。

AfterPack 是一款构建后的 JavaScript 混淆工具。它接收你的工具链已经生成的代码包,并将其改写,使得无论是人还是模型,阅读或搜索它都要付出不成比例的代价。它在你的打包工具之后运行,不会修改你的源码,并且每次构建都会生成新的随机种子,因此同一份代码的两次构建在结构上完全不同。提问讨论

守护你亲手构建的东西。

对你的构建产物运行一次,看看会得到什么结果。

开始使用

本地引擎永久免费。创建账户即可每月获得 10 MB 的 Pro 云端构建,无需银行卡。