1.安装
pip3 install mitmproxy
或者下载安装指定版本:
2.配置证书
对于mitmproxy来说,如果想要截获HTTPS请求,就需要设置证书。mitmproxy在安装后会提供一套CA证书,只要客户端信任了mitmproxy提供的证书,就可以通过 mitmproxy获取HTTPS请求的具体内容,否则mitmproxy是无法解析HTTPS请求的。
首先,运行以下命令产生CA证书,并启动mitmdump:
mitmdump
然后就可以搜索.mitmproxy文件夹
点击mitmproxy-ca.p12进行安装,安装到受信任的根目录。。那个文件夹。
但是我这边的没有那个引导选项,我就这么做
打开ie浏览器选择intnet选项点击内容选项卡点击证书点击受信任的根证书颁发者点击导入选择我们要导入的证书
至于手机端就是和电脑在同一局域网,并设置电脑ip+8080为代理
然后访问
mitm.it
下载证书,安装证书
3.使用
脚本简单使用
import jsondef response(flow):# 这个别问为啥了,必须这么写 url = 'www.xxx.com' if url in flow.request.url: text = json.loads(flow.response.content) print(text)
把脚本保存为py文件(xx.py)
用mitmdump加载这个py文件
mitmdump -s xx.py
4.实例(当当)
当手机端和mitmproxy都下载配置好了
编写这么一个脚本(xxxx.py)
import jsondef response(flow): url = 'product.mapi.dangdang.com' page_size = 'page_size=15' # 对url进行筛选,只选取评论的url if url and page_size in flow.request.url: text = flow.response.text data = json.loads(text) for item in data['review_list']: # 获取用户昵称 if len(item['cust_name']) > 0: name = item['cust_name'] else: name = '无名' print(item['cust_name']) # 获取用户评分 if len(item['score']) > 0: score = str(item['score']) else: score = '0' print(item['score'] + '\n') # 获取用户评论 content = item['content'].replace(',', ',').replace('\n', '') print(item['content'] + '\n') # 获取用户评论时间 creation_date = item['creation_date'] print(item['creation_date']) # 获取有用数 if len(str(item['total_helpful_num'])) > 0 : total_helpful_num = str(item['total_helpful_num']) else: total_helpful_num = '0' print(item['total_helpful_num']) # 获取无用数 if len(str(item['total_useless_num'])) > 0 : total_useless_num = str(item['total_useless_num']) else: total_useless_num = '0' print(item['total_useless_num']) # 获取评论数 if len(str(item['total_reply_num'])) > 0 : total_reply_num = str(item['total_reply_num']) else: total_reply_num = '0' print(item['total_reply_num']) print('\n') # 将获取信息写入csv文件 with open('alive.csv', 'a+', encoding='utf-8-sig') as f: f.write(name + ',' + score + ',' + content + ',' + creation_date + ',' + total_helpful_num + ',' + total_useless_num + ',' + total_reply_num + '\n')
利用mitmdump启动这个脚本文件
mitmdump -s xxxx.py
当手机往下滑的时候,就会出现如下的效果
脚本文件所在的位置生成这么一个文件
接下来就是连接手机(模拟器)和airtest,然后自动化操作滑动的动作了
airtest脚本
# -*- encoding=utf8 -*-__author__ = "Administrator"from airtest.core.api import *auto_setup(__file__)from poco.drivers.android.uiautomation import AndroidUiautomationPocopoco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)poco(text="当当").click()time.sleep(2)poco(text="电子书").click()time.sleep(2)poco(name="com.dangdang.buy2:id/index_search").click()time.sleep(4)poco(name="com.dangdang.buy2:id/search_edit_input").set_text('活着')time.sleep(2)poco(name="com.dangdang.buy2:id/match_item_key").click()time.sleep(3)poco(name="com.dangdang.buy2:id/review_count_and_rate").click()time.sleep(3)poco.swipe([0.5, 0.8], [0.5, 0.2])time.sleep(3)poco.swipe([0.5, 0.8], [0.5, 0.2])time.sleep(3)poco.swipe([0.5, 0.8], [0.5, 0.2])time.sleep(2)poco(name="android.widget.TextView").click()time.sleep(2)while True: poco.swipe([0.5, 0.8], [0.5, 0.2]) time.sleep(2)