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.在 ...
随机推荐
- 复制粘贴Ctrl+C改为自定义单键
目录 那一瞬间不想用Ctrl+C了 (一)搜索渠道 关键词搜索 (二)方案对比 (三)最终方案Ditto 使用方法 (四)案例 1. 替换Ctrl+C快捷键: 2. 将英文小写替换为大写: 那一瞬间不 ...
- 力扣 - 92. 反转链表II
目录 题目 思路1(迭代) 代码 复杂度分析 思路2(递归) 代码 复杂度分析 题目 92. 反转链表 II 思路1(迭代) 将反转链表分成3个部分:前一段未反转的部分.待反转链表部分.后一段未反转部 ...
- PAT (Basic Level) Practice (中文)1054 求平均值 (20 分) 凌宸1642
PAT (Basic Level) Practice (中文)1054 求平均值 (20 分) 题目描述 本题的基本要求非常简单:给定 N 个实数,计算它们的平均值.但复杂的是有些输入数据可能是非法的 ...
- [Fundamental of Power Electronics]-PART II-7.交流等效电路建模-7.1 引言
7.1 引言 变换器系统总是需要反馈的.例如,在典型的DC-DC变换器应用中,无论输入电压\(V_{g}(t)\)和输出有效负载\(R\)如何变化,都必须使输出电压\(v(t)\)保持恒定.这是通过构 ...
- oo暑期课程总结
一.当时未能完成的作业 未能完成的作业是第四单元的作业. 未能完成的原因主要有以下两点:一是当时对于数据的整理没有好的设计和思路:二是临近期末,未能合理地分配时间导致作业未能完成 二.改进的部分 通过 ...
- [R可视化]ggplot2库介绍及其实例
前言 ggplot是一个拥有一套完备语法且容易上手的绘图系统,在Python和R中都能引入并使用,在数据分析可视化领域拥有极为广泛的应用.本篇从R的角度介绍如何使用ggplot2包,首先给几个我觉得最 ...
- Vue CLI 是如何实现的 -- 终端命令行工具篇
Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供了终端命令行工具.零配置脚手架.插件体系.图形化管理界面等.本文暂且只分析项目初始化部分,也就是终端命令行工具的实现. 0. 用法 ...
- 大学四年,总结一套适合小白的Java自学路线和方法
前言篇 大家好,我是bigsai 好久不见,甚是想念,文章同时收录在回车课堂(文底阅读原文可达). 无论你是大学生还是在职人员,想学Java时,都会面临两个选择,自学或者报班.报班通常太费钱,时间又不 ...
- 11. man page,info page
Linux系统中的命令可分为内部命令和外部命令.内部命令,又称为内建命令(builtin).怎么区分内部命令和外部命令了? 输入man bash命令,就可查看所有的内部命令. 如何查看命令使用方法 内 ...
- HUAWEI AppGallery Connect获得SOC国际权威认证,多举措保护信息和隐私安全
近日,华为应用市场AppGallery Connect(简称AGC)一次性成功通过国际权威标准组织"美国注册会计师协会(AICPA)"认定的SOC1 Type2.SOC2 Type ...