GETTING STARTED

让接入,更简单。

从网站账号到运行授权,按用途找到你需要的接口。

当前服务器地址
V20.1.18
01

登录账号

恢复网站会话并取得 CSRF Token。

02

上传脚本

原始文本上传,语法通过后自动全量保护。

03

创建授权

设置卡密有效期和设备数量,复制执行入口。

04

开放 API

用账号专属 API密钥,自动化生成与管理卡密。

兼容说明

系统更名为 luaruaukey,现有接口路径、卡密格式和 Lua 全局变量保持兼容。

API REFERENCE

认证模型

01

网站账号

登录后服务器设置 HttpOnly + SameSite=Strict Cookie。GET 读取接口只需要会话 Cookie;POST / PUT 等写操作还需要 X-CSRF-Token。

02

Runtime

/verify 成功后动态返回 Session、Heartbeat、Guard、Capability 等短期凭据。它们都不是长期 API Key;自动化集成请使用「用户面板」中每个账号唯一的 API密钥(见 开放 API)。

03

管理员

ADMIN_SECRET 只用于管理员登录。登录成功后同样使用 HttpOnly 管理会话和 CSRF;不要把 Secret 写入网页源码。

通用响应:{ "ok": true, ... };失败通常为 { "ok": false, "error": "ERROR_CODE" }。
API REFERENCE

账号认证 API

POST/api/auth/registerPUBLIC

创建免费账号并立即建立登录会话。

JSON Body

namestring · 2–50
emailstring
passwordstring · 8–200

成功 · 201

{
  "ok": true,
  "csrf": "...",
  "user": { "plan": "free" },
  "usage": { ... }
}
POST/api/auth/loginPUBLIC

使用邮箱和密码登录,成功后服务器写入 HttpOnly Cookie。

{ "email": "you@example.com", "password": "your-password" }
GET/api/auth/sessionCOOKIE

恢复当前登录状态,同时取得当前 CSRF Token、账号信息和套餐用量。

POST/api/auth/logoutCOOKIE + CSRF

注销当前账号会话。

X-CSRF-Token: <csrf>
API REFERENCE

用户控制台 API

GET/api/account/dashboardCOOKIE

返回套餐使用量与脚本、有效卡密、绑定设备统计。

GET/api/account/scriptsCOOKIE

列出当前账号拥有的脚本元数据与执行入口,不返回源码正文。

POST/api/account/validate-luauCOOKIE + CSRF

上传前预检 Luau 语法。请求体为原始源码文本;语法错误返回 422 LUAU_SYNTAX_ERROR 和行列 diagnostics。真正上传/更新接口还会再次强制校验。

POST/api/account/upload-scriptCOOKIE + CSRF

上传新的 Luau 源码;必须通过 X-Project-Id 指定所属项目(每个项目最多 50 个脚本)。请求体是原始文本,不是 JSON。V20.1.10 会再次执行 Luau 语法校验,然后把整份脚本编译为 Primitive Capsule Full-VM。VM wrapper 再进入带链式双轨状态校验和自适应字典压缩的双层 Sharded VM²,最终使用 AES-GCM 私有存储;服务器不保存原始源码正文。

Headers

X-CSRF-Tokenrequired
X-Project-Idrequired · 目标项目 ID
X-Script-Nameoptional · UTF-8 percent-encoded · max 120 chars after decode
X-Script-Name-Encodingset to percent-utf8 for Unicode names
Content-Typetext/plain

免费限制

Free 账号最多 50 个脚本;每个项目同样最多 50 个脚本,超出返回 PROJECT_SCRIPT_LIMIT。

PUT/api/account/script/:scriptIdCOOKIE + CSRF

替换已有脚本源码并增加 revision;如果启用 kickOutdatedUsers,旧 Runtime 会被撤销。

POST/api/account/script-settingsCOOKIE + CSRF

保存脚本运行策略。修改设置会撤销当前运行会话,使下一次启动获取新的签名设置。

{
  "scriptId": "sc_...",
  "name": "PY Hub",
  "settings": {
    "freeForAll": false,
    "useHeartbeat": true,
    "kickOutdatedUsers": true,
    "requireSingleSession": true,
    "allowDeviceToken": true,
    "rotateDeviceToken": true,
    "runtimeGuard": true,
    "serverCapabilities": true,
    "riskIpBinding": true,
    "silentMode": false
  }
}
POST/api/account/set-script-enabledCOOKIE + CSRF

{ "scriptId": "sc_...", "enabled": false }。停用后立即撤销相关 Runtime。

GET/api/account/licensesCOOKIE

列出当前账号的全部授权记录;V9+ 新卡密可由 License Vault 解密后仅向本人显示。

POST/api/account/create-keyCOOKIE + CSRF

创建单个 V20.1 PYX2 卡密:内部 payload 经 XXTEA 加密后使用 Base64URL 编码,并由 HMAC-SHA256 认证;旧 PY7 卡密仍兼容。

{
  "label": "user-001",
  "scriptId": "sc_...",
  "days": 30,
  "maxDevices": 1
}
POST/api/account/create-keys-batchCOOKIE + CSRF

一次批量创建 100–300 个卡密,同时受 Free 总计 1000 个授权记录限制。

{
  "labelPrefix": "batch",
  "scriptId": "sc_...",
  "count": 100,
  "days": 30,
  "maxDevices": 1
}
POST/api/account/set-license-enabledCSRF

{ "id": "license-uuid", "enabled": false }

POST/api/account/reset-devicesCSRF

{ "id": "license-uuid" },清空全部设备槽位并全链撤销现有 Runtime。

POST/api/account/revoke-deviceCSRF

{ "id": "license-uuid", "slotId": "ds_..." },只撤销指定设备槽位,同时撤销其 Session、LEASE、Guard、Capability、Stream。

GET/api/account/events?limit=100COOKIE

仅返回与当前账号脚本 / 卡密相关的安全事件,最大 200 条。

GET/api/account/projectsCOOKIE

返回当前账号的全部项目及每个项目的脚本数量。

POST/api/account/create-projectCOOKIE + CSRF

创建项目(请求 JSON:name = 项目名称,最长 60 字符);同名项目返回 PROJECT_NAME_EXISTS。

POST/api/account/delete-projectCOOKIE + CSRF

删除项目(请求 JSON:id = 项目 ID;force 可选)。项目内还有脚本时返回 PROJECT_NOT_EMPTY;force=true 时连同删除项目下的脚本。

POST/api/account/delete-scriptCOOKIE + CSRF

删除脚本(请求 JSON:scriptId),删除托管源码并从绑定卡密中解绑该脚本。

POST/api/account/delete-licenseCOOKIE + CSRF

删除卡密(请求 JSON:id),并立即撤销相关设备授权。

OPEN API

开放 API(API密钥)

用账号专属 API密钥调用接口,自动化生成与管理卡密。

获取密钥

登录控制台,在「用户面板」查看并复制属于你的 API密钥(形如 lk_...,每个账号唯一;可随时重新生成)。

认证方式

请求头携带 Authorization: <API_KEY>(也兼容 Authorization: Bearer <API_KEY>与 X-Api-Key)。请始终通过 https://luaruaukey.top调用。

GET/api/open/meAPI KEY

返回当前账号信息与套餐用量,可用于验证密钥是否有效。

POST/api/open/create-keyAPI KEY

创建单个卡密。JSON Body:scriptId必填;label、days(1–3650,默认 30)、maxDevices(1–5,默认 1)可选。返回 key与 license。

POST/api/open/create-keys-batchAPI KEY

一次批量创建 100–300 个卡密。Body:scriptId、count、labelPrefix、days、maxDevices。

GET/api/open/licensesAPI KEY

列出当前账号的全部卡密(包含明文卡密、设备与到期信息)。

GET/api/open/licenseAPI KEY

按 id或 key(查询参数)查询单个卡密。

POST/api/open/set-license-enabledAPI KEY

启停指定卡密(id或 key + enabled)。停用会立即撤销运行会话。

POST/api/open/reset-devicesAPI KEY

重置卡密绑定的设备(HWID),id或 key二选一。

POST/api/open/delete-licenseAPI KEY

删除指定卡密(id或 key),并立即撤销相关设备授权。

curl 示例

curl -H "Authorization: lk_xxx" https://luaruaukey.top/api/open/me

curl -X POST -H "Authorization: lk_xxx" -H "Content-Type: application/json" -d '{"scriptId":"sc_xxx","label":"user-001","days":30}' https://luaruaukey.top/api/open/create-key

API REFERENCE

Edge-Bound Dual-VM + AST

PIPELINEValidate → Parse Whole Program → AST Polymorphism → Full-Script L1/L2/L3 VM → Post-VM Polymorphism → Sharded VM² → Validate → AES-GCM

V20.1 会把顶层执行逻辑和函数/闭包统一编译为自研字节码原型,并在 V20.0 多态 ISA 基础上加入路径关联进入密钥、opcode alias、随机记录布局与指令融合。L1 负责真正的 Luau 语义指令;L2 负责每原型随机 opcode、operand 解码、dispatch 映射与 node tag;L3 使用随机控制状态驱动 Fetch → Decode → Execute → Advance。不同构建会重新生成常量编码、node graph、opcode 映射和 AST 结构。

V20.1.10 protection + compatibility:默认 Full-VM 构建清单包含 35 项机制。操作码和操作数在八族基础公式上组合三层独立编码,常量仍使用八族解码。prototype 句柄随机化,同一常量在不同指令位置使用不同别名。handler 只拿到小型上下文,常量接口仅允许当前指令授权的别名,返回及异常后撤销。每条指令执行后重新校验,双字状态校验绑定调用帧、进入密钥和栈深度。handler 强引用按调用帧管理,同协程弱模板缓存每 4096 条指令轮换;暂停协程保留必要执行状态,正常长循环没有累计步数硬上限。

私有运行时依赖:生成的加载器、保护壳、VM 入口和 handler 逐层传递捕获的基础函数引用。标准 Luau 使用冻结副本;不支持冻结的兼容环境在执行边界校验副本及依赖引用。JSON、GUID、HTTP 与时间等加载器依赖在初始化时捕获。业务全局访问函数先于内部辅助变量声明,避免内部名称遮蔽;全局变量保持原有动态读写语义。预先安装的观察型 hook 或宿主原生代码修改仍可提取数据,不能承诺“所有 hook”被阻止。

按会话重建:新上传将编译中间表示与保护产物一起 AES-GCM 加密保存,摘要纳入元数据签名。每次授权 manifest 都从独立副本重新生成 opcode 编码、分派路由、prototype 句柄、常量别名、记录布局和校验参数;不会重新生成原始源码。manifest 的 sessionVmReconstruction 表示本次是否重建,vmStructureDigest 是本次结构的摘要。IR 不返回客户端。构建在 worker 中进行,默认两个 worker、最多 16 个排队项、15 秒总超时,完成后重新复核授权和 revision。既有旧版产物继续执行;重新上传原始脚本后才启用重建。

会话加密下发:manifest 包含 deliveryCodec=chacha20-hmac-sha256-v2、deliveryEncKey 和 deliveryMacKey。每个会话使用独立密钥;segment 返回 codec、bytes、nonce、data 和 tag。数据先通过 HMAC-SHA256 校验,再进行 ChaCha20 解密;这不是 ChaCha20-Poly1305。缓存重试返回原密文和令牌,要求原 capability token,同时复核当前授权。密钥交给授权客户端,因此不能隐藏受控宿主能看到的最终内容,生产仍需 HTTPS。

自适应字典密封信封:双层信封分别尝试压缩重复 VM 结构,只有节省空间时才启用,然后继续独立分片、编码和完整性校验。压缩减少体积,不属于新的密码算法。客户端可观察到解密和执行过程,释放引用也不等于安全擦除宿主内存。

低误判运行诊断:观察函数引用变化、debug.info 语义、活动调试 hook 和计时异常;可选信号不会单独拒绝执行。只有两类以上解码所需基础操作在同次检查中均重复失败,才终止本次加载。稳定特征摘要随 Runtime Guard 提交,变化仅记为诊断事件;不绑定 package.path,不因环境差异直接踢人。

V20.1 新增:指令记录与跳转边绑定进入密钥;每个操作可拥有多个 alias/schema;每个函数随机记录布局和节点物理顺序;常量继续分片并按需恢复,完整性校验同时覆盖编码参数。

当前 Full-VM 编译器覆盖局部变量、全局/上值访问、嵌套/匿名函数、vararg、单/多返回值、普通/方法调用、table、字段与索引、赋值/复合赋值、if/elseif/else、while、repeat-until、numeric for、常见 iterator generic for、break/continue、Luau if-expression、常见类型注解与 type cast。Roblox API 本身通过 Host Bridge 调用,但业务控制流仍留在 VM 中。

严格模式不会静默降级。如果解析到当前还没有完整语义支持的结构,上传返回 422 FULL_VM_UNSUPPORTED_SYNTAX,包含行/列信息;旧线上 revision 保持不变。插值字符串、复杂类型擦除与显式泛型已纳入兼容测试。

脚本元数据继续保留 VM 与编码统计。新构建的 hardening 签名覆盖 runtimeShadowState、dynamicInstructionCheckpoints、continuationSealBits、sealedOpcodeContracts、verifiedControlFlow、postDispatchVerification、frameLocalHandlerCache、handlerCacheWindow 及 progressBudget。最后一项在 V20.1.10 为 false,表示无累计步数终止。新增 wordRecipeLayers、randomizedPrototypeHandles、instructionConstantAliases、constantAliases、scopedConstantCapabilities 及 minimalHandlerContext 继续签名;新增 privatePrimitiveSnapshot、primitiveReferenceChecks 、primitiveReferenceCount 和 sessionVmReconstruction 纳入 V20.1.10 签名;加密 IR 的 buildRecipeFormat 及 buildRecipeSha256 同样参与签名。诊断模式为 observe-quorum;历史 V20.1.4 / V20.1.5 / V20.1.7 / V20.1.8 / V20.1.9 使用原签名格式。

Full-Script VM 显著提高静态逆向成本,但客户端最终仍拥有 VM、bytecode 和运行结果,因此它不是密码学不可破解保证。核心商业逻辑仍优先放在 Server Capability / Receipt Chain。
LOADER PROTECTION

加载器保护

固定启用全部保护

上传和脚本设置不再提供混淆等级选择。加载器固定采用 VM 保护,按会话生成短期凭据和加密源码流。

历史客户端字段继续兼容,但不能关闭保护或切换到明文模式。

API REFERENCE

启动与验证

GET/run/:scriptIdPUBLIC BOOTSTRAP

返回当前脚本的 Bootstrap Loader,并创建短时一次性 BOOT_TOKEN。不会返回受保护源码正文。

POST/verifyBOOT TOKEN

建立一次运行会话。卡密模式提交 key;后续可改用轮换 deviceToken,两者不能同时提交。

JSON Body

{
  "scriptId": "sc_...",
  "installId": "local-install-id",
  "clientInstanceId": "random-per-launch-id",
  "bootToken": "...",
  "nonce": "...",
  "ts": 1789790000000,
  "key": "PYX2-l1-x1-..."
}

关键返回

sessionToken短期 Session
manifestPath一次性 Runtime Manifest
heartbeatTokenLEASE
runtimeGuardPath/Token可选 Guard
runtimeExecutePath/TokenV13 Capability
deviceToken可选轮换设备令牌
API REFERENCE

运行期续租

POST/heartbeatBEARER

刷新运行租约并返回新的 heartbeatToken。Bootstrap 遇到临时网络失败时每 2 秒重试一次,最多 10 次;已成功轮换但响应丢失时支持短暂幂等恢复。

Authorization: Bearer <heartbeatToken>
POST/runtime/guard/:guardIdROLLING BEARER

取得短期 Runtime Grant。返回下一枚 Guard Token、epoch、grantExpiresAt 与 HMAC proof,并持续检查脚本 revision、卡密状态、设备黑名单与网络风险绑定。

V20.1.10 Loader 自动附带可选的 diagnostics 摘要。服务端校验格式与校验和,并把有效摘要纳入本次 grant 的 HMAC;返回 diagnosticsAccepted 与 diagnosticProfileStable。这是客户端自报诊断,不能证明客户端未被控制;缺失、异常或特征变化不会取代卡密授权判断。

API REFERENCE

Server Capability Runtime

POST/runtime/execute/:operationSessionIdROLLING BEARER

执行服务器端注册的命名操作。请求绑定 Script、Revision、License、Install、Client Instance、Sequence、Nonce 与时间戳。

Loader 中调用

local Runtime = getgenv().PYSHIELD_RUNTIME

local result, receipt, meta = Runtime.Execute(
  "example.secure_transform",
  { text = "hello" }
)

if not result then return end
print(result.value)

服务器返回

{
  "ok": true,
  "operation": "example.secure_transform",
  "sequence": 1,
  "result": { "value": "..." },
  "receipt": "...",
  "inputDigest": "...",
  "resultExpiresAt": 1789790030000,
  "runtimeExecuteToken": "next-token"
}
当前示例 Operationsexample.secure_transformexample.dynamic_config实际项目应在 server_capabilities.js 中添加自己的显式操作,并做严格输入校验。
API REFERENCE

Runtime Stream 协议

POST/runtime/manifest/:ticketSESSION

消费一次性 Manifest Ticket,建立当前运行唯一 Stream,返回 segment 数量、滚动 Stream Token、Capability Window 和 Checkpoint 地址。

POST/runtime/segment/:streamIdSTREAM + CAPABILITY

严格按 index 顺序获取单个 Segment。Header 需要当前 Authorization: Bearer ... 与 X-PY-Capability。

POST/runtime/checkpoint/:streamIdCHECKPOINT

当前 Capability Window 完成后换取下一窗口的新 Capability Token 与 Checkpoint Token。

API REFERENCE

平台管理员 API

其余管理接口包括 /admin/scripts、/admin/script/:id、/admin/rotate-storage、/admin/set-script-enabled、/admin/list、/admin/set-enabled、/admin/reset-devices、/admin/blacklist 与 /admin/unblacklist。

POST/admin/loginSECRET LOGIN

{ "secret": "ADMIN_SECRET" } → 管理 Cookie + CSRF。

GET/admin/sessionADMIN COOKIE

读取管理员会话与 CSRF。

GET/admin/dashboardADMIN

平台总览。

GET/admin/eventsADMIN

查看安全事件。

GET/admin/audit-statusADMIN

验证 HMAC 审计链完整性。

POST/admin/blacklist-deviceADMIN + CSRF

按安装 ID 哈希加入设备黑名单。

POST/admin/validate-luauADMIN + CSRF

平台管理员上传前预检:先做 Luau 语法校验,再做 V20.1 Full-Script VM 兼容性分析;不支持的语法直接返回 FULL_VM_UNSUPPORTED_SYNTAX,不会降级成明文。

POST/admin/upload-scriptADMIN + CSRF

平台级上传脚本。

POST/admin/create-keyADMIN + CSRF

平台级创建卡密。

API REFERENCE

常见错误码

UNAUTHORIZED没有有效网站 / 管理会话。
BAD_CSRF写操作缺少或提交了错误的 CSRF。
LUAU_SYNTAX_ERRORLuau 源码存在语法问题;响应包含具体行、列和诊断信息,源码不会上传/替换。
FULL_VM_UNSUPPORTED_SYNTAX源码语法本身有效,但包含 V20.1 Full-Script VM 当前尚未完整支持的 Luau 结构。响应包含行/列;不会回退为明文,也不会覆盖旧 revision。
INVALID_KEY卡密不存在,或 PYX2/PY7 的 HMAC 认证、Base64URL/XXTEA payload 校验失败。
KEY_DISABLED / KEY_EXPIRED授权被停用或已到期。
DEVICE_LIMIT当前卡密绑定设备达到上限。
DEVICE_BLACKLISTED安装 ID 哈希已被服务器拉黑。
BOOT_EXPIREDBOOT_TOKEN 过期、已使用或与脚本不匹配。
REPLAY_DETECTEDNonce 被重复使用。
RUNTIME_REAUTH_REQUIRED运行上下文发生高风险变化,需要重新走启动授权。
CAPABILITY_TOKEN_INVALIDCapability Token 错误或已被轮换。
CAPABILITY_SEQUENCEServer Capability 调用序号不连续。
CAPABILITY_RATE_LIMITED当前 Capability Session 超过每分钟调用限额。
API REFERENCE

Receipt Chain · Risk · Persistent Limits

POST/runtime/execute/:sessionRUNTIME

成功响应包含 result、binding、receipt。当上一枚 receipt 仍在 15 秒有效期内时,下一次请求必须提交 previousReceipt。过期后链自动开启新 epoch。

{
  "previousReceipt": "...",
  "operation": "example.secure_transform",
  "sequence": 2
}
GET/admin/risk-stateADMIN

风险分级:5+ 降低 Capability 速率,10+ 撤销当前 Runtime,15+ 临时封禁 30 分钟;分数随时间衰减。

FILEsecurity_state.jsonSERVER

验证、登录和通用限流桶持久化到服务端状态文件,Node 重启后不会全部归零。多实例生产环境仍建议改为 Redis。

GET/run/:scriptIdLOADER

Loader 强制状态机 BOOT → VERIFIED → GUARD → CAPABILITY → RUNNING,内部步骤不可正常跳序。

API REFERENCE

集成建议

01只在 HTTPS 后运行PUBLIC_BASE 生产环境应使用 HTTPS,并推荐让 Node 只监听反向代理内网地址。
02所有主密钥相互独立SOURCE_MASTER_KEY、LICENSE_SIGNING_KEY、LICENSE_LOOKUP_KEY、LICENSE_VAULT_KEY、LICENSE_XXTEA_KEY、RUNTIME_SIGNING_KEY、CAPABILITY_MASTER_KEY 不要复用。
03核心逻辑放进 Capability Operation不要让 Runtime.Execute() 只返回 true;让服务器返回功能实际必需、客户端无法自行重算的数据。
04不要把短期 Token 当长期 API KeyHeartbeat / Guard / Capability / Stream Token 都会轮换,客户端必须使用最新返回值。