技术解析
做 APP 大带宽服务器爬虫时,我们通常使用 APP 抓包的方法来来获得接口路径,进而请求数据。遇到复杂的签名,可能还需要做安卓逆向来破解。
当然,我们也可以选择使用 Appium + mitmdump 来进行爬取。mitmdump 没问题,很稳定,挂着即可。但是 Appium 过于笨重,操作缓慢,开发不便,稳定性欠佳。而 Airtest 看起来也是个不错的选择,事实上确实如此。可是,我就爬个 APP,Airtest 是不是太重了?
那么,有没有一款软件,运行在安卓,通过接收 restful API 请求,进而转化为对设备的操作呢?而且它不依赖 ADB,甚至不需要 root 权限。答案是有的,它就是 Hermit,一切操作均在安卓端完成,对外只提供一个 API 。
Hermit,是一款用于安卓自动化测试的安卓软件,安装包仅有 2.8MB 。具有一系列的操作能力,譬如,通过无障碍 /root 的方式,点击,滑动、设置与读取剪切板信息(支持中文)等操作,同样,它也自带了一个布局分析器,类似 Android Studio 的 LayoutInspector,可以分析界面层次和范围、获取界面上的控件信息,进而方便点击、滑动等操作。
由于 Hermit 只提供 API,所以我们可以用喜欢的语言直接调用 API,通过发送 GET 、POST 之类的请求来控制手机。
我们可以基于 Hermit 的 API 来制作一个 python 模块,导入模块后直接调用函数,即可操作手机。而这个模块我已经做好,并将其取名为 pyhermit,如果您喜欢 Java,您可以封装一个库并叫做 Jermit 等。以此类推,可以有 Germit 、Cermit 等等。
它有哪些优点?
开源,体积小,轻量级
支持通过 root 与无障碍两种方式操控手机。
支持所有主流语言控制手机,二次开发方便。
自带界面分析工具,开发自动化测试,轻轻松松。
能通过次序来点击具有相同属性的一组控件,例如屏幕中出现多个关注按钮的时候。
之前在社区发过第一版,但是还不太成熟,第二版相较于第一版有了很大的提升,感兴趣的朋友可以玩玩。
文档地址: https://www.lookcos.cn/docs/hermit
Github: https://github.com/LookCos/hermit