Airtest+Mitmprxoy自动爬取APP内容

这里以微博为例,微博网页版无法查看全部粉丝
Airtest+Mitmprxoy自动爬取APP内容_第1张图片
但是微博APP可以,所以从手机端抓取,我用的是模拟器,用fiddler抓包,获取微博粉丝的接口:https://api.weibo.cn/2/cardlist
Airtest+Mitmprxoy自动爬取APP内容_第2张图片
然后就可以用mitmproxy拦截请求了。
1、首先要安装mitmproxy,可以使用pip install mitmproxy直接安装,另外还会附带mitmdump和mitmweb这两个组件。在Windows上也可以到https://github.com/mitmproxy/mitmproxy/releases/获取安装包,双击安装包即可安装。
2、证书配置
对于mitmproxy来说,想要拦截HTTPS请求,就需要设置证书。首先运行mitmdump命令启动mitmdump,然后我们就可以在用户目录下的.mitmproxy文件中找到CA证书。
Airtest+Mitmprxoy自动爬取APP内容_第3张图片
在Windows下只需双击mitmproxy-ca.p12,就会出现导入证书的引导页
Airtest+Mitmprxoy自动爬取APP内容_第4张图片
直接点击“下一步”,出现密码提示设置,这里不需要设置密码,直接“下一步”即可。
Airtest+Mitmprxoy自动爬取APP内容_第5张图片
这里选择“将所有的证书都放入下列存储”,
Airtest+Mitmprxoy自动爬取APP内容_第6张图片
然后点击“浏览”,选择“受信任的根证书颁发机构”,点击确定。
Airtest+Mitmprxoy自动爬取APP内容_第7张图片
然后出现“导入成功”的提示页面,此时电脑上证书已经安装好了。
Airtest+Mitmprxoy自动爬取APP内容_第8张图片
3、模拟器安装证书
由于我是用模拟器来运行微博,同样需要安装证书。这里用的是MuMu模拟器
点击红色箭头处的“文件共享”
Airtest+Mitmprxoy自动爬取APP内容_第9张图片
将用户目录下.mitmproxy文件夹下的mitmproxy-ca-cert.pem文件拖到共享文件夹中
Airtest+Mitmprxoy自动爬取APP内容_第10张图片
然后打开模拟器“设置”——>“安全”——>“从SD卡安装”
Airtest+Mitmprxoy自动爬取APP内容_第11张图片
搜索mitmproxy
Airtest+Mitmprxoy自动爬取APP内容_第12张图片
双击查找到的.pem文件,就会出现“为证书命名”的界面,我这里命名为“mitmproxy”,点击确定即可。
Airtest+Mitmprxoy自动爬取APP内容_第13张图片
4、mitmproxy的使用
和charles一样,mitmproxy在PC的8080端口运行,然后开启一个代理服务,这个服务实际上是一个HTTP/HTTPS的代理。
手机和PC在同一个局域网内,设置代理为mitmproxy的代理地址,这样手机在访问互联网的时候流量数据包就会流经mitmproxy,mitmproxy再去转发这些数据包到真实的服务器,服务器返回数据包时再由mitmproxy转发回手机,这样mitmproxy就相当于起到了中间人的作用,抓到所有Reqeust和Response,另外这个过程还可以对接到mitmdump,抓取到的Request和Response的具体内容都可以直接用python来处理,完成数据的解析和存储过程。
(1)设置代理
和fiddler相似,打开“设置”——>“WLAN”——>鼠标左键长按wifi
Airtest+Mitmprxoy自动爬取APP内容_第14张图片
“修改网络”——“代理”——>“手动”,将代理改为本机电脑的ip,端口为8080,然后点击“保存”
Airtest+Mitmprxoy自动爬取APP内容_第15张图片
Airtest+Mitmprxoy自动爬取APP内容_第16张图片
此时在本地电脑上打开终端,输入mitmdump,会出现正在监听的窗口
Airtest+Mitmprxoy自动爬取APP内容_第17张图片
接下来就可以写代码了,打开Pycharm,创建weibo.py

import json

def response(flow):
    response = flow.response
    request = flow.request
    # 粉丝列表接口
    url = "https://api.weibo.cn/2/cardlist"
    if request.url.startswith(url):
        response_str = json.loads(response.text)
        print('*' * 100)
        print(response_str)
        try:
            cards = response_str["cards"][0]["card_group"]
            for card in cards:
                # 粉丝id
                id = card["user"]["id"]
                # 粉丝昵称
                name = card["user"]["name"]
                print(id, name)
                with open("weibo.txt", "a", encoding="utf-8") as file:
                    file.write(id + "," + name + "\n")
        except Exception as e:
            print(e)

然后执行mitmdump -s weibo.py来运行.py文件,然后模拟器滑动微博粉丝列表,控制台打印输出内容
Airtest+Mitmprxoy自动爬取APP内容_第18张图片
与此同时生成包含粉丝id和name的weibo.txt文件。
Airtest+Mitmprxoy自动爬取APP内容_第19张图片
5、Airtest的使用
从上面来看,我们需要手动滑动粉丝列表才能不断的获取到数据,所以可以使用airtest来模拟人的动作。关于Airtest的使用中文文档上有详细的教程。http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/
这里只作简单了解。
(1)首先从官网下载airtest(http://airtest.netease.com/download.html),解压后找到AirtestIDE.exe文件,双击执行。
Airtest+Mitmprxoy自动爬取APP内容_第20张图片
打开Airtest IDE,连接模拟器,
Airtest+Mitmprxoy自动爬取APP内容_第21张图片
点击右侧“连接”,可以看到上面设备连接出现了设备,点击“connect”
Airtest+Mitmprxoy自动爬取APP内容_第22张图片
连接成功,右侧出现屏幕截图
Airtest+Mitmprxoy自动爬取APP内容_第23张图片
在Poco辅助窗口选择“Android”,在脚本编辑窗弹出内容点击“Yes”
Airtest+Mitmprxoy自动爬取APP内容_第24张图片
Airtest+Mitmprxoy自动爬取APP内容_第25张图片
选取左侧Poco辅助窗的摄像头
Airtest+Mitmprxoy自动爬取APP内容_第26张图片
然后右侧模拟器屏幕选定全局,然后鼠标向上滑动,放开鼠标脚本编辑窗自动生成代码
Airtest+Mitmprxoy自动爬取APP内容_第27张图片
运行代码会看到右侧窗口粉丝列表一直向上拖动,mitmdump控制台输出响应,成功啦!
Airtest+Mitmprxoy自动爬取APP内容_第28张图片

你可能感兴趣的:(Airtest+Mitmprxoy自动爬取APP内容)