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

抓包工具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

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

mitmproxy抓包 | Python实时生成接口自动化用例(三)_第1张图片

2、自动打开web抓包页面

mitmproxy抓包 | Python实时生成接口自动化用例(三)_第2张图片

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

mitmproxy抓包 | Python实时生成接口自动化用例(三)_第3张图片

五、python脚本

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

import mitmproxy.http
import 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

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

mitmproxy抓包 | Python实时生成接口自动化用例(三)_第4张图片

2、自动打开web抓包页面

mitmproxy抓包 | Python实时生成接口自动化用例(三)_第5张图片

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

mitmproxy抓包 | Python实时生成接口自动化用例(三)_第6张图片

mitmproxy抓包 | Python实时生成接口自动化用例(三)_第7张图片

mitmproxy抓包 | Python实时生成接口自动化用例(三)_第8张图片

你可能感兴趣的:(java,python,linux,http,nginx)