概述
AutoJs
介绍
官方文档:https://hyb1996.github.io/AutoJs-Docs/#/
Github:https://github.com/hyb1996/Auto.js
官方论坛:https://www.autojs.org/
非官方文档:https://easydoc.xyz/doc/25791054/uw2FUUiw/3bEzXb4y
AutoJs是一款不需要Root权限的JavaScript自动化软件,简单来说就是手机上的“脚本精灵”。
现在官方已经不在提供下载途径了,具体原因可以去这里参观:貌似Auto.js在酷安中已经被下架了
非官方文档中有下载地址
在我看来AutoJs与Appium相比更好用,不仅仅是速度,在启动应用方便,AutoJS会保持App登录状态,但是Appium不会。
使用
推荐使用AutoJsPro,本教程基于AutoJsPro
下载安装之后,需要打开几个权限:
无障碍
悬浮窗
远程调试
环境配置参考:https://easydoc.xyz/doc/25791054/uw2FUUiw/F30Lmx8U
远程链接参考:Auto.js Pro如何连接VS Code插件
基础操作
打开应用
//启动APP
if (currentPackage() != "com.chaoxing.mobile") {
toast("即将打开超星!");
//直接打开学习通
app.launchApp("学习通");
} else {
toast("已经在学习通中,即将开始进行下一步操作!");
};
获取当前activity方法,支付为例,com.zhihu.android
就是currentPackage
➜ ~ adb shell dumpsys window | grep mCurrent
mCurrentAppOrientation=SCREEN_ORIENTATION_PORTRAIT
mCurrentRotation=ROTATION_0
mCurrentUserId=0
mCurrentUserId=0
mCurrent=[0,72][1080,1920]
mCurrentFocus=Window{38aea79 u0 com.zhihu.android/com.zhihu.android.app.ui.activity.MainActivity}
点击按钮
打开悬浮窗的第三个按钮
比如我们现在点击发现按钮,会有弹窗,点击生成代码,如下图
就有代码了,可以直接拷贝到电脑中,所以如果你是在手机上编辑,会要命的。一定要把VSCode环境安装好。
如果你发现某个按钮是可以找到的,但是执行了id("hello").findOne().click()
后,并没有点击动作,你可以试试这种方法,需要安卓7以上才行
如果一个控件本身无法通过click()
点击,那么我们可以利用bounds()
函数获取其坐标,再利用坐标点击。例如:
var b = desc("打开侧拉菜单").findOne().bounds();
click(b.centerX(), b.centerY());
// 如果使用root权限,则用 Tap(b.centerX(), b.centerY());
有一些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
后
➜ ~ cd ~/.mitmproxy
➜ .mitmproxy ls
config.yaml mitmproxy-ca-cert.pem mitmproxy-dhparam.pem
mitmproxy-ca-cert.cer mitmproxy-ca.p12
mitmproxy-ca-cert.p12 mitmproxy-ca.pem
可以在如下位置找到证书,然后安装。
手机在wifi处配置完成后打开mitm.it
,下载安装信任证书即可。
数据获取
编写脚本script.py
import json
import os
from mitmproxy.http import flow
def response(flow: flow):
print(flow.request.url, flow.response.text)
if __name__ == '__main__':
os.system("mitmdump -s script.py")
安卓7问题
出于网络安全的角度考虑,默认情况下,面向 Android 7.0 的应用开始只信任系统提供的证书(system),且不再信任用户添加的证书(user)。
为了解决这个问题,需要Xposed+JustTrustMe去解决,否则网络不同。所以手机必须root。
详细教程,参考已root的安卓+XPosed+JustTrustMe破解ssl pinning
实战项目
参考使用Auto.js软件制作的脚本合辑,有大量实战丰富的项目,阅读原文即可
最后
以上就是动听玫瑰为你收集整理的AutoJs+mitmproxy App爬虫AutoJsmitmproxy实战项目的全部内容,希望文章能够帮你解决AutoJs+mitmproxy App爬虫AutoJsmitmproxy实战项目所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复