前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mitmproxy抓包 | Python实时生成接口自动化用例(三)

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

作者头像
王大力测试进阶之路
发布2022-03-14 14:27:15
2.8K0
发布2022-03-14 14:27:15
举报
文章被收录于专栏:橙子探索测试橙子探索测试

抓包工具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、请求方式、响应头、响应体等)需要的信息,脚本变更,保存后实时同步,无需重新启动抓包服务

代码语言:javascript
复制
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

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

2、自动打开web抓包页面

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档