这里以微博为例,微博网页版无法查看全部粉丝 但是微博APP可以,所以从手机端抓取,我用的是模拟器,用fiddler抓包,获取微博粉丝的接口:https://api.weibo.cn/2/cardlist 然后就可以用mitmproxy拦截请求了。 1、首先要安装mitmproxy,可以使用pip install mitmproxy直接安装,另外还会附带mitmdump和mitmweb这两个组件。在Windows上也可以到https://github.com/mitmproxy/mitmproxy/releases/获取安装包,双击安装包即可安装。 2、证书配置 对于mitmproxy来说,想要拦截HTTPS请求,就需要设置证书。首先运行mitmdump命令启动mitmdump,然后我们就可以在用户目录下的.mitmproxy文件中找到CA证书。 在Windows下只需双击mitmproxy-ca.p12,就会出现导入证书的引导页 直接点击“下一步”,出现密码提示设置,这里不需要设置密码,直接“下一步”即可。 这里选择“将所有的证书都放入下列存储”, 然后点击“浏览”,选择“受信任的根证书颁发机构”,点击确定。 然后出现“导入成功”的提示页面,此时电脑上证书已经安装好了。 3、模拟器安装证书 由于我是用模拟器来运行微博,同样需要安装证书。这里用的是MuMu模拟器 点击红色箭头处的“文件共享” 将用户目录下.mitmproxy文件夹下的mitmproxy-ca-cert.pem文件拖到共享文件夹中 然后打开模拟器“设置”——>“安全”——>“从SD卡安装” 搜索mitmproxy 双击查找到的.pem文件,就会出现“为证书命名”的界面,我这里命名为“mitmproxy”,点击确定即可。 4、mitmproxy的使用 和charles一样,mitmproxy在PC的8080端口运行,然后开启一个代理服务,这个服务实际上是一个HTTP/HTTPS的代理。 手机和PC在同一个局域网内,设置代理为mitmproxy的代理地址,这样手机在访问互联网的时候流量数据包就会流经mitmproxy,mitmproxy再去转发这些数据包到真实的服务器,服务器返回数据包时再由mitmproxy转发回手机,这样mitmproxy就相当于起到了中间人的作用,抓到所有Reqeust和Response,另外这个过程还可以对接到mitmdump,抓取到的Request和Response的具体内容都可以直接用python来处理,完成数据的解析和存储过程。 (1)设置代理 和fiddler相似,打开“设置”——>“WLAN”——>鼠标左键长按wifi “修改网络”——“代理”——>“手动”,将代理改为本机电脑的ip,端口为8080,然后点击“保存” 此时在本地电脑上打开终端,输入mitmdump,会出现正在监听的窗口 接下来就可以写代码了,打开Pycharm,创建weibo.py
import jsondef response(flow):response = flow.responserequest = 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:# 粉丝idid = 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文件,然后模拟器滑动微博粉丝列表,控制台打印输出内容 与此同时生成包含粉丝id和name的weibo.txt文件。 5、Airtest的使用 从上面来看,我们需要手动滑动粉丝列表才能不断的获取到数据,所以可以使用airtest来模拟人的动作。关于Airtest的使用中文文档上有详细的教程。http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/ 这里只作简单了解。 (1)首先从官网下载airtest(http://airtest.netease.com/download.html),解压后找到AirtestIDE.exe文件,双击执行。 打开Airtest IDE,连接模拟器, 点击右侧“连接”,可以看到上面设备连接出现了设备,点击“connect” 连接成功,右侧出现屏幕截图 在Poco辅助窗口选择“Android”,在脚本编辑窗弹出内容点击“Yes” 选取左侧Poco辅助窗的摄像头 然后右侧模拟器屏幕选定全局,然后鼠标向上滑动,放开鼠标脚本编辑窗自动生成代码 运行代码会看到右侧窗口粉丝列表一直向上拖动,mitmdump控制台输出响应,成功啦! ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190918181358419.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxODI4NjAz,size_16,color_FFFFFF,t_70)
|