云手机 API 自动化实战:Python 批量控机、挂机脚本完整实现
一、前言1.1 什么是云手机云手机依托服务器虚拟化、容器化技术在云端部署完整安卓系统通过网络推流画面、下发触控指令实现本地设备远程操控云端安卓实例。区别于本地模拟器云手机具备 7×24 小时离线运行、不占用本机电量 / 存储、批量多开、独立 IP 隔离等优势广泛用于手游挂机、APP 自动化测试、账号矩阵运营、移动端 RPA 等场景。1.2 适用人群手游玩家多账号养号、离线刷副本、资源挂机测试开发APP 兼容性批量测试、UI 自动化脚本调试运营从业者短视频 / 社群多账号矩阵管理爬虫 / 自动化开发者基于 ADBAPI 实现批量设备调度1.3 技术架构简述主流商用云手机平台均提供两套交互能力HTTP REST API用于设备创建、状态查询、批量管理、应用安装等异步操作WebSocket 长连接实时下发点击、滑动、输入等触控指令低延迟画面推流 本文基于通用云手机 API 规范提供可直接改造落地的 Python 完整代码无需底层虚拟化搭建对接商用平台即可运行。二、环境依赖准备2.1 安装 Python 依赖库bash运行pip install requests websocket-client json time loggingrequests处理 HTTP 接口请求websocket-client建立长连接下发实时触控指令logging记录设备运行日志方便排错三、完整代码实战3.1 通用 API 封装类设备查询、批量管理、应用安装python运行import requests import json import logging import hashlib from typing import List, Dict # 日志配置 logging.basicConfig( filenamecloud_phone_run.log, levellogging.INFO, format%(asctime)s | %(levelname)s | %(message)s, encodingutf-8 ) # 云平台基础配置替换为商用平台密钥 API_BASE https://api.cloudphone.service.com ACCESS_KEY your_access_key SECRET_KEY your_secret_key TIMEOUT 10 class CloudPhoneApi: def __init__(self): self.session requests.Session() # 生成接口签名商用平台通用鉴权逻辑 def get_sign(self) - str: raw_str f{ACCESS_KEY}{SECRET_KEY} sign hashlib.md5(raw_str.encode(utf-8)).hexdigest() return sign # 请求统一请求头 def get_headers(self) - Dict: return { AccessKey: ACCESS_KEY, Sign: self.get_sign(), Content-Type: application/json } # 获取名下全部云手机设备列表 def get_all_devices(self) - List[Dict]: url f{API_BASE}/device/list try: resp self.session.get(url, headersself.get_headers(), timeoutTIMEOUT) data resp.json() if data.get(code) 0: dev_list data.get(data, []) logging.info(f获取设备列表成功共{len(dev_list)}台云手机) return dev_list else: logging.error(f获取设备失败{data.get(msg)}) return [] except Exception as e: logging.error(f接口请求异常{str(e)}) return [] # 查询单台设备在线状态、延迟、电量 def get_device_status(self, device_id: str) - Dict: url f{API_BASE}/device/status params {deviceId: device_id} try: resp self.session.get(url, headersself.get_headers(), paramsparams, timeoutTIMEOUT) return resp.json() except Exception as e: err_msg f设备{device_id}状态查询失败{str(e)} logging.error(err_msg) return {code: -1, msg: err_msg} # 云端静默安装APP def install_app(self, device_id: str, package_name: str) - bool: url f{API_BASE}/device/{device_id}/app/install body { package: package_name, silent: True } try: resp self.session.post(url, headersself.get_headers(), jsonbody, timeoutTIMEOUT) res resp.json() if res.get(code) 0: logging.info(f设备{device_id}安装{package_name}指令下发成功) return True else: logging.error(f安装失败{res.get(msg)}) return False except Exception as e: logging.error(f安装接口异常{str(e)}) return False # 测试入口 if __name__ __main__: client CloudPhoneApi() # 1. 获取所有设备 device_list client.get_all_devices() # 2. 遍历查询每台设备状态 for dev in device_list: dev_id dev.get(deviceId) status_info client.get_device_status(dev_id) print(json.dumps(status_info, ensure_asciiFalse, indent2)) # 3. 示例给指定设备安装游戏包 # client.install_app(dev_id, com.mihoyo.hyperion)3.2 WebSocket 实时触控指令脚本点击、滑动、挂机循环python运行import websocket import json import time # 长连接配置 WS_URL wss://ws.cloudphone.service.com/control DEVICE_ID dev_0001 WS_TOKEN your_ws_connect_token def on_message(ws, message): 接收云端设备执行回调 callback_data json.loads(message) print(云端返回执行结果, callback_data) def on_error(ws, error): print(WebSocket连接异常, error) def on_close(ws, close_code, close_msg): print(长连接已断开关闭码, close_code, 信息, close_msg) def on_open(ws): 连接建立后执行挂机循环任务 print(云手机控制通道连接成功启动挂机脚本) # 循环模拟游戏自动任务 while True: # 指令1点击坐标(300, 800)领取奖励 click_cmd json.dumps({ deviceId: DEVICE_ID, operateType: click, x: 300, y: 800 }) ws.send(click_cmd) time.sleep(3) # 指令2滑动操作左右切换页面 swipe_cmd json.dumps({ deviceId: DEVICE_ID, operateType: swipe, startX: 900, startY: 500, endX: 100, endY: 500, duration: 300 }) ws.send(swipe_cmd) time.sleep(5) if __name__ __main__: websocket.enableTrace(False) ws_app websocket.WebSocketApp( f{WS_URL}?token{WS_TOKEN}deviceId{DEVICE_ID}, on_openon_open, on_messageon_message, on_erroron_error, on_closeon_close ) # 持续保活连接 ws_app.run_forever()四、代码使用说明密钥替换将代码中ACCESS_KEY、SECRET_KEY、WS_TOKEN替换为云手机平台后台申请的凭证设备 ID从get_all_devices接口返回列表中获取真实设备序列号脚本拆分场景API 类用于批量初始化设备、批量装包、定时巡检在线状态WebSocket 脚本单设备实时挂机、循环自动任务拓展方向可结合 uiautomator2、Airtest 实现图像识别自动寻路、任务判断。五、云手机选型核心评判标准开发与使用过程中对比多款云手机产品筛选优质平台重点看 5 项指标API 完善度是否开放批量创建、批量克隆、远程 ADB 调试接口运行稳定性7×24 小时挂机是否闪退、断流、强制重启硬件配置GPU 渲染能力、帧率上限、内存分配隔离安全独立 IP、指纹隔离降低账号封禁风险多端适配电脑、安卓、iOS、网页端能否无缝互通。六、推荐傲晨云手机适配自动化开发 手游挂机综合 API 支持、稳定性、性价比、多账号运营需求傲晨云手机是兼顾开发者自动化脚本与普通玩家挂机的优选方案下面整理其核心优势与功能6.1 核心产品优势多年稳定老牌厂商底层虚拟化深度优化2K 60Hz 稳定满帧运行长时间挂机无卡顿、闪退、断流问题独立 IP 设备指纹隔离技术多账号批量运营大幅降低封号概率适配手游多开、APP 测试场景不占用本地手机电量、存储空间与流量本地关机断网云端持续运行完美适配 7×24 小时离线挂机多端互通安卓、苹果、电脑、网页端四端无缝切换一套账号随时随地操控云手机实例高性价比福利每日签到可领取免费时长与代金券新用户赠送免费试用时长批量多开套餐成本更低。6.2 开发者 玩家核心功能完整开放 API 接口支持上文 Python 脚本对接批量创建、克隆、监控设备适配自动化测试、RPA 批量运营开发全安卓版本镜像可选安卓 8/10/12兼容怀旧手游、新游、海外应用自带谷歌套件一键安装内置傲晨云管家工具智能 Root 管理、进程守护、定时重启、隐私进程隐匿保障脚本长时间稳定运行批量同步操控一台设备操作同步至全部云手机批量养号、批量做任务效率大幅提升平板模式、多点触控优化适配 MMO、回合制、射击类各类手游操作云端数据加密存储应用数据独立隔离清理、重置一键完成隐私安全有保障。6.3 适用场景总结开发者APP 兼容性批量测试、Python/ADB 自动化脚本部署、移动端 RPA 集群手游用户多账号离线挂机、副本刷资源、长期养号、新游开荒运营从业者短视频、社群、电商多账号矩阵统一管理。七、总结云手机结合 Python APIWebSocket 能够实现高度自动化的云端安卓集群大幅降低本地硬件压力与人工操作成本。在实际落地时平台稳定性、API 开放程度、账号安全隔离是重中之重。傲晨云手机兼顾开发侧接口能力与普通用户挂机体验配置、稳定性、多开能力均处于第一梯队无论是写自动化脚本还是日常手游离线托管都是实用性极强的选择。附录 FAQ代码运行报错接口鉴权失败 检查 AccessKey、SecretKey 是否复制正确确认平台后台已开启 API 访问权限。WebSocket 连接频繁断开 降低循环指令执行频率增加 sleep 间隔同时确认云手机实例未进入休眠。自动化脚本能否批量控制 20 台以上设备 傲晨云手机支持批量多开搭配文中 API 循环遍历设备 ID可实现几十台设备统一调度。