mitmproxy抓包 | Python实时生成接口自动化用例(三)

王大力测试进阶之路

共 2804字,需浏览 6分钟

 · 2021-09-26

抓包工具mitmproxy环境配置使用(一)

抓包工具mitmproxy | mitmweb基本用法(二)

       前面已经给大家分享了mitmproxy的环境配置和基本使用,文章浏览量很高,相信对抓包工具感兴趣的朋友,已经熟练运用起来了。

       这期给大家分享下mitmproxy结合python脚本对抓包信息的(请求头、请求头、接口url、请求方式、响应头、响应体等)进行监控,实时抓取数据并存储到文件里,实现了接口自动化测试中的接口用例设计自动化,无需花费大量时间手动编写接口用例,大大提高了工作效率,相信很多人看到这里已经欣喜难耐了,一定要关注下方公众号,有更多精彩技术文章。

一、mitmproxy介绍

mitmproxy是Python编写的一款功能完善的代理工具,mitmproxy是一款支持拦截HTTP和HTTPS请求和响应并即时修改它们的交互式中间人代理工具。最强大之处在于对python脚步的支持,它提供了Python API给开发者编写插件用来自定义对流量进行处理和修改,可以在python代码中直接处理数据包。


二、mitmproxy的功能:

1、拦截HTTP和HTTPS请求和响应

2、保存HTTP会话并进行分析

3、模拟客户端发起请求,模拟服务器端返回响应

4、利用反向代理将流量转发给指定的服务器

5、支持Mac和linux上的透明代理

6、利用Python对HTTP请求与响应进行实时处理

三、环境

1、部署python环境

2、安装mitmproxy,pip install mitmproxy

mitmproxy提供了HTTP、WebSocket、TCP事件。本次只考虑HTTP事件,HTTP事件提供一些api,详情参考https://docs.mitmproxy.org/stable/addons-events/


四、启动web抓包,抓包信息全量存入文件

1、cmd下执行:

mitmweb -p 8889 -w C:\Users\la\Desktop\test.txt

启动抓包服务,实时抓取全量数据存入文件

2、自动打开web抓包页面

3、边抓包,边将抓包的全量信息实时存入文件


五、python脚本

       编写python脚本,获取接口(请求头、请求头、接口url、请求方式、响应头、响应体等)需要的信息,脚本变更,保存后实时同步,无需重新启动抓包服务

import mitmproxy.httpimport csv,json

class CaptureInfoWriteFile: def __init__(self): pass
def request(self, flow: mitmproxy.http.HTTPFlow): flow_request = flow.request # 获取请求对象 self.url = flow_request.url # 接口url self.host = flow_request.host # 域名 self.path = flow_request.path # 接口地址 self.method = flow_request.method # 请求方式 self.content = flow_request.content self.timestamp_start = flow_request.timestamp_start # 请求开始时间戳 self.timestamp_end = flow_request.timestamp_end # 请求结束时间戳 self.header = flow_request.headers # 请求头 self.text = flow_request.text # 请求体
def response(self, flow: mitmproxy.http.HTTPFlow): flow_response = flow.response # 获取响应对象 response_status_code = flow_response.status_code # 响应状态码 response_text = flow_response.text # 响应体 response_content = flow_response.content response_timestamp_start = flow_response.timestamp_start # 响应开始时间 response_timestamp_end = flow_response.timestamp_end # 响应结束时间 response_header = flow_response.headers # 响应头
        with open(r'C:\Users\xia\Desktop\test15.csv''a+',newline='') as f: f_csv = csv.writer(f) f_csv.writerows([[self.url, self.host, self.path, self.method, self.header, self.text, response_status_code, response_header, response_text]])

addons = [CaptureInfoWriteFile()]

六、启动web抓包,调用python脚本

1、cmd下执行:

mitmweb -p 8889 -s C:\Users\xia\Desktop\test_maplocal.py

启动抓包服务,实时监控获取抓包信息

2、自动打开web抓包页面

3、边抓包,边调用python脚本,将获取的抓包信息实时存储到文件里,方便接口自动测试使用


浏览 57
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报