苹果群控免签名脚本实战:USB HID 四段代码拆解
USB HID 脚本不用签名、不装 App,一根数据线就能点。整段脚本其实就四块:开会话定屏幕、点击、输入、截图。下面一段段拆,每段贴能跑的代码,顺带说清返回值、坐标对齐和掉线重连这些坑。
适用版本:中控 10.7.0+(2026-09-08)、手机 iOS 17+。 USB HID 和代理自动化互斥,同一台设备只能开一条;截图走无自动化截图。
第一段:先开会话,再定屏幕尺寸
function openHid() { let r = usbHidEvent.sessionStart(true); if (r && r !== "") { loge("会话开启失败: " + r); return false; } // 分辨率按当前机型改,这里只是例子 r = usbHidEvent.setScreenSize(1170, 2532); if (r && r !== "") { loge("设置屏幕尺寸失败: " + r); return false; } return true;}返回值是统一的:null 或空字符串算成功,其它字符串是错误信息,拿到就打日志。
sessionStart(true) 里的 true 是增强兼容模式,低版本系统会自动忽略。setScreenSize 必须和当前截图、投屏的分辨率一致,1170×2532 只是示例,按你的机型改;横竖屏一转,要重新设。连接状态乱了,用 sessionRestart 重置,比反复 sessionStart 干净,因为它先断再连。
第二段:点击
usbHidEvent.clickPoint(300, 400); // 单击usbHidEvent.press(300, 500, 800); // 长按 800 毫秒usbHidEvent.doubleClickPoint(200, 400); // 双击usbHidEvent.swipeToPoint(100, 600, 300, 200, 500); // 从 (100,600) 滑到 (300,200),500 毫秒坐标跟着 setScreenSize 走。20 台同一分钟点同一个像素,就是机器信号——点击之间加随机延迟、批量设备错开排期,这两件事在脚本外面做。要传多指手势,用 multiTouch 传轨迹。
第三段:输入文字
usbHidEvent.inputText("你好"); // 走剪贴板粘贴,中文最稳usbHidEvent.typeText("hello"); // 键盘打字;遇到非英文自动转粘贴usbHidEvent.setClipboard("要贴的内容");inputText 是粘贴,typeText 是键盘打字。粘贴英文出现多余空格,去手机「设置 → 通用 → 键盘」把「智能标点」关掉。要按组合键,用 keyPressChar。
第四段:截图
let img = image.captureFullScreenNoAuto();if (!img) { loge("截图失败"); exit();}// 这一步可以接 OCR 或图色找图image.recycle(img);USB HID 下别用屏幕镜像截图。captureFullScreenNoAuto 不走镜像,也不装 App,就是比镜像慢一点;要快可以看 startPreCapScreen。图片用完记得 image.recycle,群控长跑不回收,内存会跟着涨。
四段拼起来
四段单独写容易,拼起来的关键是顺序和状态:会话先开、退出前会话要关、每步之间留等待。
function main() { if (!openHid()) { exit(); }
// 第二段:点击 —— 打开 App 的入口 usbHidEvent.clickPoint(300, 400); sleep(800 + Math.floor(Math.random() * 400));
// 第三段:输入 usbHidEvent.inputText("搜索关键词"); sleep(600);
// 第四段:截图验证 let img = image.captureFullScreenNoAuto(); if (!img) { loge("截图失败"); usbHidEvent.sessionStop(); exit(); } image.recycle(img);
usbHidEvent.sessionStop();}
main();写成上面这样就能跑。实际项目里要补三样:失败重试、每步日志、退出前清理。清理不只是 sessionStop,截图对象、OCR 实例也要释放。
常见问题
USB HID 脚本要先装代理吗?
不用。走数据线,电脑模拟成 HID 外设向手机发事件,手机上不装 App、不装描述文件。中控 10.7.0+,手机 iOS 17+。
sessionStart 返回什么算成功?
null 或空字符串成功,其它字符串是错误信息,拿到就打日志排查。
截图为什么不用屏幕镜像?
两条链路互斥;无自动化截图不装 App、不走镜像,设备侧少留东西。文档里这个函数从 EC iOS USB 6.25.0 起就有。
输入中文用什么函数?
inputText 粘贴最稳;typeText 遇到中文会自动转粘贴。
坐标一直点偏怎么办?
先查 setScreenSize 传的分辨率和当前截屏、投屏是否一致,转屏后要重设。
脚本掉线了怎么处理?
先 sessionRestart 重置会话;再查集线器供电和数据线。
能和代理自动化混用吗?
不能。同一台设备只能开一条链路,startEnv 和 USB HID 互斥。
这段代码能直接拿去用吗?
能跑,但要按你的机型改分辨率、按你的界面改坐标和等待时间。示例里的数字是演示,不是标准答案。
关于我们:EasyClick 做手机自动化脚本开发和群控,覆盖安卓免 ROOT、iOS 免越狱、鸿蒙。风控原理和成本怎么算,分别看 苹果群控如何过风控? 和 苹果群控一个月多少钱?。