苹果群控用一台电脑替几十双手干活。改动都在 iPhone 外面:不改系统、不装描述文件,靠注入触摸和按键事件驱动设备。
iOS 自动化的门槛为什么比安卓高
安卓做手机自动化的人多,历史长,开源工具和文档也全。手里一堆 iPhone 要做批量运营或真机测试,会撞上苹果的封闭性,安卓上顺手的做法在这边经常没入口。
最直接的拦路虎是访问权限。安卓可以 ADB 直连、无障碍服务抓取控件树、Root 拿到系统级 API。iOS 不行,设备通信必须绕道 Apple 官方许可的工具链:Apple Configurator 2、libimobiledevice、Xcode Device SDK。缺了这些,电脑连上的是什么都分不清。
其次是输入模拟。安卓用 AccessibilityService 把点击事件直接灌进任何 App 进程。iOS 没这个公开接口,只能在系统层面折腾辅助功能框架,或者绕过手机本身,用外部设备模拟输入。这就是 HID 模式的由来。
三种连接模式,和怎么搭中控
搭系统先定怎么跟手机通信。能做哪些操作、后期维护有多麻烦,都跟这一步绑在一起。
方案 A 是代理模式。手机通过 USB 或局域网连到一台电脑,这台电脑上跑着代理服务,把中控发出的指令转给对应 iPhone。因为用的是官方工具链跟设备打交道,能读到控件层级信息,也就是 AccessibilityElement。脚本按按钮文字找元素。按钮叫“立即领取”,就去点文本为“立即领取”的那个,分辨率变了、布局换了照样跑。
代价是设备和代理服务器的连接得一直稳着。通常需要 USB 集线器加一台性能过得去的电脑。设备一多,USB 带宽和 CPU 解码压力就上来了。
方案 B 是蓝牙 HID。每台 iPhone 旁边放个小开发板,典型是 ESP32-S3 模组,通过蓝牙跟手机连上,伪装成一个蓝牙外接键盘或鼠标。脚本要点屏幕左上角时,实际是向开发板发一条 HID 指令,用物理按键模拟实现操作。
软件特征少。手机以为自己接了个蓝牙键盘,没被注入什么奇怪的东西。外部检测严的场景会走这条,有些社交平台的反作弊尤其严。
短板是 HID 模式下脚本看不见屏幕,只能根据上一轮结果猜下一步。要么截图拿 OpenCV 做模板匹配,要么靠 OCR 认字,开发难度明显上升。
方案 C 是 OTG HID。思路跟蓝牙 HID 差不多,只是改成 USB 有线连接。手机通过 OTG 转接线挂上小型 HID 主控器。数据走有线,延迟低、干扰少,适合要求毫秒级精度的场景。
三种怎么选:
| 维度 | 代理模式 | 蓝牙 HID | OTG HID |
|---|---|---|---|
| 控件可读性 | 支持(直接按名称找) | 不支持 | 不支持 |
| 图片/OCR 识别 | 支持 | 支持 | 支持 |
| 是否需要 USB 直连电脑 | 需要 | 不需要 | OTG 直连 |
| 防检测能力 | 中等 | 最强 | 强 |
| 稳定性 | 受网络波动影响 | 受蓝牙信号干扰 | 最佳 |
| 设备数量上限 | 受 USB 带宽限制 | 每台独立 | 每台独立 |
代理模式功能全、效率高,出问题也好排查。新手和团队建议从它起步,积累了经验再按实际场景换 HID 模式,或者混着上。
不管选哪种连接方式,中控面板都得有。实时投屏把每台设备的画面以视频流推到电脑。电脑上点一下,对应的手机跟着动。一条脚本可以同时下到几十台。在线、离线、电量、信号也在面板上看。
硬件要准备这些。主机用 Mac mini M1 起步,8 核 CPU + 16GB RAM;Windows 台式机 i5 以上 + 16GB RAM 也行。CPU 性能和内存决定能流畅解码几条视频流。USB 3.0 Hub 至少 7-10 个口,带独立供电。iPhone 若干台,系统版本尽量统一,每台一根 USB 数据线。
中控界面一般分三块。左边是设备列表,显示编号、型号、在线状态。中间是选中设备的实时投屏画面,底部是命令栏和日志窗口。EasyClick 的投屏中控就是这么设计的,详情去看文档。
写第一个脚本、踩坑和进阶
中控搭好以后写脚本。拿电商运营举例:20 个账号每个都要走一遍“登录 → 浏览商品页 → 点击收藏 → 返回主页”。手动一次大概 30 秒,脚本平均每 5 秒跑完一轮。EasyClick 的脚本语法基于 JavaScript,简化版示例:
// 登录流程
let loginBtn = text("登录").findOne(5000);
if (loginBtn) {
clickNode(loginBtn);
} else {
loge("未找到登录按钮");
exit();
}
// 等待页面加载
sleep(2000);
// 输入用户名和密码
textField("请输入手机号").setText("13800138000");
textField("请输入密码").setText("myPassword123");
// 点击确认
text("确认").findOne(3000).click();
// 首页收藏某件商品
image.findImage("product_star_icon.png", 0.9).click();
等待用 waitExistNode(timeout),别用 sleep 死等。元素一出现就往下执行。每步包一层 try-catch,中途出错不会把整段脚本打崩。文字控件用 text() 找,图标用 image.findImage() 做图像匹配。写完先在一台手机上单测,没问题再一键部署到所有目标设备。改脚本可以热更新,不用重启设备上的服务,保存文件就自动同步。
从 5 台扩到 50 台,会冒出几台时碰不到的问题。
一堆 iPhone 在同一 Wi-Fi 下频繁拉同样资源,比如每秒请求一张封面图,路由器分分钟被干趴。对策是把并发分散到不同时间窗口,或者用本地静态资源缓存替代在线请求。
设备连着电跑几十个小时,电池鼓包、过热关机很常见。对策是换支持智能充电控制的 USB Hub,或者在脚本里加周期性 idle 间隔,让设备喘口气。
同一 IP 短时间发大量相同请求,会被目标网站封。对策是建 IP 池轮换,配合代理服务器做出站分流,让每条链路看起来都像独立用户。
传统脚本上面可以再叠一层 AI Agent,让大模型写脚本、改脚本。LLM 按自然语言生成符合语法的操作脚本,跑的时候也能改策略。页面改版、原来的选择器失效,模型会按上下文重推路径。跨平台多账号运营可以先看 AI 智能体手机自动化全流程解析。
核心思路,和几个高频问题
流程是这样:选连接方式(代理、HID 或 OTG),用中控投屏管设备,脚本执行,再按规模做部署调优。先把最小一套跑起来。时间主要耗在设备、签名和网络上。常见问题:
| # | 问题 | 一句话答案 |
|---|---|---|
| 1 | iOS 必须越狱才能实现自动化吗? | 不需要,代理/蓝牙 HID/OTG 三种模式全部免越狱 |
| 2 | 代理模式和 HID 模式哪个更好? | 代理功能最全,HID 防检测更强,按场景选 |
| 3 | 一台电脑最多管多少台 iPhone? | 局域网中控约 50-100 台,云控可扩展到 200-300 台 |
| 4 | iOS 升级后脚本会不会废掉? | 一般不会,微调选择器就行;iOS 版本迭代也比安卓慢 |
| 5 | 零基础能否快速上手? | 可以,录制回放加修改参数就能启动简单任务 |
| 6 | 有没有免费开源的方案? | tidevice 等可用但有功能限制,商业方案综合性价比更高 |
| 7 | 自动化操作会触发风控吗? | 合规使用没问题;违规玩法无论用什么工具都会被封 |
| 8 | 如何保护我的自动化脚本不被盗用? | 代码混淆 + 二次编译 + 授权卡密分发(详见代码混淆文档) |
想要真实跑起来?
本文介绍的方案均可在 EasyClick 手机自动化平台落地。官网提供完整文档、开发工具与群控云控产品,免费体验。