脚本做出来怎么收钱、怎么防白嫖,是每个脚本作者都要面对的现实问题。本地注册码那套“算个码给用户”的方案早就不够用了——逆向者改一行判断就能绕过,卡密能无限复制,作者一分钱收不到还干瞪眼。
网络验证 + 卡密系统是目前手机自动化脚本行业主流的授权方案:卡密绑定设备、心跳持续校验、云端变量远程可控。而且它不只支持安卓——iOS 苹果脚本(中控版、脱机版)同样支持,三端共用一套平台。这篇文章把整套流程讲清楚:平台侧怎么配置、脚本侧怎么接入、安卓与 iOS 有什么差别、容错和防破解怎么设计。
一、整体架构:云端授权,脚本校验
网络验证的核心思路是:授权状态不在脚本里,在服务器上。
用户输入卡密 → 脚本请求服务器绑定 → 服务器校验并记录设备
↓
脚本正常运行,期间持续心跳(卡密自带,无需额外调用)
↓
卡过期 / 被禁用 / 换设备 → 服务器拒绝 → 脚本提示错误
- 授权校验:卡密是否有效、是否绑定当前设备,由服务器说了算;
- 持续心跳:不是“验证一次就完”,脚本运行期间持续通信,卡密被禁用立刻生效;
- 脚本安全校验:可开启包名、APK/脚本指纹验证,防换壳、防篡改——这是区别于市面上多数网络验证平台的差异化能力。
支持平台一览
| 平台 | 最低版本(直接函数调用) | 说明 |
|---|---|---|
| 安卓 | EC 安卓 9.13.0+ | 无需集成 SDK,直接调用 ecNetCard 函数 |
| iOS 中控 | iOS 中控 6.12.0+ | 低于此版本需下载网络验证 SDK 包手动集成 |
| iOS 脱机版 | iOS 脱机版 3.1.0+ | 同上,SDK 集成方式 |
三端共用同一个用户中心(uc.ieasyclick.com)、同一套 ecNetCard 函数、同一套卡密体系——一套授权方案,覆盖安卓和苹果脚本。
二、平台侧配置:用户中心三步走
登录用户中心(uc.ieasyclick.com),核心操作集中在三个模块。
2.1 软件列表:先建“软件”,拿 appid
新增一个软件,就会获得 appid 和密钥——这是脚本里 ecNetCard.netCardInit 初始化卡密所需的参数。
创建软件时注意这些选项:
| 选项 | 说明 |
|---|---|
| 软件类型 | 选择安卓还是 iOS,选错可能无法正确匹配参数 |
| 验证包指纹 | 是否验证 APK 文件(需先在脚本列表上传 APK) |
| 验证脚本指纹 | 是否验证 iec 脚本文件(需上传 iec) |
| 心跳错误次数 | 心跳请求容错次数,网络抖动容错,达到阈值才报错 |
| 卡密验证错误次数 | 卡密验证容错次数,防止误判 |
| 脚本验证错误次数 | 脚本文件验证容错次数 |
| 开启验证 | 整个软件验证的总开关,开发期间可以设为否 |
| 状态 | 禁用后所有卡密不可用,脚本收到错误信息 |
建议:开发期间不要开启包指纹和脚本指纹验证(还没上传文件),把打包的 APK 和 iec 保留好,后期发现被破解或想禁用时再上传开启。
2.2 脚本列表:登记你的 iec 文件
脚本列表相当于给每个编译好的 iec 文件登记一条记录:
| 字段 | 说明 |
|---|---|
| 软件版本 | 脚本版本信息,如 1.0 |
| 软件包名 | 安卓专用,填打包的 APK 包名,填写即开启验证,匹配失败脚本无法运行 |
| 包指纹 | APK 的文件指纹(MD5),填写即验证 APK 文件 |
| 脚本指纹 | iec 文件指纹(MD5),填写即验证 iec 文件 |
包名、包指纹、脚本指纹三选一填写即可。上传不会记录文件本身,只计算 MD5 值。不新建脚本列表,网络验证也能正常使用。
2.3 卡密管理:生成与批量运维
卡密管理用来生成网络验证卡,支持一个设备一张卡,也支持多个设备一张卡:
| 字段 | 说明 |
|---|---|
| 生成数量 | 一次生成多少张卡 |
| 卡有效天数 | 卡密有效天数,第一次绑定设备开始计时,不使用不计时 |
| 解绑密码 | 卡绑定设备后解绑需使用该密码,不设置则无需密码即可解绑 |
| 顶号功能 | 多设备卡开启后,后请求设备自动把最先绑定设备踢下线 |
还有两个批量运维功能很实用:
- 批量加时间:给选中卡自动加时长,避免卡过期,客户无需重新绑定卡号;
- 批量加在线量:给选中卡增加可承载的设备量,客户无需重新绑卡。
三、脚本侧接入:ecNetCard 实战(安卓 / iOS 通用)
核心流程四步:初始化 → 绑定 → 校验 → 执行。下面以安卓为例:
function main() {
// 自定义设备id(可选,EC 安卓 11.21.0+,不超过32字符)
ecNetCard.setDeviceId("123")
let appId = "sjfjvkpw" // 用户中心后台获取
let appSecret = "ykjscxcs" // 用户中心后台获取
let cardNo = "cbwolrftnw" // 用户购买的卡密
// 1. 初始化卡密
let inited = ecNetCard.netCardInit(appId, appSecret)
logd("inited card => " + JSON.stringify(inited));
// 2. 绑定卡密
let bind = ecNetCard.netCardBind(cardNo)
let bindResult = false;
if (bind != null && bind != undefined && bind["code"] == 0) {
logd("卡密绑定成功")
logd("剩余时间:" + bind['data']['leftDays'] + "天")
logd("激活时间:" + bind['data']['startTime'])
logd("过期时间:" + bind['data']['expireTime'])
bindResult = true;
} else {
logd("卡密绑定失败: " + (bind == null ? "无返回值" : bind["msg"]))
}
if (!bindResult) {
return // 绑定失败,终止脚本
}
// 3. 获取云端变量(可以是字符串,也可以是JS代码)
let user_ageJson = ecNetCard.netCardGetCloudVar("user_age")
logd("云端变量值 => " + user_ageJson['data'])
// 4. 执行业务逻辑...
while (true) {
sleep(1000)
}
}
main();
iOS 苹果脚本的差别:调用方法完全一致,唯一不同是 netCardInit 多了第三个参数 deviceIdType:
// iOS 中控 / iOS 脱机版
// deviceIdType: 1 = 使用设备id,2 = 使用 ecid(iOS 中控 6.29.0+、脱机版 3.9.0+ 支持)
let inited = ecNetCard.netCardInit(appId, appSecret, "2")
注意(iOS 脱机版):如果你是网络在线方式初始化的,
deviceIdType一定要写1,否则可能无法初始化。
3.1 常用函数一览
| 函数 | 作用 |
|---|---|
netCardInit(appId, appSecret, deviceIdType?) |
初始化卡密;安卓无第三参数,iOS 可传 deviceIdType(1=设备id,2=ecid) |
netCardBind(cardNo) |
绑定卡密,返回 code=0 表示成功,data 里含剩余天数/激活时间/过期时间 |
netCardGetCloudVar(name) |
获取云端变量 |
netCardUpdateCloudVar(name, value) |
更新云端变量(需后台开启“支持远程修改”) |
netCardUnbind(cardNo, password) |
解绑卡密(也可后台操作) |
setDeviceId(deviceId) |
自定义设备 ID(安卓 11.21.0+,不超过 32 字符) |
卡密自带心跳验证,无需另外调用——绑定成功后,脚本运行期间自动与服务器保持心跳,卡被禁用、过期、设备不匹配都会实时响应。无论是集成版本还是 SDK 版本,调用方法都一样,都是 ecNetCard 开头的模块。
四、云端变量:被破解后的“远程止损开关”
云端变量是这套系统里非常关键的一环:在云端设置一个变量,脚本运行时动态获取。它可以是普通字符串,也可以是一段 JS 代码——脚本获取后在 eval 中执行。
// 获取云端变量
let configJson = ecNetCard.netCardGetCloudVar("auth_config")
// 如果内容是 JS 代码,可以 eval 执行
eval(configJson['data'])
用法价值:
- 动态开关:在后台改一个变量值,所有已部署脚本立刻改变行为;
- 远程热修:关键业务逻辑放云端,发现被破解,替换这段代码让脚本停止运行或进入“提示购买”状态;
- 灰度下发:按需给不同用户下发不同配置。
发现被破解时,及时替换远程代码并停止脚本——这是官方防破解建议里最直接的一招“一键止损”。
五、热更新管理:授权和更新放一起管
网络验证平台自带热更新管理,对接阿里云 OSS 存储:
- 配置 OSS:在阿里云 RAM 创建用户拿到 AccessKeyId / AccessKeySecret,授权 AliyunOSSFullAccess,在平台的 OSS 配置管理里填写;bucket 如有权限问题可手动创建并开启公共读;
- 上传脚本:新增脚本,上传 iec 文件(版本配置为整数),自动传到 OSS 并生成下载地址和 md5;
- 配置热更新地址:在软件列表复制热更新地址,填到脚本的 update.json 里。
更新地址分新旧两版:新地址支持 EC 安卓 9.31.0+、iOS 脱机版 3.17.0+,通信安全加密;老地址为兼容旧版本,通信不加密。需要屏蔽老地址可在软件列表设置“热更新兼容选项为仅新版本”。
六、总结
网络验证卡密系统,本质上是把脚本商业化基础设施化,而且一套方案通吃安卓和苹果:
- 跨平台:安卓 / iOS 中控 / iOS 脱机版三端共用同一平台、同一套 ecNetCard 函数,一套卡密体系;
- 授权:卡密绑定设备、心跳持续校验,卡的状态服务器实时可控;
- 容错:心跳/卡密/脚本三重容错阈值,网络抖动不误杀正常用户;
- 防破解:包名 + APK 指纹 + iec 指纹三重验证,配合代码混淆和云端变量远程止损;
- 运维:批量加时间、批量加在线量,续期扩量不用重新绑卡;
- 更新:热更新管理内置,授权和代码分发一个平台搞定。
对于靠脚本吃饭的作者来说,网络验证不是“可选项”——它是把脚本从“作品”变成“商品”的那道门槛。不管你的脚本跑在安卓还是苹果上,装上它,你才真正掌握了自己代码的命运。
想要真实跑起来?
本文介绍的方案均可在 EasyClick 手机自动化平台落地。官网提供完整文档、开发工具与群控云控产品,免费体验。