接入文档

十分钟让你的软件接入 NetcCheck 网络验证。

全部 POST + JSON 基地址 /api/v1 签名防篡改 · 防重放

快速开始

1

创建软件

注册后在控制台新建软件,拿到 AppKey / AppSecret。

2

生成卡密

控制台批量生成卡密,分发给用户充值开通。

3

调用接口

客户端按下方签名规则调用登录 / 心跳接口完成验证。

POST /api/v1/user/login
{ "appkey": "nkxxxx", "time": "1727700000", "nonce": "xyz1",
  "username": "tom", "password": "123456", "machine": "PC-01",
  "sign": "按签名算法计算" }

生产环境务必使用 HTTPS 域名,防止 Secret 与卡密被截获。

签名算法

sign = md5( 参数按名升序 k=v&… &key=AppSecret )

① 取除 sign 外的全部参数(值按字符串处理)→ ② 参数名升序拼成 k1=v1&k2=v2 → ③ 末尾拼 &key=AppSecret → ④ 取 32 位小写 MD5。

参数: appkey=nk01ab, time=1727700000, nonce=xyz, username=tom
拼串: appkey=nk01ab&nonce=xyz&time=1727700000&username=tom&key=abc123
sign = md5(拼串)   // 32 位小写

公共参数

参数必填说明
appkey是软件标识,控制台创建软件后获得
time是Unix 时间戳(秒),允许 ±300 秒误差
nonce是随机字符串,每次请求必须更换(防重放)
sign是请求签名,见上方算法

统一响应:{"code":200,"msg":"ok","data":{}},code=200 即成功,失败时直接向用户展示 msg。

错误码

code含义code含义
200成功412账号已过期
400参数错误413卡密无效或已使用
401签名/时间戳/重放错误414机器码超上限
403软件已停用415登录态失效
404软件不存在416账号已封禁
410账号或密码错误429请求过于频繁
411账号已存在

软件信息 POST/app/info

客户端启动时调用,获取公告 / 版本 / 强更标记。仅需公共参数。

{ "code": 200, "data": {
    "name": "示例软件", "version": "1.0.0",
    "force_update": false, "notice": "欢迎使用",
    "server_time": 1727700000 } }

注册 POST/user/register

参数必填说明
username是3~32 位字母/数字/_/@/-
password是6~64 位

后台可按软件关闭「允许注册」。

登录 POST/user/login

参数必填说明
username / password是账号密码
machine否机器码,传入自动绑定,超上限返回 414
{ "code": 200, "data": {
    "token": "64位十六进制…",
    "expire_at": 1730000000,      // 0 = 永久
    "machines": ["PC-01"], "max_machines": 1 } }

重复登录顶号下线;token 有效 24 小时,凭心跳滑动续期。

心跳 POST/user/heartbeat

每 3~5 分钟调用一次,校验登录态/封禁/到期并续期 token。参数:token;返回 data.remaining 剩余秒数(-1 = 永久)。收到 412/415/416 应立即退出并提示。

卡密充值 POST/user/recharge

参数:username、password、card_key。账号过期后也可充值;未到期在现有到期时间上累加,已过期从当前时间起算。

云变量 POST/var/get · /var/set

需登录态(token)+ key,写入另需 value(≤8192 字符)。远程开关、公告、配置下发;把关键数据放服务端,验证不过就拿不到。

接入建议

  • 心跳线程:登录后后台线程定时心跳,收到 412/415/416 立即退出并提示。
  • token 保管:只放内存不落盘,程序重启重新登录。
  • 机器码:取机器名 + 硬件序列号做哈希;用户换机由作者在后台一键重置。
  • 防破解:关键数据放服务端下发(拿不到,而不是判空),配合 VMProtect 保护校验逻辑。
  • 宽限策略:网络抖动允许本地宽限 1~2 次心跳失败,避免误杀正常用户。

SDK 示例

官方 Python 示例(零依赖,含完整签名实现)见项目 examples/client.py,其他语言照抄签名算法即可。

def sign(params: dict, secret: str) -> str:
    items = '&'.join(f'{k}={params[k]}' for k in sorted(params) if k != 'sign')
    return hashlib.md5((items + '&key=' + secret).encode()).hexdigest()

遇到问题?联系客服 1937507267@qq.com