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

Thor · API 文档

Thor(雷神)通过本机 HTTP 接口调用,可以用脚本远程完成清理、切换、重命名、查询备份记录等操作。

AZ 教程汇总站内阅读更新于 2026-11-01
项目值
HTTP 基址http://127.0.0.1:8090
请求方式全部为 GET
指令格式/cmd?fun=指令名&参数
Bundle IDcom.superdev.Thor
结果文件/var/mobile/ThorResult.txt

调用前准备

所有指令调用前,都必须先把 Thor 启动到前台:

lua
runApp("com.superdev.Thor")
mSleep(3 * 1000)  -- 首次启动需要联网验证授权,建议等 3 秒

返回值

所有指令都返回 JSON,核心字段是 status:

值含义
1成功,操作已完成
0失败:参数错误 / 未授权 / 被拒绝
2进行中。这是内部状态,脚本一般收不到

最近一次指令的 status 也会写入 /var/mobile/ThorResult.txt,可以直接读取。

接口一览

功能指令参数
开始清理(一键新机)newrecord—
切换到指定备份activerecordrecord
切换到下一条备份nextrecord—
重命名当前备份renamecurrentrecordname
删除指定备份deleterecordrecord
启用 / 禁用备份disablerecordrecord
获取全部备份名称getallrecords—
获取当前备份名称getcurrentrecord—

接口详情

开始清理

GET http://127.0.0.1:8090/cmd?fun=newrecord

生成一套全新的设备身份并执行清理,等同于在 App 主页点「开始清理」。

失败情况:

  • 未选择应用
  • 设备未授权
  • 指令执行超时

切换到指定备份

GET http://127.0.0.1:8090/cmd?fun=activerecord&record=备份记录名称
参数必填说明
record是备份记录名称,含中文需 URL 编码

切换到一条已有的备份记录,还原它保存的设备参数。

切换到下一条备份

GET http://127.0.0.1:8090/cmd?fun=nextrecord

自动切到下一条可用备份,跳过已禁用的备份和「原始备份」,适合循环跑号。

失败情况:

  • 没有任何备份记录
  • 没有可切换的备份(都被禁用,或只剩当前这一条)

重命名当前备份

GET http://127.0.0.1:8090/cmd?fun=renamecurrentrecord&name=新名称
参数必填说明
name是新名称,不能为空。含中文、空格必须 URL 编码

失败情况:

  • 名称为空
  • 当前没有生效中的备份记录
  • 当前是「原始备份」(受保护,不能改名)

删除指定备份

GET http://127.0.0.1:8090/cmd?fun=deleterecord&record=备份记录名称
参数必填说明
record是备份记录名称

不能删除当前正在生效的备份。 删除后不可恢复。

启用 / 禁用备份

GET http://127.0.0.1:8090/cmd?fun=disablerecord&record=备份记录名称
参数必填说明
record是备份记录名称

开关式切换:已启用的会被禁用,已禁用的会被启用。被禁用的备份会被 nextrecord 跳过。不能禁用当前正在生效的备份。

获取全部备份名称

GET http://127.0.0.1:8090/cmd?fun=getallrecords

返回示例:

json
{ "status": 1, "records": ["原始备份", "2026-05-05-17-32-10-56", "自定义名称"] }
字段说明
records全部备份记录名称,包含「原始备份」

获取当前备份名称

GET http://127.0.0.1:8090/cmd?fun=getcurrentrecord

返回示例:

json
{ "status": 1, "current": "2026-05-05-17-32-10-56" }
字段说明
current当前生效的备份名称;没有生效的备份时为空字符串

Lua 示例(触动精灵)

lua
local sz = require("sz")
local http = require("szocket.http")

local BASE = "http://127.0.0.1:8090/cmd?fun="

-- URL 编码(中文名称需要)
function urlEncode(s)
    s = string.gsub(s, "([^%w%.%- ])", function(c)
        return string.format("%%%02X", string.byte(c))
    end)
    return string.gsub(s, " ", "+")
end

-- 统一调用:返回解析后的 JSON,失败返回 nil
function Thor(query)
    local res, code = http.request(BASE .. query)
    if code == 200 then
        return sz.json.decode(res)
    end
end

-- 启动 Thor(所有指令之前必须执行)
runApp("com.superdev.Thor")
mSleep(3 * 1000)

-- 1. 开始清理(一键新机)
local r = Thor("newrecord")
if r and r.status == 1 then
    toast("清理完成", 2)
end

-- 2. 重命名当前备份
Thor("renamecurrentrecord&name=" .. urlEncode("138xxxx吴有财"))

-- 3. 查看当前备份
local cur = Thor("getcurrentrecord")
if cur then toast("当前备份:" .. cur.current, 2) end

-- 4. 切换到指定备份
Thor("activerecord&record=" .. urlEncode("Wechat001"))

-- 5. 循环跑号:依次切换所有可用备份
local all = Thor("getallrecords")
if all then
    for i = 1, #all.records do
        local r = Thor("nextrecord")
        if not r or r.status ~= 1 then break end
        -- ……执行业务……
    end
end

使用教程见 Thor 使用教程。

提示

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