mitmproxy 获取请求响应数据
比较好的一个介绍是: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 获取请求响应数据的更多相关文章
- Python+requests 发送简单请求--》获取响应状态--》获取请求响应数据
Python+requests 发送简单请求-->获取响应状态-->获取请求响应数据 1.环境:安装了Python和vscode编译器(Python自带的编译器也ok).fiddler抓包 ...
- Fiddler-007-修改HTTP请求响应数据
前文简述了如何通过 Fiddler 修改 HTTP请求 的请求参数,详情请参阅:Fiddler-006-修改HTTP请求参数. 在进行 App 测试时,经常需要修改请求参数,以获得不同的显示效果,以查 ...
- SpringMVC_01 SpringMVC五大组件、SpringMVC编程步骤(不使用注解进行配置)、SpringMVC编程步骤(利用注解进行配置)、参数获取、响应数据
1 什么是SpringMVC 是一个mvc框架,用来简化基于mvc架构的web应用程序的 开发. 2 SpringMVC五大组件 DispatcherServlet (前端控制器) HanlderMa ...
- Java学习-055-Jsoup爬虫通过设置获取响应数据大小的最大值,解决因默认获取 1MB 响应数据导致的无法获取全部的响应数据内容问题
在日常工作中,通常会遇到获取各种网络数据使用的情况,Java中可使用Jsoup(Python中可使用 BeatifulSoup)进行数据的获取及处理. 今天有朋友问,在使用 Jsoup 进行请求数据时 ...
- ASP.NET Web API 记录请求响应数据到日志的一个方法
原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个 ...
- 入门servlet:request获取请求头数据
@WebServlet("/RequestDemo2") public class RequestDemo2 extends HttpServlet { protected voi ...
- 入门servlet:request获取请求行数据
/** * 演示Request对象获取请求行数据 */ @WebServlet("/test") public class RequestDemo1 extends HttpSer ...
- Jmeter正则提取请求响应数据
前言 在测试时,我们经常需处理请求返回的响应数据,比如很多时候 cookie 或 token 或 Authorization授权码 会返回在 Response headers(响应头)中,这时我们便需 ...
- 03-【request对象获取请求的数据 & request对象存取值】
request概述(封装了客户端所有的请求数据) request是Servlet.service()方法的一个参数,类型为javax.servlet.http.HttpServletRequest.在 ...
随机推荐
- 全网最详细的Linux命令系列-touch命令
linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件. 命令格式: touch [选项]... 文件... 命令参数: -a 或--tim ...
- MongoDB教程--配置与入门
MongoDB简介 阿里云配置MongoDB 数据库的增删查改 MongoDB 数据最重要的操作是Key-Value的映射.有了这样的映射,可以直接通过关键字去寻找想要的值.例如,通过用户的ID寻找与 ...
- [状压DP]关灯问题II
关 灯 问 题 I I 关灯问题II 关灯问题II 题目描述 现有n盏灯,以及 m m m个按钮.每个按钮可以同时控制这 n n n盏灯--按下了第 i i i个按钮,对于所有的灯都有一个效果.按下i ...
- [Fundamental of Power Electronics]-PART II-9. 控制器设计-9.1 引言
9.1 引言 在所有的开关变换器中,输出电压\(v(t)\)都是输入电压\(v_{g}(t)\),占空比\(d(t)\),负载电流\(i_{load}(t)\)和电路元件值的函数.在DC-DC变换器应 ...
- css — display
1.定义 display用于页面布局,设置元素如何被显示. 值:none | inline | block | inline-block | list-item | run-in | table | ...
- Web协议详解与抓包实战,高效解决网络难题
无论你是前后端工程师,还是运维测试,如果想面试更高的职位,或者要站在更高的角度去理解技术业务架构,并能在问题出现时快速.高效地解决问题,Web 协议一定是你绕不过去的一道坎. 旨在帮助你对各种常用 W ...
- Julia语言程序基础
Julia-lang 新兴的Julia语言,Julia 一开始就是为高性能而设计的. Julia 程序通过 LLVM 编译成高效的多平台机器码. Julia中文社区: https://cn.julia ...
- Vue3.0中引入地图(谷歌+高德+腾讯+百度)
1 概述 项目需求需要引入地图,对于目前最新的Vue3.0,无论是百度/高德/腾讯地图目前还没有适配,只有Vue 2.x版本的: 目前只有谷歌地图的Vue3.0适配: 但是没有适配并不代表不能使用,本 ...
- ElasticSearch-02-elasticsearch.yaml
# ======================== Elasticsearch Configuration ========================= # # NOTE: Elasticse ...
- day15.继承
1.什么是继承 继承是一种新建子类的方式,新建的类称之为子类/派生类,被继承的称之为父类/基类 子类会遗传父类的属性 2.为何要用继承 类是解决对象之间冗余问题的 ...