Kauth网络验证系统Kauth网络验证系统
首页
HTTP API文档
作者|代理后台
首页
HTTP API文档
作者|代理后台
  • Kaut介绍

    • 验证系统
    • 相关知识
    • 防破要诀
  • 网络验证

    • 数据安全
    • 心跳守护
    • 对接说明
    • C语言接口
  • 对接文档

    • HTTP对接
    • 懒人对接
    • AutoJs对接
    • EasyClick对接
    • Java对接
    • Python对接
    • 按键精灵

懒人对接

简介

懒人精灵网络验证SDK是专为懒人精灵平台开发的网络验证解决方案,支持卡密登录、账号密码登录、试用登录等多种验证方式,同时提供远程配置、远程变量、远程函数调用等高级功能。

快速开始

1. 下载SDK

首先下载SDK文件: 网盘下载

网盘中有懒人精灵的三个相关的文件

  • verifyhub.luaej (插件版本 1.8.0的版本+ 都能用,且插件轻量更小
  • 懒人精灵兼容所有版本示例-UTF8.zip (C语言动态库,支持所有的懒人版本 包体积会更大,里面有一个kauth.rc的资源 存放了C的库 不可删除
  • 懒人精灵兼容所有版本示例-GBK.zip (C语言动态库,主要是老版本比如1.4.8,还是用的GBK编码,里面有一个kauth.rc的资源 存放了C的库 不可删除
  • 他们只是SDK方式实现的加密解密有差异,其他的都一样

快速接入卡密

local verifyhub = require('verifyhub')
-- 配置参数
local paramApiDomain = "https://verifyhub.cn"
local paramProgramId = "222222222" --在后台系统 程序管理-> 程序列表 ->程序ID
local paramProgramSecret = "xxxxxxx" --在后台系统 程序管理-> 程序列表 ->程序密钥
local paramMerchantPublicKey ="xxxxxxx" --在后台系统 系统设置 -> 密钥配置 -> RSA公钥 -> PKCS#8格式
local paramKauthSignType = "RSA"
local platformType = "lanren_mobile"
-- 初始化配置
verifyhub.initConfig(paramApiDomain, paramProgramId, paramMerchantPublicKey, paramProgramSecret, paramKauthSignType)
verifyhub.setDeviceId(verifyhub.getDeviceId())
local loginResult = verifyhub.kaLogin("8dj9t25k",platformType,"","")
print(loginResult)

2. 使用WEB UI接入卡密


效果图

登录效果图
local verifyhub = require('verifyhub')
-- 配置参数
local paramApiDomain = "https://verifyhub.cn"
local paramProgramId = "xxxx" --在后台系统的 程序管理 -> 程序列表 -> 程序id
local paramProgramSecret = "xxxx" --在后台系统的 程序管理 -> 程序列表 -> 程序密钥
local paramMerchantPublicKey ="xxxxx" --在后台系统的 系统设置 -> 密钥设置 -> RSA公钥 -> PKCS#8格式
local paramKauthSignType = "RSA" --默认用RSA即可
local platformType = "lanren_mobile" -- 给平台级开发者专用的,一般用这个默认值即可
local autoLoginSuccess = false -- 是否自动登录成功

-- 初始化配置
verifyhub.initConfig(paramApiDomain, paramProgramId, paramMerchantPublicKey, paramProgramSecret, paramKauthSignType)
local deviceid = verifyhub.getDeviceId()
print("[kauth] deviceid:" .. deviceid)
verifyhub.setDeviceId(deviceid)



--  一行代码热更新,打包的lrj文件要上传到后台系统
verifyhub.autoUpdateLrj("lanren_1","1.0.0")

-- ==================== 登录成功回调 ====================
-- H5登录成功后调用此函数
function onLoginSuccess(resultJson)
    print("[Lua] 登录成功回调:", resultJson)
    local msg = "1.0.0登录成功-" .. resultJson.msg
    toast(msg, 0, 0, 12)
    -- 这里可以做一些登录成功后的操作
    ui.dismiss("layout1")
    autoLoginSuccess = true --改为true  这样最下面的while循环就会停止
end

-- ==================== 心跳失败回调 ====================
function onPongFail(reason)
    print("[Lua] 心跳失败:", reason)
    -- 心跳失败回调,你可以在这里自定义处理逻辑,比如重新打开登录窗口  或者退出脚本
    toast("即将退出脚本(心跳检测失败):"..reason,0,0,12)
    sleep(3000)
    exitScript()
end

-- 卡密已经登录过的 自动登录,如果不需要自动登录功能,请删除该代码
local kaPwd = verifyhub.readLocalFile("kaPwd", "")
autoLoginSuccess = false
if kaPwd and kaPwd ~= "" then
    print("[Lua] 检测到保存的卡密,开始自动登录尝试")
    -- 最多尝试登录10次
    local MAX_AUTO_LOGIN_ATTEMPTS = 10
    for i = 1, MAX_AUTO_LOGIN_ATTEMPTS do
        print("[Lua] 自动登录第 " .. i .. " 次尝试")
        toast("自动登录中 第" .. i .. "次", 0, 0, 12)
        local result = verifyhub.kaLogin(kaPwd, platformType, "", "")
        print("自动登录结果",result)
        if result.code == 2000 or result.code == 1000 then
            -- 错误码2000 |1000 不用重试了,比如卡密被禁用、被删除 等等
            toast("自动登录失败:" .. result.msg, 0, 0, 12)
            verifyhub.deleteLocalFile("kaPwd")
            break
        end
        if result.success then
            print("[Lua] 自动登录成功!")
            autoLoginSuccess = true
            onLoginSuccess(result)
            break
        else
            print("[Lua] 自动登录失败,常见错误信息: " .. tostring(result.msg))
        end
        sleep(500)
    end
    if not autoLoginSuccess then
        print("[Lua] 10次自动登录都失败,求助UI登录")
    end
end



-- ==================== 单码体系操作 ====================

-- 卡密登录
function onCardLogin(cardKey)
    print("[Lua] 卡密登录:", cardKey)
    local result = verifyhub.kaLogin(cardKey, platformType, "", "")
    print("[Lua] 卡密登录结果:", result)

    -- 回调H5结果
    local resultJson = jsonLib.encode(result)
    print("[Lua] 回调JSON:", resultJson)
    ui.callJs("webId", "javascript:onLuaCallBack('cardLogin', " .. resultJson .. ")")

    -- 如果登录成功
    if result.success then
        verifyhub.writeToLocalFile("kaPwd", cardKey)
        onLoginSuccess(result)
    end
end

-- 以卡充卡
function onCardRecharge(currentCardKey, rechargeCardKey)
    print("[Lua] 以卡充卡:", currentCardKey, rechargeCardKey)
    local result = verifyhub.rechargeKa(currentCardKey, rechargeCardKey)
    print("[Lua] 以卡充卡结果:", result)

    local resultJson = jsonLib.encode(result)
    ui.callJs("webId", "javascript:onLuaCallBack('cardRecharge', " .. resultJson .. ")")
end

-- 卡密解绑
function onCardUnbind(cardKey)
    print("[Lua] 卡密解绑:", cardKey)
    local result = verifyhub.unbindDeviceKaPwd(cardKey)
    print("[Lua] 卡密解绑结果:", result)

    local resultJson = jsonLib.encode(result)
    ui.callJs("webId", "javascript:onLuaCallBack('cardUnbind', " .. resultJson .. ")")
end

-- ==================== 账密体系操作 ====================

-- 账密登录
function onAccountLogin(username, password)
    print("[Lua] 账密登录:", username)
    local result = verifyhub.pwdLogin(username, password, "", "")
    print("[Lua] 账密登录结果:", result)

    local resultJson = jsonLib.encode(result)
    ui.callJs("webId", "javascript:onLuaCallBack('accountLogin', " .. resultJson .. ")")

    if result.success then
        onLoginSuccess(result)
    end
end

-- 账号注册
function onAccountRegister(username, password, nickName, cardKey)
    print("[Lua] 账号注册:", username)
    local result = verifyhub.register(username, password, nickName, cardKey, "", "")
    print("[Lua] 账号注册结果:", result)

    local resultJson = jsonLib.encode(result)
    ui.callJs("webId", "javascript:onLuaCallBack('accountRegister', " .. resultJson .. ")")
end

-- 账号改密
function onAccountChangePassword(username, oldPassword, newPassword)
    print("[Lua] 账号改密:", username)
    local result = verifyhub.changePassword(username, newPassword, oldPassword, newPassword, "", "")
    print("[Lua] 账号改密结果:", result)

    local resultJson = jsonLib.encode(result)
    ui.callJs("webId", "javascript:onLuaCallBack('accountChangePassword', " .. resultJson .. ")")
end

-- 账号充值
function onAccountRecharge(username, cardKey)
    print("[Lua] 账号充值:", username)
    local result = verifyhub.recharge(username, cardKey, "", "")
    print("[Lua] 账号充值结果:", result)

    local resultJson = jsonLib.encode(result)
    ui.callJs("webId", "javascript:onLuaCallBack('accountRecharge', " .. resultJson .. ")")
end

-- 账号解绑
function onAccountUnbind(username, password)
    print("[Lua] 账号解绑:", username)
    local result = verifyhub.unbindDevice(username, password, "", "")
    print("[Lua] 账号解绑结果:", result)

    local resultJson = jsonLib.encode(result)
    ui.callJs("webId", "javascript:onLuaCallBack('accountUnbind', " .. resultJson .. ")")
end

-- 试用登录
function onTrial()
    print("[Lua] 试用登录")
    local trialLoginResult = verifyhub.trialLogin()
    print("[Lua] 试用登录结果:", trialLoginResult)

    local resultJson = jsonLib.encode(trialLoginResult)
    ui.callJs("webId", "javascript:onLuaCallBack('trial', " .. resultJson .. ")")

    -- 如果试用登录成功
    if trialLoginResult.success then
        onLoginSuccess(trialLoginResult)
    end
end

if autoLoginSuccess == false then
    ui.newLayout("layout1")
    ui.addWebView("layout1", "webId", "https://h5.verifyhub.cn/login?platform=lanren")
    ui.show("layout1", false, 1, 0, false)

    while autoLoginSuccess==false do
        sleep(1000)
    end
end



-- 开启心跳,,最多允许10次失败,可自定义
verifyhub.pongServer(onPongFail, 10)

--请在下面开始编写您的脚本   不太建议这样裸奔,懒人脚本很容易被hook  不安全
-- 参考防破解方案 : https://blog.csdn.net/s591510922/article/details/155245167
print("要执行脚本了")

verifyhub.autoReptError(function()

    --在这里写代码,如果出现错误会自动上报堆栈信息,可在管理后台查看错误日志
    local obj = nil
    print(obj.method())  -- 访问 nil 的方法

end,"模拟错误脚本")
sleep(100000) --假装执行脚本
toast("脚本执行结束")






3. 热更lrj文件

-- 一行代码热更
-- first_update_lrj 为后台配置的脚本名称
-- currentScriptVersion 为当前脚本版本
verifyhub.autoUpdateLrj("first_update_lrj", "1.0.0")

4. 使用远程脚本执行

local scriptName = "test_script" -- 要个后台创建的脚本名称一致
local scriptInfo = verifyhub.getNewestScript(scriptName)
if scriptInfo.success then
	print("脚本名称:" .. scriptInfo.scriptName)
	print("版本号:" .. scriptInfo.versionNumber)
	print("版本描述:" .. scriptInfo.versionDescription)
	local downloadInfo = verifyhub.getScriptDownload(scriptName , scriptInfo.versionNumber)
	if downloadInfo.success then
		print("下载地址:" .. downloadInfo.downloadUrl)
		local ret,code = httpGet(downloadInfo.downloadUrl)
		--远程代码加载到lua中  如果有加密要求  请自己上传服务器的时候加密,执行前解密
		local func, err = load(ret)
		--执行远程代码
		func()
	else
		print("获取下载地址失败:" .. downloadInfo.msg)
	end
else
	print("获取脚本信息失败:" .. scriptInfo.msg)
end

新增远程脚本 (可以自行加密后上传)

新增远程脚本

远程脚本执行效果

远程脚本执行效果

卡密登录

local loginResp = verifyhub.kaLogin("卡密", platformType, "", "")
if loginResp.success then
    print("登录成功,用户ID:" .. loginResp.userId)
else
    print("登录失败:" .. loginResp.msg)
end

账号密码登录

local loginResp = verifyhub.pwdLogin("用户名", "密码", "", "")
if loginResp.success then
    print("登录成功,用户ID:" .. loginResp.userId)
else
    print("登录失败:" .. loginResp.msg)
end

试用登录

local loginResp = verifyhub.trialLogin()
if loginResp.success then
    print("试用登录成功,用户ID:" .. loginResp.userId)
else
    print("试用登录失败:" .. loginResp.msg)
end

获取用户信息

local userInfo = verifyhub.userInfo()
if userInfo.success then
    print("用户ID:" .. userInfo.userId)
    print("服务到期时间:" .. userInfo.serverExpireTime)
    print("服务类型:" .. userInfo.serverType)
else
    print("获取用户信息失败:" .. userInfo.msg)
end

修改密码

local result = verifyhub.changePassword("用户名", "旧密码", "新密码", "确认新密码", "", "")
if result.success then
    print("密码修改成功")
else
    print("密码修改失败:" .. result.msg)
end

退出登录

local result = verifyhub.loginOut()
if result.success then
    print("退出登录成功")
else
    print("退出登录失败:" .. result.msg)
end

获取卡密配置

local config = verifyhub.getKaConfig()
if config.success then
    print("卡密配置:" .. config.config)
else
    print("获取卡密配置失败:" .. config.msg)
end

修改卡密配置

local result = verifyhub.updateKaConfig("新的配置内容")
if result.success then
    print("卡密配置更新成功")
else
    print("卡密配置更新失败:" .. result.msg)
end

获取用户配置

local config = verifyhub.getUserConfig()
if config.success then
    print("用户配置:" .. config.config)
else
    print("获取用户配置失败:" .. config.msg)
end

修改用户配置

local result = verifyhub.updateUserConfig("新的用户配置")
if result.success then
    print("用户配置更新成功")
else
    print("用户配置更新失败:" .. result.msg)
end

添加远程数据

local result = verifyhub.addRemoteData("键名", "值")
if result.success then
    print("远程数据添加成功")
else
    print("远程数据添加失败:" .. result.msg)
end

获取远程数据

local data = verifyhub.getRemoteData("键名")
if data.success then
    print("远程数据值:" .. data.value)
else
    print("获取远程数据失败:" .. data.msg)
end

更新远程数据

local result = verifyhub.updateRemoteData("键名", "新值")
if result.success then
    print("远程数据更新成功")
else
    print("远程数据更新失败:" .. result.msg)
end

删除远程数据

local result = verifyhub.deleteRemoteData("键名")
if result.success then
    print("远程数据删除成功")
else
    print("远程数据删除失败:" .. result.msg)
end

获取远程变量

local variable = verifyhub.getRemoteVar("变量名")
if variable.success then
    print("远程变量值:" .. variable.value)
else
    print("获取远程变量失败:" .. variable.msg)
end

调用远程函数


local functionParams = {
    {
        paramName = "param1",
        paramValue = "值1"
    },
    {
        paramName = "param2",
        paramValue = "值2"
    }
}
local result = verifyhub.callFunction("函数名", functionParams)
if result.success then
    print("远程函数返回值:" .. result.result)
else
    print("调用远程函数失败:" .. result.msg)
end

获取最新脚本信息

local scriptInfo = verifyhub.getNewestScript("脚本名称")
if scriptInfo.success then
    print("脚本名称:" .. scriptInfo.scriptName)
    print("版本号:" .. scriptInfo.versionNumber)
    print("版本描述:" .. scriptInfo.versionDescription)
else
    print("获取脚本信息失败:" .. scriptInfo.msg)
end

获取脚本下载地址

local downloadInfo = verifyhub.getScriptDownload("脚本名称", "版本号")
if downloadInfo.success then
    print("下载地址:" .. downloadInfo.downloadUrl)
else
    print("获取下载地址失败:" .. downloadInfo.msg)
end

热更新脚本

获取懒人精灵打包的lr脚本下载地址后,可以使用热更新功能更新懒人的脚本代码:

if scriptDownloadResult.success then
    -- 下载文件,安装热更新
    local lrPath = getSdPath() .. newestResult.versionNumber .. ".lr"
    local downloadStatus = downloadFile(scriptDownloadResult, lrPath)
    if downloadStatus == 0 then
        installLrPkg(lrPath)
    end
end

图形验证码

部分接口支持图形验证码功能:

local captchaResult = verifyhub.getCaptcha(verifyhub.generateUUID())
if captchaResult.success then
    print("验证码UUID:" .. captchaResult.uuid)
    print("验证码图片Base64:" .. captchaResult.captchaBase64)
else
    print("获取验证码失败:" .. captchaResult.msg)
end

常见问题

1. 设备ID问题

懒人精灵在某些情况下可能无法正确获取设备ID,SDK提供了自动生成设备ID的方案:

verifyhub.setDeviceId(verifyhub.getDeviceId()) -- 使用SDK自动生成的设备ID

2. 网络请求失败

如果遇到网络请求失败的问题,请检查:

  • 网络连接是否正常
  • 服务器地址是否正确
  • 程序ID和密钥是否正确
  • 设备是否被封禁

3. 签名错误

如果出现签名错误,请检查:

  • 时间是否同步
  • 参数是否正确传递
  • 密钥是否正确配置
最近更新:: 2025/12/4 12:54
Contributors: SongLongKuan
Prev
HTTP对接
Next
AutoJs对接