AZ TUTORIALS · 接口参考
CTW Pro · API 文档
CTW Pro 同时提供 HTTP 和 OpenURL 两种调用方式,两者功能一一对应。
| 项目 | 值 |
|---|---|
| HTTP 基址 | http://127.0.0.1:8080 |
| OpenURL 前缀 | CTW://?cmd= |
| 请求方式 | GET |
| 结果文件 | /var/mobile/ctwresult.txt |
| 参数文件 | /var/mobile/ctwparams.txt |
返回值
HTTP 响应
HTTP 接口直接返回 JSON,例如:
json
{"version":"1.0.1","code":0}code 为 0 表示请求成功,不为 0 表示出错。
结果文件
一键新机、切换记录等耗时操作,需要轮询 /var/mobile/ctwresult.txt 判断最终结果:
| 值 | 含义 |
|---|---|
0 | 完成 |
1 | 出错 |
2 | 执行中,继续等待 |
4 | 已到最后一条(仅 nextrecord) |
注意:结果文件里 0 才表示成功。
接口一览
| 功能 | HTTP 路径 | OpenURL |
|---|---|---|
| 获取版本号 | /version | — |
| 启动应用 | — | CTW://?cmd=open |
| 一键新机 | /newrecord | CTW://?cmd=newrecord |
| 下一条记录 | /nextrecord | CTW://?cmd=nextrecord |
| 清除所有记录 | /deleteallrecords | CTW://?cmd=deleteallrecords |
| 生效指定记录 | /activerecord?ID= | CTW://?cmd=activerecord&ID= |
| 生效第一条 / 最后一条 | /activefirstrecord · /activelastrecord | 同名 cmd |
| 删除指定记录 | /deleterecord?ID= | CTW://?cmd=deleterecord&ID= |
| 直接导入记录 | /importdirect | CTW://?cmd=importdirect |
| 导出指定记录 | /exportrecord?ID= | CTW://?cmd=exportrecord&ID= |
| 导出所有记录 | /exportallrecords | CTW://?cmd=exportallrecords |
| 重命名当前记录 | /renamecurrentrecord?name= | CTW://?cmd=renamecurrentrecord&name= |
| 记录名查 ID | /getbakidfromname?name= | CTW://?cmd=getbakidfromname&name= |
| 获取当前记录参数 | /getcurrentrecordparam | CTW://?cmd=getcurrentrecordparam |
| 设置当前记录参数 | /setcurrentrecordparam | CTW://?cmd=setcurrentrecordparam |
| 启用 / 禁用 App | /enablerecordapp?bid=&enable= | CTW://?cmd=enablerecordapp |
| 获取所有记录名 | /getallrecordsname | CTW://?cmd=getallrecordsname |
| 修改 GPS 定位 | /relocationwithbid?x=&y=&z=&r=&bid= | CTW://?cmd=relocationwithbid |
接口详情
获取版本号
GET http://127.0.0.1:8080/version返回客户端版本号,例如 {"version":"1.0.1","code":0}。可用来检测 CTW 是否在运行、接口是否可用。
启动应用
lua
openURL("CTW://?cmd=open")仅 OpenURL。把 CTW Pro 拉起到前台。
一键新机
GET http://127.0.0.1:8080/newrecord按当前设置生成一台新机并新建一条记录。执行前请确认在 App 内已勾选目标应用。调用后轮询结果文件,0 为完成。
下一条记录
GET http://127.0.0.1:8080/nextrecord切换到列表中的下一条记录。已经是最后一条时,结果文件返回 4,可用来判断一轮是否跑完。
清除所有记录
GET http://127.0.0.1:8080/deleteallrecords清空全部备份记录,不可恢复。
生效指定记录
GET http://127.0.0.1:8080/activerecord?ID=XXX| 参数 | 必填 | 说明 |
|---|---|---|
ID | 是 | 记录 ID。只知道记录名时,先用 记录名查 ID 获取 |
生效第一条 / 最后一条
GET http://127.0.0.1:8080/activefirstrecord
GET http://127.0.0.1:8080/activelastrecord直接生效列表中的第一条或最后一条记录,无需参数。
删除指定记录
GET http://127.0.0.1:8080/deleterecord?ID=XXX| 参数 | 必填 | 说明 |
|---|---|---|
ID | 是 | 要删除的记录 ID |
直接导入记录
GET http://127.0.0.1:8080/importdirect从 /var/mobile/Media/CTWImport/ 导入记录。佐罗备份也放在这个目录。
导出指定记录
GET http://127.0.0.1:8080/exportrecord?ID=XXX| 参数 | 必填 | 说明 |
|---|---|---|
ID | 是 | 要导出的记录 ID |
导出到 /var/mobile/Media/CTWExport/。
导出所有记录
GET http://127.0.0.1:8080/exportallrecords把全部记录导出到 /var/mobile/Media/CTWExport/。
重命名当前记录
GET http://127.0.0.1:8080/renamecurrentrecord?name=XXX| 参数 | 必填 | 说明 |
|---|---|---|
name | 是 | 新名称。中文必须 URL 编码,见下方 Lua 示例中的 urlEncode |
记录名查 ID
GET http://127.0.0.1:8080/getbakidfromname?name=XXX| 参数 | 必填 | 说明 |
|---|---|---|
name | 是 | 记录名,中文需 URL 编码 |
根据记录名查找备份 ID,常和 activerecord、deleterecord、exportrecord 配合使用。
获取当前记录参数
GET http://127.0.0.1:8080/getcurrentrecordparam把当前记录的设备参数写入 /var/mobile/ctwparams.txt,格式见 参数文件。
设置当前记录参数
GET http://127.0.0.1:8080/setcurrentrecordparam已停用
1.5.2 以后不再支持此接口,新版本请勿使用。
启用 / 禁用 App
GET http://127.0.0.1:8080/enablerecordapp?bid=BUNDLE&enable=1| 参数 | 必填 | 说明 |
|---|---|---|
bid | 是 | 目标 App 的 Bundle ID |
enable | 是 | 1 启用,0 禁用 |
获取所有记录名
GET http://127.0.0.1:8080/getallrecordsname直接返回 JSON:
json
{
"code": 0,
"data": {
"records": [
{ "id": "...", "name": "...", "selected": true }
],
"count": 1
}
}| 字段 | 说明 |
|---|---|
records[].id | 记录 ID |
records[].name | 记录名 |
records[].selected | 是否为当前生效记录 |
count | 记录总数 |
修改 GPS 定位
GET http://127.0.0.1:8080/relocationwithbid?x=&y=&z=&r=&bid=| 参数 | 必填 | 说明 |
|---|---|---|
x | 是 | 经度 |
y | 是 | 纬度 |
z | — | 海拔 |
r | — | 随机偏移范围 |
bid | 是 | 目标 App 的 Bundle ID |
参数文件
路径:/var/mobile/ctwparams.txt
- 每行一个参数,换行符为
chr(10) - 参数名和参数值之间用冒号
:分隔 - 调用
getcurrentrecordparam后打开该文件即可看到实际格式
| 参数名 | 说明 |
|---|---|
RecordID | 记录 ID,如「微信001」 |
RecordName | 记录名,默认自动生成 |
DeviceName | 设备名称,如「xxxx iPhone」 |
SystemVersion | 系统版本号,如「10.3.1」 |
IDFA | IDFA |
IDFV | IDFV |
UDID | 设备 UDID |
IMEI | 设备 IMEI |
SerialNum | 设备序列号 |
MAC | MAC 地址 |
SSID | Wi-Fi 名称 |
BSSID | Wi-Fi BSSID |
Lua 示例(触动精灵)
lua
require "TSLib"
local sz = require("sz")
local http = require("szocket.http")
-- URL 编码(中文记录名必须编码)
function urlEncode(s)
s = string.gsub(s, "([^%w%.%- ])", function(c)
return string.format("%%%02X", string.byte(c))
end)
return string.gsub(s, " ", "+")
end
-- 轮询结果文件:true 完成 / false 出错 / "last" 已到最后一条
function Check_CTW_Result()
::wait::
mSleep(2000)
local f = "/var/mobile/ctwresult.txt"
if isFileExist(f) then
local r = readFileString(f)
if r == "0" then return true end
if r == "1" then return false end
if r == "2" then
toast("执行中", 1)
goto wait
end
if r == "4" then return "last" end
end
end
-- 统一调用入口
function CTW(path)
local res, code = http.request("http://127.0.0.1:8080" .. path)
if code == 200 then
return Check_CTW_Result()
end
return false
end
-- 一键新机
CTW("/newrecord")
-- 按名称切换记录
local res = http.request("http://127.0.0.1:8080/getbakidfromname?name=" .. urlEncode("微信001"))
-- 从 res 中取出 ID 后:
CTW("/activerecord?ID=XXX")
-- 重命名当前记录
CTW("/renamecurrentrecord?name=" .. urlEncode("微信001"))
-- 遍历所有记录
CTW("/activefirstrecord")
while true do
-- ……执行业务……
if CTW("/nextrecord") == "last" then break end
end
-- OpenURL 写法
openURL("CTW://?cmd=open")
openURL("CTW://?cmd=newrecord")使用教程见 CTW Pro 使用教程。
提示
软件界面和支持范围可能随版本更新。执行清理、重置或删除操作前,请先备份重要数据。
