比较好的一个介绍是:https://blog.wolfogre.com/posts/usage-of-mitmproxy/

mitproxy 获取请求响应数据的代码如下:

# -*- coding: utf-8 -*-  

import mitmproxy.http
from mitmproxy import ctx
import time
import xlwt class Counter:
def __init__(self):
self.num = 0
self.requestNum = 0
self.responseOrErrorNum = 0
self.aa = 0
self.all_arr = [['请求路径','请求域名','请求path','请求大小(b)','响应大小','响应类型','请求响应时间差(s)','请求开始时间','请求响应结束时间']] def http_connect(self, flow: mitmproxy.http.HTTPFlow):
flow.customField = [] def request(self, flow: mitmproxy.http.HTTPFlow):
self.num = self.num + 1
self.requestNum = self.requestNum+1
flow.start_time = time.time()
flow.customField = [flow.request.url,flow.request.host,flow.request.path]
self.all_arr.append(flow.customField)
# print('----------',len(self.all_arr)) def error(self, flow):
self.aa = self.aa + 1
self.responseOrErrorNum = self.responseOrErrorNum+1
flow.customField.append("Error response") def response(self, flow):
self.aa = self.aa + 1
self.responseOrErrorNum = self.responseOrErrorNum+1
flow.end_time = time.time() try:
flow.customField.append(flow.request.headers['Content-Length'])
except:
flow.customField.append("")
try:
flow.customField.append(flow.response.headers['Content-Length'])
except:
flow.customField.append("")
try:
flow.customField.append(flow.response.headers['Content-Type'])
except Exception:
flow.customField.append("")
try:
time_gap = flow.end_time - flow.start_time
flow.customField.append(time_gap) except Exception:
flow.customField.append("") self.formatoutput(flow)
self.save_excel(self.all_arr,'toutiao-content-10.xls') def formatoutput(self, flow):
ctx.log.info("We've seen %d flows" % self.num)
try:
flow.customField.append(flow.start_time)
except:
flow.customField.append("")
try:
flow.customField.append(flow.end_time)
except:
flow.customField.append("") def save_excel(self,array,filename):
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('test')
for x in range(len(array)):
for y in range(len(array[x])):
worksheet.write(x, y, array[x][y])
workbook.save(filename) addons = [
Counter()
]

  

mitmproxy 获取请求响应数据的更多相关文章

  1. Python+requests 发送简单请求--》获取响应状态--》获取请求响应数据

    Python+requests 发送简单请求-->获取响应状态-->获取请求响应数据 1.环境:安装了Python和vscode编译器(Python自带的编译器也ok).fiddler抓包 ...

  2. Fiddler-007-修改HTTP请求响应数据

    前文简述了如何通过 Fiddler 修改 HTTP请求 的请求参数,详情请参阅:Fiddler-006-修改HTTP请求参数. 在进行 App 测试时,经常需要修改请求参数,以获得不同的显示效果,以查 ...

  3. SpringMVC_01 SpringMVC五大组件、SpringMVC编程步骤(不使用注解进行配置)、SpringMVC编程步骤(利用注解进行配置)、参数获取、响应数据

    1 什么是SpringMVC 是一个mvc框架,用来简化基于mvc架构的web应用程序的 开发. 2 SpringMVC五大组件 DispatcherServlet (前端控制器) HanlderMa ...

  4. Java学习-055-Jsoup爬虫通过设置获取响应数据大小的最大值,解决因默认获取 1MB 响应数据导致的无法获取全部的响应数据内容问题

    在日常工作中,通常会遇到获取各种网络数据使用的情况,Java中可使用Jsoup(Python中可使用 BeatifulSoup)进行数据的获取及处理. 今天有朋友问,在使用 Jsoup 进行请求数据时 ...

  5. ASP.NET Web API 记录请求响应数据到日志的一个方法

    原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个 ...

  6. 入门servlet:request获取请求头数据

    @WebServlet("/RequestDemo2") public class RequestDemo2 extends HttpServlet { protected voi ...

  7. 入门servlet:request获取请求行数据

    /** * 演示Request对象获取请求行数据 */ @WebServlet("/test") public class RequestDemo1 extends HttpSer ...

  8. Jmeter正则提取请求响应数据

    前言 在测试时,我们经常需处理请求返回的响应数据,比如很多时候 cookie 或 token 或 Authorization授权码 会返回在 Response headers(响应头)中,这时我们便需 ...

  9. 03-【request对象获取请求的数据 & request对象存取值】

    request概述(封装了客户端所有的请求数据) request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest.在 ...

随机推荐

  1. 一些DevTools的小技巧-让你不止会console.log()

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文参考:https://www.sitepoint.com/beyond-console-log-leve ...

  2. 等不及要告诉你的一件事-console.log可以指定样式

    今天看`简书`文章,习惯性的打开了开发者工具,于是发现了意见有意思的事,在console面板,发现了如下的日志: ??? 这 ... 有点意思. 如果上面的图片,不能引起你的兴趣,那么你可以再看看这个 ...

  3. 2021华为软件精英挑战赛(C/C++实现)-苦行僧的实现过程

    下面给出2021华为软件精英挑战赛参与的整个过程,虽然成绩不是很好,但是也是花了一些时间的,希望后面多多学习,多多进步. 代码已经上传到了Github上:https://github.com/myFr ...

  4. java面试一日一题:java线程池

    问题:请讲下java中的线程池 分析:在面试中经常问到线程池的问题,要掌握其基本概念,使用方法,注意事项等,引申下tomcat中默认的线程数是多少 回答要点: 主要从以下几点去考虑, 1.为什么要使用 ...

  5. SpringCloud LoadBalancer灰度策略实现

    如何使用 Spring Cloud 2020 中重磅推荐的负载均衡器 Spring Cloud LoadBalancer (下文简称 SCL),如何扩展负载均衡策略? 你将从本文中获取到答案 快速上手 ...

  6. 一般实现分布式锁都有哪些方式?使用redis如何设计分布式锁?使用zk来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?

    #(1)redis分布式锁 官方叫做RedLock算法,是redis官方支持的分布式锁算法. 这个分布式锁有3个重要的考量点,互斥(只能有一个客户端获取锁),不能死锁,容错(大部分redis节点创建了 ...

  7. C++运算符重载的一些困惑

    一.背景 在复习<C++基础与提高>时,自己实现运算符重载(i++)时,几次都报错.其实还是自己对运算符重载这一部分内容理解得不够透彻,于是再次看了下书上的内容,理解算是加深了一些,于是提 ...

  8. 06_pytorch的autograd操作

    06_pytorch的autograd操作 目录 一.引言 二.Variable 2.1 Variable 的数据结构 2.2 反向传播 2.3 autograd 求导数和手动求导数 三.计算图 3. ...

  9. kubernets-java 动态修改deployment 的replicas

    /** * Scale up/down the number of pod in Deployment * * @param deploymentName * @param numberOfRepli ...

  10. 记一次go中map并发引起的事故

    错误使用map引发的血案 前言 场景复原 原因 参考 错误使用map引发的血案 前言 最近业务中,同事使用map来接收返回的结果,使用waitGroup来并发的处理执行返回的结果,结果上线之后,直接崩 ...