云盾网络验证系统 是一款功能强大的网络验证系统,提供安全、可靠的软件授权验证服务。 系统采用先进的双端加密传输方案,确保您的软件授权数据在传输过程中绝对安全。
系统采用统一API入口设计,所有验证接口通过 /api/index.php 接收请求。
客户端通过携带 app_key 标识自己的应用身份,并通过加密方式传递敏感参数。
在网站注册页面选择"开发者"角色并注册账号。
登录控制台后,在"应用管理"页面点击"创建应用"。 系统将自动生成:
在"卡密管理"页面选择应用,设置卡密类型(时长卡/次数卡/永久卡),生成批量卡密。
根据您的开发语言选择对应的SDK示例进行集成。 核心流程是:客户端启动 → 调用验证接口 → 获取授权结果 → 根据结果控制软件功能。
系统采用三层加密防护体系,同时使用对称加密和非对称加密,确保数据传输的安全性。
| 模式 | 描述 | 安全性 |
|---|---|---|
| 0 | 明文传输(仅调试用) | 低 |
| 1 | AES对称加密 | 中 |
| 2 | AES+RSA混合加密(推荐) | 高 |
{key, data, sign} 打包发送给服务端所有API请求需要通过 app_key 参数标识应用身份。
POST https://your-domain.com/api/index.php GET https://your-domain.com/api/index.php?action=verify
| 参数 | 必填 | 说明 |
|---|---|---|
| app_key | 是 | 应用唯一标识,在控制台获取 |
| action | 是 | 接口名称(verify/heartbeat等) |
| data | 否 | 加密的请求数据(JSON字符串) |
验证卡密有效性,首次验证会绑定机器码,返回授权Token。
POST /api/index.php 参数: - app_key: 应用Key - action: verify - data: 加密数据(包含card_no, card_pwd, machine_code)
{
"card_no": "YD01-ABCD-EFGH-IJKL-MNOP",
"card_pwd": "AB23CD45",
"machine_code": "9F8E-4D2C-...",
"version": "1.0.0",
"os_info": "Windows 10"
}
{
"code": 200,
"msg": "验证成功",
"data": {
"software": "我的软件",
"expire_time": 1735603200,
"expire_text": "2025-01-01 00:00:00",
"remain_count": -1,
"card_type": 1,
"card_type_text": "时长卡",
"notice": "欢迎使用",
"version": "1.0.0"
},
"token": "a1b2c3d4e5f6...",
"timestamp": 1735600000
}
验证成功后,客户端需要定期发送心跳保持在线状态。心跳间隔建议为30秒。
POST /api/index.php 参数: - app_key: 应用Key - action: heartbeat - token: 验证时返回的Token - data: 加密数据(包含machine_code, version等信息)
客户端退出时调用,清除在线状态。
参数: - app_key: 应用Key - action: logout - token: 验证时返回的Token
获取应用的公告内容。
参数: - app_key: 应用Key - action: getNotice
检查是否有新版本。
参数: - app_key: 应用Key - action: getVersion
查询当前设备的授权状态。
参数: - app_key: 应用Key - action: info - token: 授权Token - machine_code: 设备机器码
| 错误码 | 说明 |
|---|---|
| 200 | 成功 |
| -1 | 缺少action参数 |
| -2 | 缺少app_key参数 |
| -3 | AppKey无效或应用已停用 |
| -4 | IP已被拉黑 |
| -5 | 设备已被拉黑 |
| -6 | 数据解密失败 |
| -7 | 加密数据解密失败 |
| 1001 | 卡号不能为空 |
| 1002 | 机器码不能为空 |
| 1003 | 卡号不存在 |
| 1004 | 卡密已被禁用 |
| 1005 | 卡密已过期 |
| 1006 | 卡密密码错误 |
| 1007 | 该卡密已绑定其他设备 |
| 1008 | 授权已过期 |
| 1009 | 卡密次数已用完 |
| 1010 | 卡密已被使用 |
| 2001 | 缺少token参数 |
| 2002 | token无效或已失效 |
| 4001 | 缺少token参数 |
| 4002 | 缺少machine_code参数 |
| 4003 | 授权不存在或已失效 |
| 4004 | 授权已过期 |
使用Python requests库对接云盾验证API。
import requests
import hashlib
import hmac
import json
import time
# 配置
API_URL = "http://your-domain.com/api/index.php"
APP_KEY = "AKXXXXXXXXXXXX"
APP_SECRET = "YOUR_APP_SECRET"
RSA_PUBLIC_KEY = "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
def get_machine_code():
"""获取机器码"""
import platform
return platform.node() # 简化示例,实际可生成设备唯一标识
def verify_card(card_no, card_pwd):
"""验证卡密"""
data = {
'card_no': card_no,
'card_pwd': card_pwd,
'machine_code': get_machine_code(),
'version': '1.0.0',
'os_info': 'Python Client'
}
# 发送请求(此处演示明文模式,正式使用请加密)
resp = requests.post(API_URL, data={
'app_key': APP_KEY,
'action': 'verify',
'data': json.dumps(data)
})
result = resp.json()
return result
def heartbeat(token):
"""心跳检测"""
resp = requests.post(API_URL, data={
'app_key': APP_KEY,
'action': 'heartbeat',
'token': token,
})
return resp.json()
# 示例用法
if __name__ == '__main__':
card_no = input("输入卡号: ")
card_pwd = input("输入卡密: ")
result = verify_card(card_no, card_pwd)
if result['code'] == 200:
print("✅ 验证成功!")
print("剩余时间:", result['data']['expire_text'])
print("Token:", result['token'])
# 持续心跳
import threading
def heart():
while True:
heartbeat(result['token'])
time.sleep(30)
t = threading.Thread(target=heart, daemon=True)
t.start()
# 主程序运行...
else:
print("❌ 验证失败:", result['msg'])
使用C# HttpClient对接云盾验证API。
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class AuthClient
{
private static readonly HttpClient client = new HttpClient();
private const string API_URL = "http://your-domain.com/api/index.php";
private const string APP_KEY = "AKXXXXXXXXXXXX";
private const string APP_SECRET = "YOUR_APP_SECRET";
public async Task VerifyCard(string cardNo, string cardPwd)
{
var data = new
{
card_no = cardNo,
card_pwd = cardPwd,
machine_code = GetMachineCode(),
version = "1.0.0",
os_info = "Windows"
};
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair("app_key", APP_KEY),
new KeyValuePair("action", "verify"),
new KeyValuePair("data", JsonConvert.SerializeObject(data))
});
var response = await client.PostAsync(API_URL, content);
var json = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject(json);
}
public async Task Heartbeat(string token)
{
var content = new FormUrlEncodedContent(new[]
{
new KeyValuePair("app_key", APP_KEY),
new KeyValuePair("action", "heartbeat"),
new KeyValuePair("token", token)
});
var resp = await client.PostAsync(API_URL, content);
var json = await resp.Content.ReadAsStringAsync();
dynamic result = JsonConvert.DeserializeObject(json);
return result.code == 200;
}
private string GetMachineCode()
{
// 获取机器码逻辑
return Environment.MachineName + "-" + Environment.ProcessorCount;
}
}
public class AuthResult
{
public int code { get; set; }
public string msg { get; set; }
public string token { get; set; }
public AuthData data { get; set; }
}
public class AuthData
{
public string software { get; set; }
public long expire_time { get; set; }
public string expire_text { get; set; }
public int remain_count { get; set; }
public int card_type { get; set; }
public string notice { get; set; }
}
使用PHP cURL对接云盾验证API。
<?php
// 云盾网络验证系统 - PHP客户端示例
$apiUrl = 'http://your-domain.com/api/index.php';
$appKey = 'AKXXXXXXXXXXXX';
$appSecret = 'YOUR_APP_SECRET';
// 获取机器码
function get_machine_code() {
return md5(php_uname('n') . php_uname('m'));
}
// 调用API
function call_api($action, $params = []) {
global $apiUrl, $appKey;
$params['app_key'] = $appKey;
$params['action'] = $action;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $apiUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}
// 验证卡密
function verify_card($card_no, $card_pwd) {
return call_api('verify', [
'card_no' => $card_no,
'card_pwd' => $card_pwd,
'machine_code' => get_machine_code(),
'version' => '1.0.0',
'os_info' => 'PHP Client'
]);
}
// 心跳检测
function heartbeat($token) {
return call_api('heartbeat', ['token' => $token]);
}
// 使用示例
$result = verify_card('YD01-ABCD-EFGH-IJKL-MNOP', 'AB23CD45');
if ($result['code'] == 200) {
echo "✅ 验证成功,授权至: " . $result['data']['expire_text'] . PHP_EOL;
$token = $result['token'];
// 定期发送心跳...
echo heartbeat($token)['msg'];
} else {
echo "❌ " . $result['msg'];
}
?>