做 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
1
Origami404 2021-03-07 09:58:05 +08:00 via Android
看起来很好用,已 star 。等有空了好好研究一下
|
2
Austin2035 OP @Origami404 感谢支持,可随时联系我,共同交流技术。
|
3
gladuo 2021-03-07 11:30:59 +08:00
很有意思很轻量
|
4
ilotuo 2021-03-07 12:41:34 +08:00
一直很好奇灰产(薅羊毛之类) 大佬们用的是什么脚本. airtest 应该最容易实现, 但是 airtest 出来之前就有这些灰产, 那他们用啥最快实现?
|
5
Austin2035 OP @gladuo 是的 的确挺轻量
|
6
Austin2035 OP @ilotuo 可能是 auto.js 之类,亦或者是用抓包,提交请求这种方式。
|
7
teawithlife 2021-03-07 14:27:13 +08:00
试用了一下,挺不错
/image/screen 接口没测试成功 返回 Failed resolution of: Landroid/accessibilityservice/AccessibilityService$TakeScreenshotCallback; /viewer 调用了上面的接口,所以也没法用 另外 /action 接口的文档写的不是很清楚, /action/1 这样是不对的,需要 /action/back 才对,我是翻了 python 的代码才找到用法的 |
8
teawithlife 2021-03-07 14:28:47 +08:00
建议文档中写一些 curl 调用的示例,这样测试起来也方便
|
9
Austin2035 OP @teawithlife 非常感谢你的反馈,我会改进一下的
|
11
Austin2035 OP @devliu1 谢谢建议,本人 Java 新手,见谅
|
12
unco020511 2021-03-08 11:23:21 +08:00
看了下文档已 start,作者是个二本在校生,不错不错
|
13
Austin2035 OP @unco020511 哈哈,感谢支持。
|