复制页面 Hubstudio - API 使用说明文档 - Linux Server 部署与自动化指南 - Hubstudio CLI 命令行操作指南 - Hubstudio local API - 环境管理 - 获取环境列表 - 创建环境 - 更新环境 - 更新环境代理 - 导入Cookie - 导出Cookie - 删除环境 - 获取随机UA - 清除环境本地缓存 - 清理环境内插件缓存 - 刷新指纹 - 查询webglVendor和webglRenderer - 批量修改备注 - 下载内核 - 更新环境基础信息 - 更新环境标签 - 浏览器环境 - 打开环境 - 关闭环境 - 关闭所有环境 - 获取浏览器状态 - 切换浏览器窗口 - 获取所有打开环境 - 获取全部屏幕(物理机的屏幕) - 浏览器窗口自定义排列 - 云手机 - 应用管理 - APP列表(分页)\查询可安装应用列表 - 已安装应用列表查询 - 新增团队应用 - app应用安装 - APP启动 - APP重启 - APP停止 - APP卸载 - 添加自定义到团队应用 - 设置隐藏无障碍服务 - 文件管理 - 选择本地上传文件到云手机 - 公网文件上传文件到云手机 - 设置keyBox - RPA - RPA模板参数填写规范 - RPA-计划分页查询 - RPA-个人模板分页查询 - RPA-市场模板分页查询 - RPA-保存计划 - RPA-取消计划 - RPA-执行记录分页查询 - RPA-取消记录 - RPA-记录详情查询 - RPA-快速保存一次性计划 - 云手机商品列表 - 云手机分页列表 - 添加云手机 - 国家时区语言列表 - 批量开启云手机 - 批量关闭云手机 - 更新代理 - 批量获取云手机ADB状态 - 批量更新云手机ADB状态 - 一键新机 - 获取一键新机状态及可用数量 - 查询品牌机型 - 执行shell命令 - 修改云手机信息 - 发送短信到云手机 - 批量删除云手机 - 批量修改云手机分组 - 截图 - Base64截图 - 查询团队预装应用列表 - 触控-单击 - 触控-双击 - 触控-拖拽 - 触控-长按 - 触控-滑动 - 平台账号管理 - 账号分页列表 - 账号删除 - 添加环境账号 - 账号更新 - 分组管理 - 删除环境分组 - 新建环境分组 - 获取环境分组列表 - TK 运营自动化 - 创建批量发视频任务 - 创建TikTok智能养号任务 - 创建批量改资料任务 - 分页查询自动化任务 - 分页查询自动化任务执行明细 - 查询自动化任务结果 - 取消自动化任务 - 团队工具 - 创建或覆盖团队 Webhook - 获取云手机远程连接 - 查询团队账户余额 - 查询团队环境打开次数 - 用户登录态 - 退出登录 - 账号登录 - Hubstudio open API - 认证 - 获取调用凭证 - 查询当前凭证信息 - 环境管理 - 获取环境列表 - 创建环境 - 更新环境 - 更新环境代理 - 删除环境 - 导入Cookie - 导出Cookie - 获取随机UA - 刷新指纹 - 批量修改备注 - 查询webglVendor和webglRenderer - 平台账号 - 账号分页列表 - 账号更新 - 添加环境账号 - 账号删除 - 环境分组 - 获取环境分组列表 - 新建环境分组 - 删除环境分组 - 云手机 - 云手机商品列表 - 云手机分页列表 - 添加云手机 - 批量删除云手机 - 国家时区语言列表 - 批量开启云手机 - 批量关闭云手机 - 更新代理 - 批量获取云手机ADB状态 - 批量更新云手机ADB状态 - 查询品牌机型 - 一键新机 - 获取一键新机状态及可用数量 - 公网文件上传文件到云手机 - APP列表(分页)\查询可安装应用列表 - 新增团队应用 - 已安装应用列表查询 - app应用安装 - APP启动 - APP重启 - APP停止 - APP卸载 - 执行shell命令 - 设置keyBox - 修改云手机信息 - 批量修改云手机分组 - 发送短信到云手机 - 获取云手机远程连接 - 截图 - Base64截图 - 触控-单击 - 触控-双击 - 触控-长按 - 触控-滑动 - 触控-拖拽 - 查询团队预装应用列表 - 设置隐藏无障碍服务 - TK自动化 - 创建批量发视频任务 - 创建TikTok智能养号任务 - 创建批量改资料任务 - 分页查询自动化任务 - 查询自动化任务结果 - 分页查询自动化任务执行明细 - 取消自动化任务 # Hubstudio CLI 命令行操作指南 复制页面 hubstudio-cli 是随 Hubstudio 客户端分发的独立命令行工具,用于通过命令行调用 Hubstudio 客户端的 Local API。 它不会启动 Hubstudio 客户端,也不依赖 Node.js。使用前需要先启动 Hubstudio 客户端、完成登录,并在客户端中开启本地 API。 官网 Local API 文档 ## 适用对象 # 本文档适合需要通过命令行完成以下操作的用户: 打开、关闭或查询浏览器环境。 查询或管理环境、账号、分组。 调用云手机、RPA 等 Local API 能力。 在 Linux 服务器或自动化环境中配合无头 Hubstudio 客户端使用 CLI。 登录 或者 退出 客户端 ## 下载与安装 # ### 1. 下载地址 # 请根据您的操作系统和处理器架构下载对应的 hubstudio-cli 命令行工具: | 操作系统 / 架构 | 下载链接 | 默认二进制文件名 | macOS (Intel / x64) | 点击下载 | hubstudio-cli | macOS (Apple Silicon / arm64) | 点击下载 | hubstudio-cli | Linux (x64) | 点击下载 | hubstudio-cli | Windows (x64) | 点击下载 | hubstudio-cli.exe ### 2. 安装与权限配置 # #### macOS / Linux 系统 # 1 . 赋予可执行权限 :下载后的二进制文件默认可能没有执行权限,请在终端中执行以下命令赋予权限: ``` ``` 2 . (可选)配置全局环境变量 :若希望在任意目录下直接调用,可将二进制文件移动到系统的 PATH 路径下(例如 /usr/local/bin ): ``` ``` #### Windows 系统 # 1 . 下载后得到 hubstudio-cli.exe 。 2 . (可选)配置全局环境变量 :将 hubstudio-cli.exe 所在的文件夹路径添加到系统的“环境变量 -> Path”中,即可在任意目录下通过命令行直接运行。 ## 快速开始 # 确认 Hubstudio 客户端已经启动并开启 Local API 后,可以直接在命令行中执行。 [!TIP] 在 macOS / Linux 系统中,如果未将工具加入全局环境变量,执行时需带上当前路径前缀(如 ./hubstudio-cli )。 在 Windows 系统中,可通过命令提示符(CMD)或 PowerShell 运行 hubstudio-cli.exe 。 ``` ``` 如果客户端开启了「本地 API 安全认证」,需要传入客户端里配置的 API Key: ``` hubstudio-cli --local-api-key "你的API Key" start-browser containerCode=11895682 ``` 查看帮助: ``` hubstudio-cli --help hubstudio-cli help start-browser hubstudio-cli start-browser --help ``` 如果命令连接失败,请优先查看本文末尾的“常见问题”。 ## 常用命令速查 # | 场景 | 命令示例 | 查询客户端版本 | hubstudio-cli client-version | 打开环境 | hubstudio-cli start-browser containerCode=11895682 | 关闭环境 | hubstudio-cli stop-browser containerCode=11895682 | 查询运行状态 | hubstudio-cli browser-status | 查询指定环境 | hubstudio-cli browser-status --json '{"containerCodes":["11895682"]}' | 列出屏幕 | hubstudio-cli list-displays | 查询环境列表 | hubstudio-cli env-list --json '{"page":1,"pageSize":20}' | 查看帮助 | hubstudio-cli --help | 登录客户端 | `echo '{"account":"用户名","password":"密码"}' | 退出客户端 | hubstudio-cli --help ## 使用前提 # Hubstudio 图形客户端必须已经启动。 当前账号必须已登录。 客户端里的 Local API 必须已开启。 如果开启了本地 API 安全认证,使用 CLI 时必须传入 API Key 参数(使用 --local-api-key 选项或设置 HUBSTUDIO_LOCAL_API_KEY 环境变量)。 Local API 默认地址是 http://127.0.0.1:6873 。如果客户端使用了其它端口,CLI 会优先通过客户端 IPC 查询当前端口,也可以用 -p 手动指定。 Linux AppImage 可以用无头方式启动客户端,启动后再使用 hubstudio-cli 调用 Local API。无头模式必须提供 App Key 登录参数: ``` ./Hubstudio.AppImage \ --no-sandbox \ --headless=true \ --app-id="你的 app_id" \ --app-secret="你的 app_secret" \ --login-group-code=你的团队code ``` 无头模式不会展示登录页和主界面,但仍会启动本地服务、完成 App Key 登录,并提供 Local API 给 hubstudio-cli 调用。 ## 全局选项 # 全局选项需要放在子命令前面,例如: ``` hubstudio-cli --local-api-key "你的API Key" start-browser containerCode=11895682 ``` ``` -p, --port Local API 端口 -H, --host 主机,默认 127.0.0.1 --local-api-key Local API 安全认证密钥 --timeout HTTP 请求超时秒数,默认 30 秒,0 表示不限制 -j, --json 整段 JSON 请求体,覆盖 key=value --json-stdin 从标准输入读取 JSON 请求体 -h, --help 显示帮助 -V, --version 显示版本 ``` 等价环境变量: | 环境变量 | 说明 | HUBSTUDIO_LOCAL_API_PORT | IPC 查询失败且未传 -p 时使用 | HUBSTUDIO_LOCAL_API_KEY | 等价 --local-api-key | HUBSTUDIO_CLI_TIMEOUT | 等价 --timeout ### 超时控制 # 默认情况下,CLI 会通过客户端 IPC 查询一次端口;端口发现不受 --timeout 影响。HTTP 请求阶段默认最多等待 30 秒,如果希望调整 HTTP 请求等待时间,可以使用 --timeout : ``` hubstudio-cli --timeout 30 browser-status HUBSTUDIO_CLI_TIMEOUT=30 hubstudio-cli browser-status ``` --timeout 的单位是秒。未传时默认 30 秒;传入 0 表示不限制 HTTP 请求等待时间。 如果 HTTP 请求阶段超过指定时间仍未收到 Local API 响应,CLI 会先退出,并输出类似下面的超时响应: ``` {"code":408,"msg":"CLI request timeout after 30s. The Local API operation may still be running in Hubstudio client."} ``` 请注意:超时只表示 CLI 停止等待 HTTP 响应,不代表 Hubstudio 客户端内部操作已取消。对于打开环境、创建环境、云手机开机、RPA 任务等可能继续在客户端中执行的操作,建议随后通过状态查询接口确认最终结果。 ## 端口发现 # 通常不需要手动指定端口。Hubstudio 客户端启动 Local API 后,会同时启动一个本机 IPC 服务,CLI 会向该服务查询当前 Local API 端口。 IPC 服务地址: | 平台 | IPC 地址 | Windows | \\.\pipe\Hubstudio-cli | macOS/Linux | /tmp/Hubstudio-cli 如果 IPC 查询失败,CLI 会依次使用 HUBSTUDIO_LOCAL_API_PORT 和默认端口 6873 。 手动指定端口示例: ``` hubstudio-cli -p 6873 browser-status HUBSTUDIO_LOCAL_API_PORT=6873 hubstudio-cli browser-status ``` ## 请求体写法 # CLI 支持三种请求体写法:简单参数推荐使用 key=value ,复杂参数推荐使用 --json 或 --json-stdin 。 ### key=value # CLI 会把子命令后的 key=value 转成 JSON 请求体: ``` hubstudio-cli client-version hubstudio-cli start-browser containerCode=11895682 isHeadless=true pageZoom=100 ``` 转换规则: | 输入 | JSON 类型 | true / false | boolean | null | null | 100 / 1.5 | number | {...} / [...] | object / array | 其它 | string ### --json # 复杂请求体建议直接使用 --json : ``` hubstudio-cli arrange-browsers --json '{"x":10,"y":10,"width":600,"height":500,"gapX":20,"gapY":20,"colNum":3}' ``` ### --json-stdin # 也可以从标准输入读取 JSON: ``` echo '{"containerCode":"11895682"}' | hubstudio-cli start-browser --json-stdin ``` ## 客户端信息命令 # ### client-version # 通过 Hubstudio 客户端启动后的 Hubstudio-cli IPC Server 获取当前客户端版本号。该命令不调用 Local API,也不需要请求体参数。 ``` hubstudio-cli client-version ``` 成功时返回: ``` {"code":0,"msg":"Success","data":{"version":"3.52.0","pid":12345}} ``` 如果客户端尚未启动,或 IPC Server 不可连接,会返回错误信息。 ## 子命令 # hubstudio-cli 的每个子命令都对应一个 Local API POST 接口。命令名由 API 路径去掉 /api/v1/ 后将 / 替换为 - 得到,例如 /api/v1/env/list 对应 env-list 。 下面按官网 API 使用说明文档 的分组列出当前 CLI 支持的子命令。每个子命令都包含命令名称、Local API、官网文档和请求体参数清单。 说明: 表格中的“参数清单”主要列请求体 JSON 字段;全局选项和认证方式见上文。 所有接口均通过 POST 调用本地 Local API。 如果请求体字段较多,建议直接使用 --json ,避免 shell 对特殊字符的转义问题。 字段是否必填以官网 OpenAPI required 标记为准;部分业务必填字段可能由接口逻辑校验,调用前请结合官网文档确认。 ### 1. 环境管理 # #### env-list # Local API: POST /api/v1/env/list 官网文档: 获取环境列表 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCodes | array | 否 | 指定环境ID查询环境 | containerName | string | 否 | 指定环境名称查询环境 | createEndTime | string | 否 | 创建时间-截止时间 example: yyyy-MM-dd HH:mm:ss | createStartTime | string | 否 | 创建时间-起始时间 example: yyyy-MM-dd HH:mm:ss | ipAddress | string | 否 | IP地址查询 | proxyTypeNames | array | 否 | 代理类型 HTTP、HTTPS、SSH、Socks5、Oxylabsauto、Lumauto 、Luminati、 smartproxy、IPIDEA、Iphtml、不使用代理 | remark | string | 否 | 指定环境备注信息查询环境 | tagCode | integer | 否 | 分组编号 默认不传参,若需要查询“未分组”的环境,传任意 | tagNames | array | 否 | 环境分组名称数组 查询指定分组的环境 | current | integer | 否 | 当前页面 | size | integer | 否 | 分页条数 最多200条。 | serviceProvider | string | 否 | 环境内代理所属服务商 ROLA_IP 、 922S5 、 通用api ##### 调用示例 # 方式 A:简单参数过滤(key=value 格式) ``` ``` 方式 B:指定环境 ID 列表(--json 格式,包含数组) ``` ``` #### env-create # Local API: POST /api/v1/env/create 官网文档: 创建环境 参数清单: | 参数 | 类型 | 必填 | 说明 | containerName | string | 是 | 环境名 限制60字以内 | remark | string | 否 | 环境备注信息 | tagName | string | 否 | 指定环境所属分组的名称 若分组名称不存在,将默认环境未分组。 | cookie | string | 否 | 设置cookie 支持JSON格式的cookie | asDynamicType | integer | 是 | IP变更提醒 0-关闭提醒(默认)1-开启提醒 | proxyTypeName | string | 是 | 1. 自定义代理类型: HTTP 、 HTTPS 、 SSH 、 Socks5 、 Oxylabsauto 、 Lumauto_HTTP 、 Lumauto_HTTPS 、 Luminati_HTTP 、 Luminati_HTTPS 、 smartproxy 、 Iphtml_HTTP 、 Iphtml_Socks5 、 IPIDEA 、 不使用代理 2. API提取代理类型: Socks5_ROLA_IP 、 HTTPS_ROLA_IP 、 Socks5_922S5 、 HTTP_922S5 、 HTTPS_922S5 、 Socks5_通用api 、 HTTP_通用api 、 HTTPS_通用api 、 Socks5_IPIDEA-API 、 HTTP_IPIDEA-API 、 HTTPS_IPIDEA-API | ipGetRuleType | integer | 否 | IP提取方式 1-IP失效时提取新IP ,2-,每次打开环境时提取新IP。API提取代理时必填 | linkCode | string | 否 | 提取链接 API提取代理时必填 | proxyServer | string | 否 | 代理主机 自定义代理时必填 | proxyPort | integer | 否 | 代理端口 自定义代理时必填 | proxyAccount | string | 否 | 代理帐号 | proxyPassword | string | 否 | 代理密码 | referenceCountryCode | string | 否 | 环境内帐号需要登录的指定的国家 Oxylabsauto、Lumauto、Smartproxy必须填写国家或者IP | referenceIp | string | 否 | 根据IP自动填充环境内帐号需要登录的指定的国家 Oxylabsauto、Lumauto、Smartproxy必须填写国家或者IP | referenceCity | string | 否 | 参考城市 | referenceRegionCode | string | 否 | 参考州 | ipDatabaseChannel | integer | 否 | 代理查询渠道 用户未指定时使用全局默认值。支持设置查询渠道选项,1-IP2Location 2-DB-IP 3-MaxMind | ipProtocolType | integer | 否 | IP协议选项 支持设置IP协议,新环境默认使用速度优先 1.速度优先 2.IPv4 3.IPv6 | type | string | 否 | 操作系统。可选值: windows 、 android 、 ios 、 macos (不传默认 windows ) | phoneModel | string | 否 | 手机机型。当 type 选择 android 或 ios 时为必填项。可选参数值: google Pixel 4 、 红米8 、 红米7 、 google Pixel 5a 、 三星Galaxy Note8 、 小米10 、 三星Galaxy S9+ 、 小米9 、 iPhone 6 Plus 、 iPhone 8 Plus 、 iPhone SE 2 、 iPhone 7 Plus 、 iPhone X 、 iPhone13 Pro 、 iPhone XS 、 iPhone 13 Pro Max 、 iPhone 12 mini 、 iPhone 8 、 iPhone 13 mini 、 iPhone 6 、 iPhone 12 Pro Max 、 iPhone 7 、 iPhone 12 、 iPhone 12 Pro 、 iPhone 11 Pro 、 iPhone 13 、 iPhone 14 、 iPhone 14 Pro 、 iPhone 14 Pro Max 、 iPhone 15 、 iPhone 15 Pro 、 iPhone 15 Pro Max 、 google Pixel 6 、 google Pixel 6a 、 google Pixel 6 Pro 、 google Pixel 7 、 google Pixel 7 Pro 、 google Pixel 7a 、 google Pixel 8 、 google Pixel 8 Pro 、 google Pixel 8a 、 Samsung Galaxy S20 、 Samsung Galaxy S20 + 、 Samsung Galaxy S21 、 Samsung Galaxy S21 + 、 Samsung Galaxy S21 Ultra 、 Samsung Galaxy S22 、 Samsung Galaxy S22 + 、 Samsung Galaxy S22 Ultra | browser | string | 否 | 浏览器类型 firefox/chrome,不填默认创建谷歌环境, | coreVersion | integer | 否 | 内核版本号 支持100~126。用selenium时,可以根据这个字段来判断驱动chromedriver的版本号。 | videoThrottle | integer | 否 | 视频限流 0关闭 1开启 2跟随团队。不传参默认跟随团队。 | imgThrottle | integer | 否 | 图片限流 0关闭 1自定义 2跟随团队。不传参默认跟随团队。 | imgThrottleSize | integer | 否 | 图片尺寸大小 | advancedBo | object | 否 | Hubstudio浏览器高级指纹参数配置 | advancedBo.uaVersion | string | 否 | ua版本 | advancedBo.ua | string | 否 | 自定义UA 要求传参格式符合标准。举例:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36 | advancedBo.languageType | integer | 否 | 语言 0-跟随IP,1-自定义,2-跟随电脑 | advancedBo.languages | array | 否 | 语言列表 默认使用第一个传入的语言作为渲染语言 | advancedBo.gmt | string | 否 | 时区 timezone时区,不传参默认使用系统默认。自定义时格式举例:GMT-12:00 | advancedBo.geography | string | 否 | 地理位置 timezone地理,不传参默认使用系统默认。自定义时格式举例: Etc/GMT + 12 | advancedBo.geoTips | integer | 否 | 网站请求获取您当前地理位置时的选择 0-ask(询问)、2-block(禁止) | advancedBo.geoRule | integer | 否 | 地理位置规则 不传参默认使用系统默认。0-基于IP生成对应位置,1-使用自定义设置的位置 | advancedBo.longitude | string | 否 | 地理位置 自定义时必填,格式如“-40.123”(范围-180到180) | advancedBo.latitude | string | 否 | 纬度 地理位置自定义时必填,格式如“30.123”(范围-90到90) | advancedBo.radius | string | 否 | 经度 地理位置自定义时必填,,格式如“10“(范围10-5000) | advancedBo.height | string | 否 | 分辨率-高 type为Android或IOS时,不支持设置分辨率。分辨率高、宽都传-1时,分辨率随机 | advancedBo.width | string | 否 | 分辨率-宽 type为Android或IOS时,不支持设置分辨。分辨率高、宽都传-1时,分辨率随机 | advancedBo.fontsType | integer | 否 | 字体设置规则 0-隐私,1-真实 | advancedBo.fonts | array | 否 | 字体 按照字体的英文传入(编辑环境时,请将所有的字体传入。若传入的字体过少,可能会导致网页数据显示不全) | advancedBo.fontFingerprint | integer | 否 | 字体指纹 0-开启ClientRects隐私保护,1-使用电脑默认的ClientRects | advancedBo.webRtc | integer | 否 | webrtc设置规则 0-开启WebRTC,但禁止获取IP,1-开启WebRTC,将公网IP替换为代理IP,2-开启WebRTC,跟随电脑真实IP,3-禁用WebRTC,网站会检测到您关闭了WebRTC,4-转发WebRTC,将公网IP替换为代理IP | advancedBo.webRtcLocalIp | string | 否 | 内网IP。10.0.0.0/8;10.0.0.0 - 10.255.255.255;172.16.0.0/12;172.16.0.0 - 172.31.255.255;192.168.0.0/16;192.168.0.0 - 192.168.255.255 | advancedBo.canvas | integer | 否 | canvas设置规则 0-开启Canvas隐私保护,1-跟随电脑的Canvas | advancedBo.webgl | integer | 否 | webgl设置规则 0-开启WebGL隐私保护,1-跟随电脑的WebGL | advancedBo.hardwareAcceleration | integer | 否 | webgl参数 0-关闭硬件加速,1-开启硬件加速 | advancedBo.webglInfo | integer | 否 | 开启硬件加速时可传参,不传参默认使用系统默认。0-webglvendor和webglRenderer信息将根据ua进行匹配,1-跟随电脑的WebGL Info | advancedBo.audioContext | integer | 否 | 音频设置规则 0-开启AudioContext隐私保护,1-跟随电脑的AudioContext | advancedBo.speechVoices | integer | 否 | 讲述人设置规则 0-开启SpeechVoices,1-关闭SpeechVoicess | advancedBo.media | integer | 否 | 媒体设置规则 0-开启媒体设备隐私保护,1-使用Chrome原生隐私保护(不授权则不会暴露真实媒体设备数量) | advancedBo.cpu | integer | 否 | cpu设置规则 2,4,6,8,10,12,16,0(0代表真实) | advancedBo.memory | integer | 否 | 内存设置规则 2,4,6,8,0(0代表真实) | advancedBo.doNotTrack | integer | 否 | donottrack设置规则 0-默认不设置,1-默认不允许追踪,2-默认允许追踪 | advancedBo.battery | integer | 否 | 电池设置规则 0-开启电池隐私保护,1-使用电脑真实的电池信息,2-禁止访问电池信息 | advancedBo.portScan | integer | 否 | 端口扫描保护设置规则 0-不允许网站检测您使用的本地网络端口,1-允许网站检测您使用的本地网络端口 | advancedBo.whiteList | string | 否 | 端口扫描保护白名单 端口扫描保护开启后,设置的本地端口可以访问,多个端口逗号隔开 ##### 调用示例 # 方式 A:创建简易 Windows 环境(key=value 格式) ``` ``` 方式 B:配置高级指纹和自定义代理(--json 格式) ``` ``` #### env-update # Local API: POST /api/v1/env/update 官网文档: 更新环境 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCode | integer | 是 | 环境ID | containerName | string | 是 | 环境名 若无需更改环境名称传入原有名称即可 | remark | string | 否 | 环境备注信息 不传视为留空,会覆盖原备注 | type | string | 是 | 操作系统类型 操作系统类型传值:windows/android/ios/macos 四个中的一个 | tagName | string | 是 | 环境所属分组信息 若分组名称不存在,将默认不修改环境分组 | coreVersion | integer | 是 | 内核版本号 支持100~126。用selenium时,可以根据这个字段来判断驱动chromedriver的版本号。 | videoThrottle | integer | 否 | 视频限流 0关闭 1开启 2跟随团队。不传参默认跟随团队。 | imgThrottle | integer | 否 | 图片限流 0关闭 1自定义 2跟随团队。不传参默认跟随团队。 | imgThrottleSize | integer | 否 | 图片尺寸大小 | advancedBo | object | 否 | Hubstudio浏览器高级指纹参数配置 | advancedBo.uaVersion | string | 否 | ua版本 | advancedBo.ua | string | 否 | 自定义UA要求传参格式符合标准 举例:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36 | advancedBo.languageType | integer | 否 | 界面语言类型 0-跟随IP,1-自定义,2-跟随电脑 | advancedBo.languages | array | 否 | 默认使用第一个传入的语言作为渲染语言 | advancedBo.gmt | string | 否 | timezone时区 不传参默认使用系统默认。自定义时格式举例:GMT-12:00 | advancedBo.geography | string | 否 | timezone地理 不传参默认使用系统默认。自定义时格式举例: Etc/GMT + 12 | advancedBo.geoTips | integer | 否 | 网站请求获取您当前地理位置 ,0-ask(询问)、2-block(禁止) | advancedBo.geoRule | integer | 否 | 地理位置规则 不传参默认使用系统默认。0-基于IP生成对应位置,1-使用自定义设置的位置 | advancedBo.longitude | string | 否 | 地理位置自定义时必填,格式如“-40.123”(范围-180到180) | advancedBo.latitude | string | 否 | 地理位置自定义时必填,格式如“30.123”(范围-90到90) | advancedBo.radius | string | 否 | 地理位置自定义时必填,,格式如“10“(范围10-5000) | advancedBo.height | string | 否 | 分辨率-高,type为Android或IOS时,不支持设置分辨率。分辨率高、宽都传-1时,分辨率随机 | advancedBo.width | string | 否 | 分辨率-宽,type为Android或IOS时,不支持设置分辨。分辨率高、宽都传-1时,分辨率随机 | advancedBo.fontsType | integer | 否 | 字体列表保护,0-隐私,1-真实 | advancedBo.fonts | array | 否 | 按照字体的英文传入(编辑环境时,请将所有的字体传入。若传入的字体过少,可能会导致网页数据显示不全) | advancedBo.fontFingerprint | integer | 否 | 字体指纹,0-开启ClientRects隐私保护,1-使用电脑默认的ClientRects | advancedBo.webRtc | integer | 否 | 0-开启WebRTC,但禁止获取IP,1-开启WebRTC,将公网IP替换为代理IP,2-开启WebRTC,跟随电脑真实IP,3-禁用WebRTC,网站会检测到您关闭了WebRTC,4-转发WebRTC,将公网IP替换为代理IP | advancedBo.webRtcLocalIp | string | 否 | 内网IP。10.0.0.0/8;10.0.0.0 - 10.255.255.255;172.16.0.0/12;172.16.0.0 - 172.31.255.255;192.168.0.0/16;192.168.0.0 - 192.168.255.255 | advancedBo.canvas | integer | 否 | 0-开启Canvas隐私保护,1-跟随电脑的Canvas | advancedBo.webgl | integer | 否 | 0-开启WebGL隐私保护,1-跟随电脑的WebGL | advancedBo.hardwareAcceleration | integer | 否 | 0-关闭硬件加速,1-开启硬件加速 | advancedBo.webglInfo | integer | 否 | 开启硬件加速时可传参,不传参默认使用系统默认。0-webglvendor和webglRenderer信息将根据ua进行匹配,1-跟随电脑的WebGL Info | advancedBo.audioContext | integer | 否 | 0-开启AudioContext隐私保护,1-跟随电脑的AudioContext | advancedBo.speechVoices | integer | 否 | 0-开启SpeechVoices,1-关闭SpeechVoicess | advancedBo.media | integer | 否 | 0-开启媒体设备隐私保护,1-使用Chrome原生隐私保护(不授权则不会暴露真实媒体设备数量) | advancedBo.cpu | integer | 否 | 2,4,6,8,10,12,16,0(0代表真实) | advancedBo.memory | integer | 否 | 2,4,6,8,0(0代表真实) | advancedBo.doNotTrack | integer | 否 | 0-默认不设置,1-默认不允许追踪,2-默认允许追踪 | advancedBo.battery | integer | 否 | 0-开启电池隐私保护,1-使用电脑真实的电池信息,2-禁止访问电池信息 | advancedBo.portScan | integer | 否 | 0-不允许网站检测您使用的本地网络端口,1-允许网站检测您使用的本地网络端口 | advancedBo.whiteList | string | 否 | - ##### 调用示例 # 方式 A:更新环境名称和分组(--json 格式) ``` ``` #### env-proxy-update # Local API: POST /api/v1/env/proxy/update 官网文档: 更新环境代理 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCode | integer | 是 | 环境ID | asDynamicType | integer | 是 | IP变更提醒 0-关闭提醒(默认)1-开启提醒 | proxyTypeName | string | 是 | 1. 自定义代理类型: HTTP 、 HTTPS 、 SSH 、 Socks5 、 Oxylabsauto 、 Lumauto_HTTP 、 Lumauto_HTTPS 、 Luminati_HTTP 、 Luminati_HTTPS 、 smartproxy 、 Iphtml_HTTP 、 Iphtml_Socks5 、 IPIDEA 、 不使用代理 2. API提取代理类型: Socks5_ROLA_IP 、 HTTP_ROLA_IP 、 HTTPS_ROLA_IP 、 Socks5_922S5 、 HTTP_922S5 、 HTTPS_922S5 、 Socks5_通用api 、 HTTP_通用api 、 HTTPS_通用api 、 Socks5_IPIDEA-API 、 HTTP_IPIDEA-API 、 HTTPS_IPIDEA-API | ipGetRuleType | integer | 否 | IP提取方式 1-IP失效时提取新IP ,2-,每次打开环境时提取新IP。API提取代理时必填 | linkCode | string | 否 | 提取链接 API提取代理时必填 | proxyHost | string | 否 | 代理主机 | proxyPort | integer | 否 | 代理端口 | proxyAccount | string | 否 | 代理帐号 | proxyPassword | string | 否 | 代理密码 | referenceCountryCode | string | 否 | 环境内帐号需要登录的指定的国家 Oxylabsauto、Lumauto、Smartproxy必须填写国家或者IP | referenceCity | string | 否 | 参考城市 | referenceRegionCode | string | 否 | 参考州 | ipDatabaseChannel | integer | 否 | 代理查询渠道 支持设置查询渠道选项,1-IP2Location 2-DB-IP 3-MaxMind | ipProtocolType | integer | 否 | IP协议选项 支持设置IP协议 1.速度优先 2.IPv4 3.IPv6 ##### 调用示例 # 方式 A:更新为不使用代理(key=value 格式) ``` ``` 方式 B:更新为自定义 Socks5 代理(key=value 格式) ``` ``` #### env-import-cookie # Local API: POST /api/v1/env/import-cookie 官网文档: 导入 Cookie 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCode | string | 是 | 环境ID | cookie | string | 是 | 设置cookie 值为空字符串是清空cookie ##### 调用示例 # 方式 A:导入 Cookie(--json 格式) ``` ``` #### env-export-cookie # Local API: POST /api/v1/env/export-cookie 官网文档: 导出 Cookie 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCode | integer | 是 | 环境ID ##### 调用示例 # 方式 A:导出环境 Cookie(key=value 格式) ``` ``` #### env-del # Local API: POST /api/v1/env/del 官网文档: 删除环境 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCodes | array | 是 | 环境ID列表 ##### 调用示例 # 方式 A:批量删除指定环境(--json 格式,包含数组) ``` ``` #### env-random-ua # Local API: POST /api/v1/env/random-ua 官网文档: 获取随机 UA 参数清单: | 参数 | 类型 | 必填 | 说明 | type | string | 否 | 操作系统参数 windows、android、ios(不传参数默认windows) | phoneModel | string | 否 | 手机机型 type选择android和ios时,机型必填。机型参数包括:“google Pixel 4、红米8、红米7、google Pixel 5a、三星Galaxy Note8、小米10、三星Galaxy S9+、小米9、iPhone 6 Plus、iPhone 8 Plus、iPhone SE 2、iPhone 7 Plus、iPhone X、iPhone 13 Pro、iPhone XS、iPhone 13 Pro Max、iPhone 12 mini、iPhone 8、iPhone 13 mini、iPhone 6、iPhone 12 Pro Max、iPhone 7、iPhone 12 、iPhone 12 Pro、iPhone 11 Pro、iPhone 13、iPhone 14、iPhone 14 Pro、iPhone 14 Pro Max、iPhone 15、iPhone 15 Pro、iPhone 15 Pro Max、google Pixel 6、google Pixel 6a、google Pixel 6 Pro、google Pixel 7、google Pixel 7 Pro、google Pixel 7a、google Pixel 8、google Pixel 8 Pro、google Pixel 8a、Samsung Galaxy S20、Samsung Galaxy S20 +、Samsung Galaxy S21、Samsung Galaxy S21 +、Samsung Galaxy S21 Ultra、Samsung Galaxy S22、Samsung Galaxy S22 +、Samsung Galaxy S22 Ultra ” | version | array | 否 | 内核版本 支持数组,不传参默认随机。 ##### 调用示例 # 方式 A:生成随机 Windows UA(key=value 格式) ``` ``` 方式 B:生成指定机型和内核范围的移动端 UA(--json 格式) ``` ``` #### clear-cache # Local API: POST /api/v1/cache/clear 官网文档: 清除环境本地缓存 参数清单: | 参数 | 类型 | 必填 | 说明 | browserOauths | array | 否 | 打开环境时返回的browserID 参数不传则删除所有环境的本地缓存 | localStorage | boolean | 否 | 是否清除 LocalStorage 默认为否 | indexedDB | boolean | 否 | 是否清除 IndexedDB 默认为否 | cookie | boolean | 否 | 是否清除 cookie 默认为否 | extension | boolean | 否 | 是否清除扩展数据 默认为否,不清除 | extensionFile | boolean | 否 | 是否清除扩展 默认为否,不清除 ##### 调用示例 # 方式 A:清除所有环境的本地缓存 ``` ``` 方式 B:清除指定环境的 Cookie 和 LocalStorage(--json 格式) ``` ``` #### reset-extension # Local API: POST /api/v1/browser/reset-extension 官网文档: 清理环境内插件缓存 参数清单: | 参数 | 类型 | 必填 | 说明 | browserOauth | integer | 是 | 打开环境时返回的browserID | pluginIds | array | 是 | 指定要清除的插件的ID 可通过chrome://extensions/查看环境内所有插件的ID ##### 调用示例 # 方式 A:清除指定插件的缓存(--json 格式,包含数组) ``` ``` #### env-refresh-fingerprint # Local API: POST /api/v1/env/refresh-fingerprint 官网文档: 刷新指纹 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCode | integer | 是 | 环境ID | uaVersion | integer | 否 | UA版本 不传 uaVersion ,默认随机最新UA | coreVersion | integer | 否 | 客户端内核版本 不传,不会改变 | type | string | 否 | 操作系统类型 不传默认为windows ##### 调用示例 # 方式 A:刷新指定环境的指纹(key=value 格式) ``` ``` #### container-webgl-renderer-list # Local API: POST /api/v1/container/webgl-renderer-list 官网文档: 查询 webglVendor 和 webglRenderer 参数清单: | 参数 | 类型 | 必填 | 说明 | browser | string | 否 | 浏览器 chrome、firefox。默认chrome | hardwareAcceleration | integer | 否 | 开启硬件加速 ,0-关闭硬件加速。默认:1 | type | string | 否 | 操作系统类型 windows,android,ios, macos。 默认windows | uaVersion | string | 是 | ua版本 例如:117 ##### 调用示例 # 方式 A:查询 WebGL 渲染器列表(key=value 格式) ``` ``` #### container-batch-update-remark # Local API: POST /api/v1/container/batch-update-remark 官网文档: 批量修改备注 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCodes | array | 是 | 环境ID | remark | string | 否 | 备注 | type | integer | 是 | 修改类型 1覆盖 2追加 ##### 调用示例 # 方式 A:批量覆盖环境备注(--json 格式,包含数组) ``` ``` #### download-browser-core # Local API: POST /api/v1/browser/download-core 官网文档: 下载内核 参数清单: | 参数 | 类型 | 必填 | 说明 | Cores | array | 是 | 内核列表 | Cores[].BrowserType | integer | 是 | 浏览器内核类型 1-Chrome,2-Firefox | Cores[].Version | string | 是 | 内核版本 仅支持hub客户端支持的版本下载。 ##### 调用示例 # 方式 A:批量下载指定版本的内核(--json 格式,包含嵌套数组) ``` ``` #### container-update-container-base # Local API: POST /api/v1/container/update-container-base 官网文档: 更新环境基础信息 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCode | integer | 是 | 环境ID | containerName | string | 否 | 环境名称 支持空字符串:不进行修改 | remark | string | 否 | 备注 支持空字符串:清空备注数据,不传则不进行修改 | tagName | string | 否 | 分组名称 限制中英文、数字、常用符号,不支持空格、空字符串,不修改可以不传 ##### 调用示例 # 方式 A:修改环境基本信息(key=value 格式) ``` ``` ### 2. 浏览器环境 # #### start-browser # Local API: POST /api/v1/browser/start 官网文档: 打开环境 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCode | string | 是 | 环境ID | cdpHide | boolean | 否 | 是否屏蔽cdp检测 默认false(true代表屏蔽)仅支持ChroBrowser133及以上内核版本 | shouldCloseTabsOnOpen | boolean | 否 | 是否打开历史标签页 需要在客户端 "偏好设置-个人设置-启动环境时" 选项中,选择 "打开上次",此参数才会生效。当 shouldCloseTabsOnOpen 为 true 时,会同步服务端的标签页数据到客户端,即打开上次关闭时的标签页。当 shouldCloseTabsOnOpen 为 false 时,不会同步服务端的标签页数据,客户端的现有标签页数据不会被覆盖。 | pageZoom | integer | 否 | 缩放比例 只能传原生支持的比例,原生支持 50%,75%, 100%,125%,150%,175%,200%,其它参数不支持,150% 传 1.5。此参数仅支持3.46.0及以上版本 | containerTabs | array | 否 | 启动url 举例: "containerTabs": [" https://www.hubstudio.cn/ ", " https://www.baidu.com/ "] | isHeadless | boolean | 否 | 浏览器无头模式 默认false,设置无头后如无法连接,请使用用"args"参数进行设置: ["--headless=new"] | isWebDriverReadOnlyMode | boolean | 否 | 是否只读模式 默认false。(true代表只读模式,不会保存cookie等数据 | skipSystemResourceCheck | boolean | 否 | 跳过系统可用资源检测 默认false不跳过系统可用资源检测(仅支持v3.6.0及以上版本) | args | array | 否 | 启动参数 举例 "args": [ "--kiosk", "--blink-settings=imagesEnabled=false" ] | serialNumber | string | 否 | 序号 containerCode和serialNumber都传,以containerCode为准,支持客户端版本3.55.0版本 ##### 调用示例 # 方式 A:打开指定环境(key=value 格式) ``` ``` 方式 B:配置无头模式与特定启动参数(--json 格式) ``` ``` #### stop-browser # Local API: POST /api/v1/browser/stop 官网文档: 关闭环境 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCode | string | 是 | 环境ID | serialNumber | string | 否 | 序号 containerCode和serialNumber都传,以containerCode为准,支持客户端版本3.55.0版本 ##### 调用示例 # 方式 A:关闭指定环境(key=value 格式) ``` ``` #### stop-all-browsers # Local API: POST /api/v1/browser/stop-all 官网文档: 关闭所有环境 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:关闭所有正在运行的浏览器环境 ``` ``` #### browser-status # Local API: POST /api/v1/browser/all-browser-status 官网文档: 获取浏览器状态 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCodes | array | 是 | 环境id列表 ##### 调用示例 # 方式 A:批量查询指定环境的运行状态(--json 格式,包含数组) ``` ``` #### foreground-browser # Local API: POST /api/v1/browser/foreground 官网文档: 切换浏览器窗口 参数清单: | 参数 | 类型 | 必填 | 说明 | containerCode | string | 是 | 环境ID ##### 调用示例 # 方式 A:切换指定浏览器窗口至前台(key=value 格式) ``` ``` #### list-displays # Local API: POST /api/v1/display/all 官网文档: 获取全部屏幕(物理机的屏幕) 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:列出物理机的所有屏幕信息 ``` ``` #### arrange-browsers # Local API: POST /api/v1/browser/arrange 官网文档: 浏览器窗口自定义排列 参数清单: | 参数 | 类型 | 必填 | 说明 | x | integer | 否 | 起始位置x坐标 默认为10,取值可为0~9999之间的整数 | y | integer | 否 | 起始位置y坐标 默认为10,取值可为0~9999之间的整数 | width | integer | 否 | 窗口宽度 默认为600,取值范围500~9999之间的整数 | height | integer | 否 | 窗口高度 默认为500,取值范围200~9999之间的整数 | gapX | integer | 否 | 窗口横向间距 默认为20,取值范围-9999~9999之间的整数 | gapY | integer | 否 | 窗口纵向间距 默认为20,取值范围-9999~9999之间的整数 | colNum | integer | 否 | 每行展示窗口数量 默认为3,取值范围1~99之间的整数 | screenId | integer | 否 | 屏幕ID ##### 调用示例 # 方式 A:自定义排列所有打开的窗口(key=value 格式) ``` ``` ### 3. 云手机 # #### 3.1 应用管理 # ##### cloud-mobile-app-page # Local API: POST /api/v1/cloud-mobile/app/page 官网文档: APP 列表(分页)\查询可安装应用列表 参数清单: | 参数 | 类型 | 必填 | 说明 | appName | string | 否 | 应用名称 模糊查询 | pageNum | integer | 否 | 当前页数 从1开始 | pageSize | integer | 否 | 每页显示记录数 默认为10 | productId | integer | 是 | 云手机商品ID 通过 /api/v1/cloud-mobile/mobile-product-list接口获得 ##### 调用示例 # 方式 A:分页查询可安装应用(key=value 格式) ``` ``` ##### cloud-mobile-app-installedList # Local API: POST /api/v1/cloud-mobile/app/installedList 官网文档: 已安装应用列表查询 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileId | integer | 是 | 云手机ID ##### 调用示例 # 方式 A:获取已安装应用列表(key=value 格式) ``` ``` ##### cloud-mobile-group-app-create # Local API: POST /api/v1/cloud-mobile/group/app/create 官网文档: 新增团队应用 参数清单: | 参数 | 类型 | 必填 | 说明 | packageName | string | 是 | 应用包名 | versionCode | string | 是 | 应用版本号 ##### 调用示例 # 方式 A:新增团队应用(key=value 格式) ``` ``` ##### cloud-mobile-app-install # Local API: POST /api/v1/cloud-mobile/app/install 官网文档: app 应用安装 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:安装应用 ``` ``` ##### cloud-mobile-app-start # Local API: POST /api/v1/cloud-mobile/app/start 官网文档: APP 启动 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:启动应用 ``` ``` ##### cloud-mobile-app-restart # Local API: POST /api/v1/cloud-mobile/app/restart 官网文档: APP 重启 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:重启应用 ``` ``` ##### cloud-mobile-app-stop # Local API: POST /api/v1/cloud-mobile/app/stop 官网文档: APP 停止 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:停止应用 ``` ``` ##### cloud-mobile-app-uninstall # Local API: POST /api/v1/cloud-mobile/app/uninstall 官网文档: APP 卸载 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:卸载应用 ``` ``` #### 3.2 文件管理 # ##### cloud-mobile-upload-file # Local API: POST /api/v1/cloud-mobile/upload-file 官网文档: 公网文件上传文件到云手机 参数清单: | 参数 | 类型 | 必填 | 说明 | downloadDest | string | 否 | 上传至云手机中的目录 如果仅一层目录不存在,将自动创建;如果多层目录不存在,无法自动创建 | fileUrl | string | 否 | 文件地址 | mobileId | integer | 是 | 云手机ID | fileName | string | 否 | 文件名称 上传后文件叫什么名字 ##### 调用示例 # 方式 A:上传公网文件到云手机(key=value 格式) ``` ``` ##### cloud-mobile-setKeyBox # Local API: POST /api/v1/cloud-mobile/setKeyBox 官网文档: 设置 keyBox 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileId | integer | 是 | 云手机ID | filePath | string | 是 | 文件路径 例如:/sdcard/Download/xxx.xml ##### 调用示例 # 方式 A:设置 keyBox(key=value 格式) ``` ``` #### 3.3 RPA # ##### cloud-mobile-rpa-task-page # Local API: POST /api/v1/cloud-mobile/rpa/task/page 官网文档: RPA-计划分页查询 参数清单: | 参数 | 类型 | 必填 | 说明 | enabled | boolean | 否 | 是否启用 true为启动,false为关闭 | searchKey | string | 否 | 搜索关键词 模糊搜索计划名称、计划描述、模板标题 | taskState | integer | 否 | 任务状态 0:等待执行;1:正在执行;2:执行完成;3:取消 | current | string | 否 | 当前页 默认值为第1页 | size | string | 否 | 每页条数 默认值为10条数据/页 ##### 调用示例 # 方式 A:分页查询 RPA 计划(key=value 格式) ``` ``` ##### cloud-mobile-rpa-template-personal-page # Local API: POST /api/v1/cloud-mobile/rpa/template/personal/page 官网文档: RPA-个人模板分页查询 参数清单: | 参数 | 类型 | 必填 | 说明 | searchKey | string | 否 | 搜索关键字 可模糊搜索标题和描述 | current | string | 否 | 当前页 默认值为第1页 | size | string | 否 | 每页条数 默认值为10条数据/页 ##### 调用示例 # 方式 A:分页查询个人 RPA 模板(key=value 格式) ``` ``` ##### cloud-mobile-rpa-template-market-page # Local API: POST /api/v1/cloud-mobile/rpa/template/market/page 官网文档: RPA-市场模板分页查询 参数清单: | 参数 | 类型 | 必填 | 说明 | current | string | 否 | 当前页 默认值为第1页 | size | string | 否 | 每页条数 默认值为10条数据/页 | searchKey | string | 否 | 搜索关键词 ##### 调用示例 # 方式 A:分页查询市场 RPA 模板(key=value 格式) ``` ``` ##### cloud-mobile-rpa-task-save # Local API: POST /api/v1/cloud-mobile/rpa/task/save 官网文档: RPA-保存计划 参数清单: | 参数 | 类型 | 必填 | 说明 | cloudPhoneConfigs | array | 是 | 云手机配置集合 | cloudPhoneConfigs[].cloudPhoneId | integer | 否 | 云手机ID | cloudPhoneConfigs[].templateParameter | string | 否 | 模板参数 如果没有参数可不传 | cloudPhoneConfigs[].triggerTime | string | 否 | 触发时间 | notes | string | 否 | 计划描述 | scheduleConfig | object | 是 | 计划配置 | scheduleConfig.endTime | string | 否 | 结束时间 | scheduleConfig.scheduleType | string | 否 | 计划类型 ONCE-一次,DAILY-每天执行,可用值:ONCE,DAILY | taskName | string | 是 | 计划名称 | templateId | integer | 是 | 模板ID | templateType | string | 是 | 模板类型 PERSONAL:个人;MARKET:市场 ##### 调用示例 # 方式 A:保存个人 RPA 计划(--json 格式,包含嵌套对象与数组) ``` ``` ##### cloud-mobile-rpa-task-cancel # Local API: POST /api/v1/cloud-mobile/rpa/task/cancel 官网文档: RPA-取消计划 参数清单: | 参数 | 类型 | 必填 | 说明 | id | integer | 是 | 计划ID ##### 调用示例 # 方式 A:取消指定的 RPA 计划(key=value 格式) ``` ``` ##### cloud-mobile-rpa-subTask-page # Local API: POST /api/v1/cloud-mobile/rpa/subTask/page 官网文档: RPA-执行记录分页查询 参数清单: | 参数 | 类型 | 必填 | 说明 | beginTime | string | 否 | 开始时间 | endTime | string | 否 | 结束时间 | mobileId | integer | 否 | 云手机ID | mobileName | string | 否 | 云手机名称 | searchKey | string | 否 | 搜索关键词 模糊搜索计划名称、模板标题 | taskId | integer | 否 | 计划ID | taskState | integer | 否 | 任务状态 0:等待执行;1:正在执行;2:排队中;3:成功;4:失败;5:已取消 | templateId | integer | 否 | 模板ID | current | string | 否 | 当前页 默认值为第1页 | size | string | 否 | 每页条数 默认值为10条数据/页 ##### 调用示例 # 方式 A:分页查询 RPA 执行记录(key=value 格式) ``` ``` ##### cloud-mobile-rpa-subTask-cancel # Local API: POST /api/v1/cloud-mobile/rpa/subTask/cancel 官网文档: RPA-取消记录 参数清单: | 参数 | 类型 | 必填 | 说明 | id | integer | 是 | 任务ID ##### 调用示例 # 方式 A:取消指定的 RPA 执行记录(key=value 格式) ``` ``` ##### cloud-mobile-rpa-subTask-detail # Local API: POST /api/v1/cloud-mobile/rpa/subTask/detail 官网文档: RPA-记录详情查询 参数清单: | 参数 | 类型 | 必填 | 说明 | id | string | 是 | 记录编号 ##### 调用示例 # 方式 A:查询 RPA 执行记录详情(key=value 格式) ``` ``` ##### cloud-mobile-rpa-onceTask-save # Local API: POST /api/v1/cloud-mobile/rpa/onceTask/save 官网文档: RPA-快速保存一次性计划 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileId | integer | 是 | 云手机ID | description | string | 否 | 计划描述 | scheduleName | string | 是 | 计划名称 | templateId | integer | 是 | 模板ID 个人模板或市场模板ID | templateParameter | string | 否 | 模板参数 JSON格式 ##### 调用示例 # 方式 A:快速保存一次性 RPA 计划(key=value 格式) ``` ``` #### 3.4 其它云手机命令 # ##### cloud-mobile-mobile-product-list # Local API: POST /api/v1/cloud-mobile/mobile-product-list 官网文档: 云手机商品列表 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:获取云手机商品列表 ``` ``` ##### cloud-mobile-mobile-page # Local API: POST /api/v1/cloud-mobile/mobile-page 官网文档: 云手机分页列表 参数清单: | 参数 | 类型 | 必填 | 说明 | adbStatus | integer | 否 | ADB状态 1-开启 0-关闭 | current | integer | 否 | 当前页数 默认为1 | mobileIds | array | 否 | 手机IDS | name | string | 否 | 云手机名称 | size | integer | 否 | 每页显示记录数 默认10,最多200条 | state | boolean | 否 | 云手机状态 true-开机,false-关机 ##### 调用示例 # 方式 A:分页查询云手机列表(key=value 格式) ``` ``` 方式 B:批量查询指定手机 ID 列表(--json 格式,包含数组) ``` ``` ##### cloud-mobile-add-mobile # Local API: POST /api/v1/cloud-mobile/add-mobile 官网文档: 添加云手机 参数清单: | 参数 | 类型 | 必填 | 说明 | count | integer | 否 | 创建按需云手机的数量 默认为1 | productId | integer | 是 | 云手机商品ID 通过/api/v1/cloud-mobile/mobile-product-list获取 ##### 调用示例 # 方式 A:批量添加云手机(key=value 格式) ``` ``` ##### cloud-mobile-get-country-time-zone-language-list # Local API: POST /api/v1/cloud-mobile/get-country-time-zone-language-list 官网文档: 国家时区语言列表 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:获取国家、时区、语言列表 ``` ``` ##### cloud-mobile-power-on-mobile # Local API: POST /api/v1/cloud-mobile/power-on-mobile 官网文档: 批量开启云手机 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:批量开机所有关机的云手机 ``` ``` ##### cloud-mobile-shutdown-mobile # Local API: POST /api/v1/cloud-mobile/shutdown-mobile 官网文档: 批量关闭云手机 参数清单: | 参数 | 类型 | 必填 | 说明 | check | boolean | 否 | 强制关闭正在使用中的云手机。 true -开启使用验证, false -不验证,默认值 true | mobileIds | array | 是 | 云手机ID列表 限制20个ID ##### 调用示例 # 方式 A:批量关机指定的云手机(--json 格式,包含数组) ``` ``` ##### cloud-mobile-update-proxy # Local API: POST /api/v1/cloud-mobile/update-proxy 官网文档: 更新代理 参数清单: | 参数 | 类型 | 必填 | 说明 | asDynamicType | integer | 否 | 是否动态(网络设置) 1-静态,2-动态,默认1 | automaticPositioning | boolean | 否 | 是否自动定位(定位设置) 默认true | country | string | 否 | 国家code(时区/语言设置) | dnsStrategy | integer | 否 | DNS策略(网络设置) 0-跟随IP,1-DNS保护。默认0 | followIp | boolean | 否 | 跟随ip(时区/语言设置) 默认true | lat | integer | 否 | 维度(定位设置) | lng | integer | 否 | 经度(定位设置) | mobileId | integer | 是 | 云手机ID | proxyAccount | string | 否 | 代理账号(网络设置) | proxyHost | string | 是 | 代理主机地址(网络设置) | proxyPassword | string | 否 | 代理密码(网络设置) | proxyPort | integer | 是 | 代理端口(网络设置) | proxyTypeId | integer | 是 | 代理类型(网络设置)。 1 - HTTP , 2 - HTTPS , 4 - Socks5 , 5 - Oxylabsauto , 6 - Lumauto , 7 - Luminati , 11 - smartproxy | proxyTypeId2 | integer | 否 | 代理类型2(网络设置)。当 proxyTypeId = 7 时可选配。可选值: 1 - HTTP , 2 - HTTPS , 4 - Socks5 。默认 1 | referenceCity | string | 否 | 参考城市(网络设置) | referenceCountryCode | string | 否 | 参考国家code(网络设置) | referenceRegionCode | string | 否 | 参考州code(网络设置) | timeZone | string | 否 | 时区(时区/语言设置) | ysjLanguage | string | 否 | 语言(时区/语言设置) | ipDatabaseChannel | integer | 否 | 代理检测渠道 1-IP2Location 2-DB-IP 3-MaxMind ##### 调用示例 # 方式 A:更新云手机代理配置(--json 格式) ``` ``` ##### cloud-mobile-list-adb # Local API: POST /api/v1/cloud-mobile/list-adb 官网文档: 批量获取云手机 ADB 状态 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileIds | array | 是 | 云手机ID列表 限制20个ID ##### 调用示例 # 方式 A:批量获取 ADB 状态(--json 格式,包含数组) ``` ``` ##### cloud-mobile-batch-update-adb # Local API: POST /api/v1/cloud-mobile/batch-update-adb 官网文档: 批量更新云手机 ADB 状态 参数清单: | 参数 | 类型 | 必填 | 说明 | enableAdb | boolean | 是 | 是否开启adb true-开启,false-关闭 | mobileIds | array | 是 | 云手机ID列表 限制20个ID ##### 调用示例 # 方式 A:批量开启 ADB 状态(--json 格式,包含数组) ``` ``` ##### cloud-mobile-new-machine # Local API: POST /api/v1/cloud-mobile/new-machine 官网文档: 一键新机 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileId | integer | 是 | 云手机ID | brand | string | 否 | 品牌 通过/api/v1/cloud-mobile/brand/models获得 | model | string | 否 | 机型 通过/api/v1/cloud-mobile/brand/models获得 ##### 调用示例 # 方式 A:一键新机(key=value 格式) ``` ``` ##### cloud-mobile-new-machine-status # Local API: POST /api/v1/cloud-mobile/new-machine-status 官网文档: 获取一键新机状态及可用数量 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileId | integer | 是 | 云手机ID ##### 调用示例 # 方式 A:查询一键新机状态(key=value 格式) ``` ``` ##### cloud-mobile-brand-models # Local API: POST /api/v1/cloud-mobile/brand/models 官网文档: 查询品牌机型 参数清单: | 参数 | 类型 | 必填 | 说明 | productId | integer | 是 | 云手机商品ID ##### 调用示例 # 方式 A:查询品牌机型列表(key=value 格式) ``` ``` ##### cloud-mobile-exe-command # Local API: POST /api/v1/cloud-mobile/exe-command 官网文档: 执行 shell 命令 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileId | integer | 是 | 云手机ID | command | string | 是 | 命令 如果是需要执行多行,使用;号隔开即可 ##### 调用示例 # 方式 A:执行 shell 命令(key=value 格式) ``` ``` ##### cloud-mobile-update # Local API: POST /api/v1/cloud-mobile/update 官网文档: 修改云手机信息 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileId | integer | 是 | 云手机ID | name | string | 否 | 云手机名称 不超过60个字符 | ignore | boolean | 否 | 是否忽略云手机名称重复 默认:false | remark | string | 否 | 备注 不超过500个字符 | number | integer | 否 | 序号 最大值不超过 999999 ##### 调用示例 # 方式 A:修改云手机信息(key=value 格式) ``` ``` ##### cloud-mobile-simulateSendSms # Local API: POST /api/v1/cloud-mobile/simulateSendSms 官网文档: 发送短信到云手机 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileId | integer | 是 | 云手机ID 支持机型:Android13、支持Android14、支持Android15A | senderNumber | string | 是 | 发送方号码 (最长21位,允许数字+空格) | smsContent | string | 是 | 短信内容 (长度限制127位) ##### 调用示例 # 方式 A:向云手机模拟发送短信(key=value 格式) ``` ``` ##### cloud-mobile-del-mobile-batch # Local API: POST /api/v1/cloud-mobile/del-mobile-batch 官网文档: 批量删除云手机 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileIds | array | 是 | 云手机列表 ##### 调用示例 # 方式 A:批量删除云手机(--json 格式,包含数组) ``` ``` ##### cloud-mobile-set-tag # Local API: POST /api/v1/cloud-mobile/set-tag 官网文档: 批量修改云手机分组 参数清单: | 参数 | 类型 | 必填 | 说明 | mobileIds | array | 是 | 云手机列表 | tagName | string | 是 | 分组名称 ##### 调用示例 # 方式 A:批量修改云手机分组(--json 格式,包含数组) ``` ``` ### 4. 平台账号管理 # #### account-list # Local API: POST /api/v1/account/list 官网文档: 账号分页列表 参数清单: | 参数 | 类型 | 必填 | 说明 | accountName | string | 否 | 账号 | current | integer | 否 | 当前页 | name | string | 否 | 账号名称 对该账号的描述,传null和空字段等于没有过滤该字段 | size | integer | 否 | 每页数据 ##### 调用示例 # 方式 A:分页查询平台账号(key=value 格式) ``` ``` #### account-update # Local API: POST /api/v1/account/update 官网文档: 账号更新 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:更新账号 ``` ``` #### container-add-account # Local API: POST /api/v1/container/add-account 官网文档: 添加环境账号 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:添加环境账号 ``` ``` #### account-del # Local API: POST /api/v1/account/del 官网文档: 账号删除 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:删除账号 ``` ``` ### 5. 分组管理 # #### group-list # Local API: POST /api/v1/group/list 官网文档: 获取环境分组列表 参数清单:无请求体参数。 ##### 调用示例 # 方式 A:获取环境分组列表 ``` ``` #### group-create # Local API: POST /api/v1/group/create 官网文档: 新建环境分组 参数清单: | 参数 | 类型 | 必填 | 说明 | tagName | string | 是 | 环境分组名 ##### 调用示例 # 方式 A:创建环境分组(key=value 格式) ``` ``` #### group-del # Local API: POST /api/v1/group/del 官网文档: 删除环境分组 参数清单: | 参数 | 类型 | 必填 | 说明 | tagCode | string | 是 | 删除指定名称的分组 ##### 调用示例 # 方式 A:删除环境分组(key=value 格式) ``` ``` ## 常见问题 # | 问题 | 可能原因 | 处理方式 | 连接失败 / ECONNREFUSED | 客户端未启动或 Local API 未开启 | 确认 Hubstudio 已启动、已登录、本地 API 已开启;必要时用 -p 指定端口。 | 返回未授权 | 开启了本地 API 安全认证 | 传入 --local-api-key ,或设置环境变量 HUBSTUDIO_LOCAL_API_KEY 。 | 读不到端口 | 客户端未运行、Local API 未就绪或 IPC 查询失败 | 确认客户端已启动并开启 Local API,或直接用 -p 指定端口。 | 找不到某个子命令 | 当前 CLI 版本暂未内置该命令 | 确认使用的是最新版本 hubstudio-cli ;如仍缺失,请联系 Hubstudio 支持。 修改于 2026-09-28 07:05:07 上一页 Linux Server 部署与自动化指南 下一页 获取环境列表