开发者文档
本文档基于当前项目代码整理,包含动态验证网关、开发者后台 API、云端对接 API 的真实请求方式、鉴权规则、签名规则与示例。对接前请先在后台确认 APPID、APPKEY、加密模式、签名开关与时间戳校验配置。
快速导航
建议阅读顺序:协议规则 -> 动态验证网关 -> Sign 规则 -> 开发者后台 API -> 云端 API。
协议规则 动态验证网关 Sign 计算 加密模式 开发者后台 API 云端 API 常见错误当前项目可见接口文档:
[API]一键对接模板 [API]易验证卡密登录 [API]sig [API]返回抓包者信息 [API]用户注册 [API]获取RC4 [API]获取文件外链 [API]卡密解绑 [API]卡密登录 [API]应用公告 [API]应用配置统一业务入口
客户端验证、登录、卡密、设备等业务通常都通过 `api.php` 进入,再由接口别名分发到具体模块。
应用、卡密、用户管理
用于开发者后台、移动端管理面板或自建工具拉取应用列表、统计信息、用户列表和更新配置。
远程开通与授权修改
适合代理系统、联运后台或远程开站脚本,支持添加授权、创建云端用户、变更授权域名。
协议规则
https://n10.top/api.php?api=接口别名&app=APPID
提交方式:`GET` 或 `POST`,实际以接口页面或客户端实现为准
返回格式:JSON 或接口自定义文本
字符编码:UTF-8
跨域策略:已开启 `Access-Control-Allow-Origin: *`
鉴权核心:APPID + APPKEY + 可选 Sign + 可选时间戳 `t` + 可选加密数据 `data`
支持加密:明文、RC4、Base64、RC4(hex2bin)、RSA、易验证 RSA 模式
签名算法:MD5 小写
| 字段 | 是否必填 | 位置 | 说明 |
|---|---|---|---|
api | 是 | Query | 接口别名,对应 `yixi_program.api_path`。 |
app | 通常必填 | Query | 应用 ID,用于读取应用配置、APPKEY、加密方式。 |
sign | 按配置 | Query/Post | 外层签名;若开启 `mi_sign_in` 可改放加密前数据体内部。 |
data | 按配置 | Query/Post | 加密后的业务数据集合。 |
value | 可选 | Query/Post | 随机值或透传值,部分接口会使用。 |
t | 按配置 | 数据体内 | Unix 秒级时间戳,启用时间校验时必须提交。 |
动态验证网关
统一入口文件:`/api.php`
关键参数来自 `api.php` 与 `api/app.php`:
GET /api.php?api=接口别名&app=APPID 可选参数: - sign 外层签名 - data 加密后的数据体 - value 随机值/透传值 - other 默认加载的接口页面,未传时为 index
网关处理流程:
1. 校验接口目录与接口别名是否存在。
2. 校验应用是否存在、是否启用。
3. 校验接口是否已购买/是否过期/是否被关闭。
4. 根据应用配置解析数据:明文或加密数据。
5. 若启用签名,按 APPKEY 重新计算 MD5 并比对。
6. 若启用时间戳校验,检查 `t` 与服务器时间差是否超过 `mi_time`。
7. 将解析后的参数写入 `$data_arr`,再交由具体接口文件处理。
请求地址示例
https://n10.top/api.php?api=login&app=10001
明文请求示例
POST /api.php?api=login&app=10001 Content-Type: application/x-www-form-urlencoded user=test001&password=123456&markcode=DEVICE001&t=1710000000&sign=md5结果
典型成功返回
{
"code": 0,
"msg": "success",
"data": {
"user": "test001",
"expire": "2026-12-31 23:59:59"
}
}
典型失败返回
{
"code": 106,
"msg": "签名错误"
}
Sign 计算方式
项目中的签名校验最终由 `Arr_sign($data_arr, $app_res['appkey'])` 完成。文档层面的使用规则如下:
1. 按实际提交的业务参数进行拼接 2. 在末尾追加 &APPKEY 3. 对最终字符串取 MD5 4. 使用小写结果作为 sign
示例:
原始参数: user=test001 password=123456 inv=ABC123 markcode=DEVICE001 t=1710000000 拼接串: user=test001&password=123456&inv=ABC123&markcode=DEVICE001&t=1710000000&APPKEY 结果: sign = md5(上面的完整字符串)
PHP 示例
$params = [
'user' => 'test001',
'password' => '123456',
'markcode' => 'DEVICE001',
't' => time(),
];
$query = http_build_query($params) . '&' . $appKey;
$sign = md5($query);
JavaScript 示例
const params = {
user: 'test001',
password: '123456',
markcode: 'DEVICE001',
t: Math.floor(Date.now() / 1000)
};
const query = new URLSearchParams(params).toString() + '&' + APPKEY;
const sign = md5(query).toLowerCase();
加密模式与时间戳
以下模式来自 `api/app.php` 的真实逻辑:
`mi_type = 0`:明文模式,直接读取 `$_REQUEST`。
`mi_type = 1`:RC4 模式,提交 `data`,使用应用 `rc4_key` 解密。
`mi_type = 2`:Base64 模式,提交 `data`,Base64 解码后再解析。
`mi_type = 3`:RC4(hex2bin) 模式,先 hex2bin,再 RC4 解密。
`mi_type = 4`:RSA 模式,提交 `data`,使用应用私钥解密。
`mi_type = 10`:易验证兼容 RSA 模式,处理方式与上类似。
时间戳校验:
若应用配置 mi_time > 0: - 必须提交 t - 服务器会计算 time() - t - 大于 mi_time 时拒绝请求
建议:客户端每次请求都带上 Unix 时间戳秒值 `t`,避免因为切换配置后出现兼容问题。
| mi_type | 模式 | 提交字段 | 服务端处理 |
|---|---|---|---|
| 0 | 明文 | 直接提交业务字段 | 读取 `$_REQUEST` |
| 1 | RC4 | `data` | `mi_rc4(data, rc4_key, 1)` |
| 2 | Base64 | `data` | `base64_decode(data)` |
| 3 | RC4(hex2bin) | `data` | `rc4(hex2bin(data), rc4_key)` |
| 4 | RSA | `data` | `RSA_SMI(data, private_key, 1)` |
| 10 | 易验证兼容 | `data` | 兼容 RSA 解密流程 |
开发者后台 API
https://n10.top/user/api.phphttps://n10.top/user/api_v2.phphttps://n10.top/user/api_v3.php当前项目中存在三个版本:`/user/api.php`、`/user/api_v2.php`、`/user/api_v3.php`。
推荐优先使用:`/user/api.php` 或 `api_v3.php`。
鉴权方式:
1. 浏览器已登录时自动读取 `user_auth_token` Cookie。
2. 外部调用时可传 `token` 参数。
3. 站内后台还支持 Session 登录态。
登录接口仅 `api_v2.php` 提供:
POST /user/api_v2.php?act=login
参数:
- user 用户名
- pass 密码
成功返回:
{
"code": 0,
"msg": "登录成功",
"qq": "123456",
"token": "..."
}
| 接口 | 方法 | 关键参数 | 说明 |
|---|---|---|---|
act=get_user_info | GET | token | 获取当前登录开发者信息。 |
act=get_apps | GET | token, page, num | 获取当前开发者应用列表。 |
act=get_app_detail | GET | token, appid | 获取单个应用完整配置。 |
act=update_app | POST | token, id | 更新应用配置白名单字段。 |
act=get_kamis | GET | token, appid, page, num | 获取卡密列表。 |
act=get_users | GET | token, appid, page, num | 获取应用用户列表。 |
act=get_statistics | GET | token | 获取统计数据。 |
常用接口:
GET /user/api.php?act=get_user_info&token=TOKEN GET /user/api.php?act=get_apps&page=1&num=30&token=TOKEN GET /user/api.php?act=get_app_detail&appid=1&token=TOKEN POST /user/api.php?act=update_app&token=TOKEN GET /user/api.php?act=get_kamis&appid=1&page=1&num=30&token=TOKEN GET /user/api.php?act=get_users&appid=1&page=1&num=30&token=TOKEN GET /user/api.php?act=get_statistics&token=TOKEN
`update_app` 可更新的字段来自代码白名单,主要包括:
name, img, note, app_gg, version, version_info, switch, ipauth, active, logon_check_in, mi_state, mi_type, mi_sign, mi_sign_in, print_sign, mi_time, rc4_key, km_change_time, km_change_num, single_km_change_num, km_change, longuse_km_change, sqprice, sqprice2, sqprice3, sqsprice, sqsprice2, cgprice, hourprice, dayprice, weekprice, monthprice, seasonprice, yearprice, longuseprice, app_update_must, app_update_url, app_update_show, app_update_url_type, lanzou_pass
返回示例:获取应用列表
{
"code": 0,
"msg": "success",
"data": [
{
"id": 1,
"appkey": "abcdef123456",
"name": "Demo App",
"version": "1.0.0",
"mi_type": "1",
"mi_sign": "y",
"mi_time": "300",
"rc4_key": "demoRc4Key"
}
],
"total": 1,
"page": 1,
"num": 30
}
curl 示例:获取应用列表
curl "https://n10.top/user/api.php?act=get_apps&token=YOUR_TOKEN&page=1&num=30"
云端对接 API
https://n10.top/api/cloud_api.php
此类接口主要用于远程开通授权、添加代理/管理员、远程修改授权域名。
所有接口都依赖站点配置开关、API Key、以及 IP 白名单。
1. 添加程序授权:
GET /api/cloud_api.php?act=cloud_auth 参数: - proid 程序ID - name 站点名称 - qq QQ号码 - url 绑定域名,不带 http:// - key API Key - ip 服务器IP
成功返回示例
{
"code": 0,
"msg": "添加Demo程序授权成功!"
}
2. 添加云端用户:
GET /api/cloud_api.php?act=cloud_user 参数: - proid 程序ID - power 权限级别 - user 用户名 - pwd 密码 - qq QQ - email 邮箱 - key API Key - ip 服务器IP
说明:
`power=1` 为授权商,`power=2` 为超级管理员,`power=3` 为全能管理员。
接口会校验 API Key 状态、余额、权限等级、QQ、邮箱、用户名唯一性。
3. 远程修改授权域名:
GET /api/cloud_api.php?act=cloud_authedit 参数: - token 授权记录对应的 TOKEN - url 新域名
请求示例
https://n10.top/api/cloud_api.php?act=cloud_auth&proid=1&name=DemoSite&qq=123456&url=demo.com&key=YOUR_KEY&ip=1.1.1.1
常见错误与排查
| 错误码 | 含义 | 常见原因 |
|---|---|---|
-1 | 通用失败 | 缺参数、未登录、权限不足、余额不足、记录不存在。 |
101 | 应用不存在 | APPID 不正确或应用已被删除。 |
102 | 应用关闭 | 应用被后台停用。 |
104 | 签名为空 | 开启签名校验后未传 sign。 |
105 | 时间戳超时 | `t` 与服务器时间差超出 `mi_time`。 |
106 | 签名错误 | APPKEY 错误、参数顺序不一致、sign 位置错误。 |
107 | data 为空 | 加密模式下没有提交 `data`。 |
108 | 缺少时间变量 | 启用时间戳校验但未传 `t`。 |
170-173 | 接口授权异常 | 接口关闭、维护、未购买或已过期。 |
`code = -1`:通常为缺少参数、未登录、权限不足、余额不足等业务错误。
`104`:签名为空。
`105`:时间戳超时。
`106`:签名错误。
`107`:加密数据 `data` 为空。
`108`:缺少时间变量 `t`。
`101`:应用不存在。
`102`:应用关闭。
`170/171/172/173`:接口关闭、维护、未购买、已过期等授权问题。
示例请求
// 1. 查询开发者后台应用列表 GET /user/api.php?act=get_apps&token=你的TOKEN&page=1&num=20 // 2. 动态验证网关调用示意 POST /api.php?api=你的接口别名&app=10001 Content-Type: application/x-www-form-urlencoded user=test001&password=123456&t=1710000000&sign=md5结果 // 3. 云端新增授权 GET /api/cloud_api.php?act=cloud_auth&proid=1&name=DemoSite&qq=123456&url=demo.com&key=你的APIKEY&ip=1.1.1.1
完整 PHP 请求示例
$url = 'https://n10.top/user/api.php?act=get_apps&token=YOUR_TOKEN&page=1&num=20'; $result = file_get_contents($url); $data = json_decode($result, true); print_r($data);
完整 JavaScript 请求示例
fetch('https://n10.top/user/api.php?act=get_statistics&token=YOUR_TOKEN')
.then(res => res.json())
.then(data => console.log(data));