API 参考
CLI 和 Node.js 构建请使用公开的 javascript-obfuscator 包,它会处理流式响应和大文件上传。直接调用 REST 的客户端必须实现下面的协议。
观看
Using the Obfuscator.io API: API Keys, npm Package, CLI and Custom Presets
在设置 → API 密钥中创建 API 密钥。需要 Pro、Team 或 Business 访问权限。请把密钥保存在服务器或 CI 的密钥存储中,绝不要放进浏览器代码。javascript-obfuscator 包通过 apiToken 接收密钥(CLI 中为 --pro-api-token);直接发送的 REST 请求则把它放在 Authorization: Bearer 请求头中。在 Team 或 Business 套餐下,团队所有者可以在创建 API 密钥对话框中勾选团队服务密钥;这样的密钥属于团队而不属于某个人,因此成员离开后仍可继续使用。
请求
POST https://obfuscator.io/api/v1/obfuscate
发送包含 code 和 options 的 JSON。至少启用一项 Pro 功能:vmObfuscation: true 或 parseHtml: true。为了获得可重复的构建,请固定 version 查询参数;省略时使用最新版本。它接受精确版本(例如 8.0.0),也接受版本范围:^8.0.0 跟随 8.x 的新次版本和补丁版本,~8.0.0 跟随 8.0.x 的补丁版本,范围会解析为匹配的最高版本。版本范围需要 Team 或 Business 套餐。
options 直接列出各个选项;optionsPreset 中的预设名称不会被应用。要使用预设(无论内置还是自定义)构建,请在单独的请求中从预设端点获取其选项,并将其作为 options 发送。
如果团队所有者强制指定了版本或预设,它会覆盖团队成员和团队服务密钥请求中的 version 或 options。参见为团队强制使用版本和共享预设。
| 请求头 | 值 |
|---|---|
Content-Type | application/json |
Authorization | Bearer YOUR_API_KEY |
响应
请以换行分隔的 JSON(NDJSON)读取响应体。一次网络读取可能会切断一行 JSON 或一个 UTF-8 字符。进度不等于完成:必须收到 result 或 chunk_end 消息,并保留 warnings。
较小的输出通过单条 result 消息返回。较大的输出以若干 chunk 消息返回,最后是 chunk_end。这两种终止消息都带有 version,即生成该输出的具体混淆器版本(在请求了版本范围或团队强制指定版本时很有用)。warnings 以 { type, message, functionName? } 的形式列出非致命的混淆警告,没有警告时会省略该字段,因此请把缺失的字段视为空列表。VM 构建和 HTML 输入不会生成 source map。对纯 JavaScript 进行 parseHtml 构建并设置 sourceMap: true 时,source map 会放在终止消息的 sourceMap 字段中返回;如果 source map 较大,则以 sourceMap 分块返回。
应用层的失败会以流中的 error 消息返回,HTTP 状态码通常仍为 200。请同时检查 HTTP 状态码和流中的错误。基础设施和上传端点可能返回非 2xx 的 HTTP 响应。
Node.js (.mjs)
预设
GET https://obfuscator.io/api/v1/presets/{name}
返回某个预设的选项,可直接作为混淆请求的 options 发送。请发送同样的 Authorization: Bearer 请求头。名称匹配不区分大小写,响应是单个 JSON 对象,而不是流。下面的示例是节选。
- 内置预设:
{name}是一个内置预设,例如vm-default(参见选择预设)。version查询参数用于选择返回哪个混淆器版本的预设;它接受与混淆端点相同的值,默认为最新版本。description和updatedAt为null。 - 自定义预设:
{name}是在控制台中自定义预设的保存对话框里设置的 API 别名,options就是保存的配置(包含全部选项,而不仅是相对于某个预设改动过的选项)。可见性与控制台一致:API 密钥可以解析其用户自己的预设以及该用户的团队所有者共享的预设,团队服务密钥则解析所有者的预设。
GET https://obfuscator.io/api/v1/presets/vm-default
GET https://obfuscator.io/api/v1/presets/production
| 状态码 | 含义 |
|---|---|
| 200 | 返回该预设。 |
| 400 | 名称格式错误(长度为 1-20 个字符,只能包含字母 a-z、数字、连字符或下划线,并且必须以字母或数字开头),或不支持该 version。 |
| 401 | API 密钥缺失、无效或已过期。 |
| 403 | 账号已被停用、没有有效订阅,或所在套餐不含 API 访问权限。 |
| 404 | 请求的版本中没有此名称的内置预设,该密钥也看不到使用此别名的自定义预设。 |
| 429 | 触发速率限制;该请求与限制与失败中所述的按用户和按 IP 配额共享额度。 |
| 500 | 服务器端查找预设失败。请稍后重试。 |
错误格式为 {"error": "..."}。javascript-obfuscator 包及其 CLI 的用法示例见使用 NPM 包。
限制与失败
套餐限制适用于源码大小和用量。请将完整的序列化 JSON 请求体(包括转义字符和选项)控制在 4.4 MB 以内。更大的源码需要使用临时上传,该功能仅在 Team 和 Business 套餐下通过 javascript-obfuscator 包提供。请在控制台中查看当前套餐的限制。
API 允许每个用户每分钟 30 次请求(由该用户的所有密钥共享),以及每个 IP 每分钟 100 次请求。预设请求与混淆请求计入相同的额度。
速率限制、配额不足和中断的流都必须让构建停止。请有意识地重试;重复的请求可能会消耗额外用量。不要发布不完整的输出。
