|
|
App爬虫 (๑• . •๑)
#AutoJs
介绍
官方文档:https://hyb1996.github.io/AutoJs-Docs/#/
Github:https://github.com/hyb1996/Auto.js
非官方文档:https://easydoc.xyz/doc/25791054/uw2FUUiw/3bEzXb4y
AutoJs是一款不需要Root权限的JavaScript自动化软件,简单来说就是手机上的“脚本精灵”。
现在官方已经不在提供下载途径了,具体原因可以去这里参观:貌似Auto.js在酷安中已经被下架了
非官方文档中有下载地址
使用
推荐使用AutoJsPro,本教程基于AutoJsPro
下载安装之后,需要打开几个权限:
- 无障碍
- 悬浮窗
- 远程调试
环境配置参考:https://easydoc.xyz/doc/25791054/uw2FUUiw/F30Lmx8U
远程链接参考:Auto.js Pro如何连接VS Code插件
基础操作
打开应用
|
|
获取当前activity方法,支付为例,com.zhihu.android
就是currentPackage
|
|
点击按钮
打开悬浮窗的第三个按钮
比如我们现在点击发现按钮,会有弹窗,点击生成代码,如下图
就有代码了,可以直接拷贝到电脑中,所以如果你是在手机上编辑,会要命的。一定要把VSCode环境安装好。
如果你发现某个按钮是可以找到的,但是执行了id("hello").findOne().click()
后,并没有点击动作,你可以实时这种方法,需要安卓7以上才行
如果一个控件本身无法通过click()
点击,那么我们可以利用bounds()
函数获取其坐标,再利用坐标点击。例如:
|
|
有一些APP的组件,它们的id、text、desc等节点值是空值。className值又不是页面上唯一的。
还有的组件id是动态变化的。可以尝试下面几种方法:
- 寻找父组件。如果该组件的父组件,或者爷组件存在固定的id、text、desc,就先定位到父组件,然后使用find()函数遍历父组件的子组件。最后通过className、depth、组件的索引等来判断是否为指定的组件。
- 寻找子组件。如果该组件的子组件,或者孙组件存在固定的id、text、desc,就先定位到子组件,然后使用parent()函数获取父组件对象。最后通过className、depth、组件的索引等来判断是否为指定的组件。
- 寻找兄弟组件。如果该组件的兄弟组件存在固定的id、text、desc,就先定位到兄弟组件,然后使用parent()函数获取父组件对象。接下来使用find()函数遍历父组件的子组件。最后通过className、depth、组件的索引等来判断是否为指定的组件。
mitmproxy
使用AutoJs自动化操作后,是可以让手机自动化了,但是怎么抓取数据呢,这里使用mitmproxy是最快的。
环境配置
安装:pip3 install mitmproxy
终端输入 mitmproxy
后
|
|
可以在如下位置找到证书,然后安装。
手机在wifi处配置完成后打开mitm.it
,下载安装信任证书即可。
数据获取
编写脚本script.py
|
|
安卓7问题
出于网络安全的角度考虑,默认情况下,面向 Android 7.0 的应用开始只信任系统提供的证书(system),且不再信任用户添加的证书(user)。
为了解决这个问题,需要Xposed+JustTrustMe去解决,否则网络不同。所以手机必须root。