AZ
十年iOS隐私保护插件服务商
AZ TUTORIALS · 接口参考

CTW Pro · API 文档

CTW Pro 同时提供 HTTP 和 OpenURL 两种调用方式,两者功能一一对应。

AZ 教程汇总站内阅读更新于 2026-11-01
项目值
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
一键新机/newrecordCTW://?cmd=newrecord
下一条记录/nextrecordCTW://?cmd=nextrecord
清除所有记录/deleteallrecordsCTW://?cmd=deleteallrecords
生效指定记录/activerecord?ID=CTW://?cmd=activerecord&ID=
生效第一条 / 最后一条/activefirstrecord · /activelastrecord同名 cmd
删除指定记录/deleterecord?ID=CTW://?cmd=deleterecord&ID=
直接导入记录/importdirectCTW://?cmd=importdirect
导出指定记录/exportrecord?ID=CTW://?cmd=exportrecord&ID=
导出所有记录/exportallrecordsCTW://?cmd=exportallrecords
重命名当前记录/renamecurrentrecord?name=CTW://?cmd=renamecurrentrecord&name=
记录名查 ID/getbakidfromname?name=CTW://?cmd=getbakidfromname&name=
获取当前记录参数/getcurrentrecordparamCTW://?cmd=getcurrentrecordparam
设置当前记录参数/setcurrentrecordparamCTW://?cmd=setcurrentrecordparam
启用 / 禁用 App/enablerecordapp?bid=&enable=CTW://?cmd=enablerecordapp
获取所有记录名/getallrecordsnameCTW://?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」
IDFAIDFA
IDFVIDFV
UDID设备 UDID
IMEI设备 IMEI
SerialNum设备序列号
MACMAC 地址
SSIDWi-Fi 名称
BSSIDWi-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 使用教程。

提示

软件界面和支持范围可能随版本更新。执行清理、重置或删除操作前,请先备份重要数据。