mimtproxy的使用(windows)
1.安装
pip3 install mitmproxy
或者下载安装指定版本:https://mitmproxy.org/downloads/
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 json def 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 json def 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 AndroidUiautomationPoco poco = 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)