Skip to content

贝壳 · API 文档 ​

贝壳通过本机 HTTP 指令调用,格式为 /cmd?fun=指令名&参数。

项目值
手机脚本http://127.0.0.1:1688/cmd?
电脑调用http://设备局域网IP:1688/cmd?
请求方式GET
Bundle IDcloud.hacker.shell
结果文件/var/mobile/Media/Shell/tmp/iggresult.txt
参数文件/var/mobile/Media/Shell/tmp/iggparams.txt
导出目录/var/mobile/Media/Shell/exportdata/
导入目录/var/mobile/Media/Shell/importdata/

调用前准备 ​

  1. HTTP 脚本默认开启,无法手动关闭,不需要额外设置。
  2. 每次调用任何指令前,都必须先把贝壳启动到前台:
lua
local shell = require("shell")
shell.runApp("cloud.hacker.shell")
shell.mSleep(3 * 1000)  -- 第一次启动需要联网验证,建议等 3 秒

返回值 ​

指令调用后直接返回 JSON:

json
{"result": 1}

同时写入结果文件 /var/mobile/Media/Shell/tmp/iggresult.txt。

值含义
1执行完成
2正在执行,还未完成
3一键新机成功,但 IP 地址重复(仅 newrecord)
4已到最后一条(仅 nextrecord);haverecord 中表示记录不存在
0执行出错
10运行环境异常
100产品未激活或已过期

接口一览 ​

分类功能指令
屏幕截屏/snapshot
屏幕点击屏幕/tap
应用选择应用select
应用取消选择应用unselect
应用清除所有选择unselectall
应用获取当前选择getcurrentselect
应用清理指定应用clean
应用删除应用的备份deletebackup
应用卸载选中的应用uninstallselectedapp
应用清理 AppStorecleanappstore
记录一键新机newrecord
记录下一条记录nextrecord
记录判断记录是否存在haverecord
记录生效指定记录activerecord
记录生效第一条 / 最后一条activefirstrecord · activelastrecord
记录删除指定记录deleterecord
记录清除所有记录deleteallrecords
记录瘦身指定记录thinrecord
记录获取所有记录名getallrecordnames
记录按时间排序orderbytime · orderbytimedesc
备注设置 / 获取当前备注setcurrentremarks · getcurrentremarks
定位设置 / 清除当前坐标setcurrentrecordlocation · clearcurrentrecordlocation
参数获取 / 设置当前参数getcurrentrecordparam · setcurrentrecordparam
导入导出导出记录exportrecord · exportallrecords
导入导出导入记录importdirect · importcompatible

接口详情 ​

以下地址均以手机本机 127.0.0.1 为例。

截屏 ​

GET http://127.0.0.1:1688/snapshot

点击屏幕 ​

GET http://127.0.0.1:1688/tap?x=0.5&y=0.5
参数必填说明
x是横向位置,取值 0 ~ 1(屏幕宽度的比例)
y是纵向位置,取值 0 ~ 1(屏幕高度的比例)

选择 / 取消选择应用 ​

GET http://127.0.0.1:1688/cmd?fun=select&app=应用BID&save=false
GET http://127.0.0.1:1688/cmd?fun=unselect&app=应用BID&save=false
参数必填说明
app是应用的 Bundle ID
save—true 时会把选择结果保存到当前记录

清除所有选择 ​

GET http://127.0.0.1:1688/cmd?fun=unselectall

获取当前选择 ​

GET http://127.0.0.1:1688/cmd?fun=getcurrentselect

清理指定应用 ​

GET http://127.0.0.1:1688/cmd?fun=clean&app=应用BID

清理后数据永久丢失,请谨慎使用。

删除应用的备份 ​

GET http://127.0.0.1:1688/cmd?fun=deletebackup&app=应用BID&record=记录ID
参数必填说明
app是应用的 Bundle ID
record是记录 ID

请先用 unselect 取消选择该应用再调用,否则可能又被备份回来。删除后数据永久丢失。

卸载选中的应用 ​

GET http://127.0.0.1:1688/cmd?fun=uninstallselectedapp

如果已在 App 中打开「卸载应用」选项,一键新机后会自动执行,不需要再调用。

清理 AppStore ​

GET http://127.0.0.1:1688/cmd?fun=cleanappstore

如果已在 App 中打开「清理 AppStore」选项,一键新机后会自动执行,不需要再调用。

一键新机 ​

GET http://127.0.0.1:1688/cmd?fun=newrecord&machine=iPhone10,6&version=17D50&idfa=IDFA&checkip=true
参数必填说明
machine—机型标识,如 iPhone10,6
version—系统内部版本号(Build),如 17D50
idfa—指定 IDFA
checkip—是否检测 IP 重复
  • 所有参数都可以不传,此时随机生成。
  • machine 和 version 必须同时设置。
  • 传入 idfa 时,请确保本机没有这个 IDFA 的记录,否则会出现意外错误。已有该记录时请用 activerecord 恢复。

下一条记录 ​

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

返回 4 表示已经是最后一条。

判断记录是否存在 ​

GET http://127.0.0.1:1688/cmd?fun=haverecord&record=记录ID

返回 1 表示存在,4 表示不存在。

生效指定记录 ​

GET http://127.0.0.1:1688/cmd?fun=activerecord&record=记录ID

生效第一条 / 最后一条 ​

GET http://127.0.0.1:1688/cmd?fun=activefirstrecord
GET http://127.0.0.1:1688/cmd?fun=activelastrecord

删除指定记录 ​

GET http://127.0.0.1:1688/cmd?fun=deleterecord&record=记录ID

清除所有记录 ​

GET http://127.0.0.1:1688/cmd?fun=deleteallrecords

瘦身指定记录 ​

GET http://127.0.0.1:1688/cmd?fun=thinrecord&record=记录ID

获取所有记录名 ​

GET http://127.0.0.1:1688/cmd?fun=getallrecordnames

记录名列表写入 /var/mobile/Media/Shell/tmp/iggrecords.txt。

按时间排序 ​

GET http://127.0.0.1:1688/cmd?fun=orderbytime
GET http://127.0.0.1:1688/cmd?fun=orderbytimedesc

orderbytime 按时间正序,orderbytimedesc 按时间倒序。

设置 / 获取当前备注 ​

GET http://127.0.0.1:1688/cmd?fun=setcurrentremarks&remarks=备注
GET http://127.0.0.1:1688/cmd?fun=getcurrentremarks
参数必填说明
remarks是备注内容,最长 20 个字符,中文需 URL 编码

设置 / 清除当前坐标 ​

GET http://127.0.0.1:1688/cmd?fun=setcurrentrecordlocation&location=116.7361382365_39.8887921413_北京老胡同
GET http://127.0.0.1:1688/cmd?fun=clearcurrentrecordlocation
参数必填说明
location是格式 经度_纬度_地名,地名可省略

获取 / 设置当前参数 ​

GET http://127.0.0.1:1688/cmd?fun=getcurrentrecordparam
GET http://127.0.0.1:1688/cmd?fun=setcurrentrecordparam
  • getcurrentrecordparam:把当前记录参数写入 /var/mobile/Media/Shell/tmp/iggparams.txt。
  • setcurrentrecordparam:读取该文件中的参数并应用到当前记录。建议不要修改 IDFA。

正确流程:先获取 → 修改文件中的字段 → 再设置。格式见 参数文件。

导出记录 ​

GET http://127.0.0.1:1688/cmd?fun=exportrecord&record=记录ID
GET http://127.0.0.1:1688/cmd?fun=exportallrecords&zip=文件名

导出到 /var/mobile/Media/Shell/exportdata/。

导入记录 ​

GET http://127.0.0.1:1688/cmd?fun=importdirect
GET http://127.0.0.1:1688/cmd?fun=importcompatible

把要导入的记录放在 /var/mobile/Media/Shell/importdata/,必须是导出的 zip 包。importdirect 为直接导入,importcompatible 为兼容性导入。

参数文件 ​

路径:/var/mobile/Media/Shell/tmp/iggparams.txt

  • 每行一个参数,换行符为 chr(10)
  • 参数名和参数值之间用冒号 : 分隔
  • 调用 getcurrentrecordparam 后打开该文件即可看到实际格式
参数名说明
DeviceName设备名称,如「xxxx iPhone」
SystemVersion系统版本号,如「10.3.1」
IDFAIDFA
IDFVIDFV
UDID设备 UDID
IMEI设备 IMEI
SerialNum设备序列号
MACMAC 地址
SSIDWi-Fi 名称
BSSIDWi-Fi BSSID
OpenUDIDOpenUDID

Lua 示例 ​

lua
local json = require("cjson")
local http = require("socket.http")
local shell = require("shell")

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

-- 统一调用,返回 result 数值
function Beike(query)
    local res, code = http.request(BASE .. query)
    if code == 200 then
        return json.decode(res).result
    end
end

-- 1. 启动贝壳(所有指令之前必须执行)
shell.runApp("cloud.hacker.shell")
shell.mSleep(3 * 1000)

-- 2. 一键新机
local r = Beike("newrecord")
if r == 3 then
    -- IP 地址重复
elseif r == 100 then
    -- 未激活或已过期
end

-- 3. 生效指定记录
Beike("activerecord&record=APP001")

-- 4. 设置当前记录坐标
Beike("setcurrentrecordlocation&location=116.7361382365_39.8887921413_北京老胡同")

使用教程见 贝壳 · 使用教程。