mitmproxy

摘要:
此时,流中请求的主体为空。Defresponseheaders:#服务器端的HTTP响应已成功并完全读取。例如无效的服务器响应、断开连接等。请注意,它与“有效的HTTP错误返回”不同。后者是一个正确的服务器响应,但只是一个指示错误的HTTP代码。


##################################

mitmproxy
参考文档:
https://www.cnblogs.com/grandlulu/p/9525417.html
简介:
pip3 install mitmproxy
mitmdump --version
mitmproxy、mitmdump、mitmweb
mitmdump -s addons.py

"C:Program Files (x86)GoogleChromeApplicationchrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors
"G:Program FilesMozilla Firefoxfirefox.exe" --proxy-server=127.0.0.1:8081 --ignore-certificate-errors

事件:***http生命周期
addons文件

---------------------------------------

mitmproxy功能:
正向代理,截获请求
安装:
pip3 install mitmproxy
# 查看是否安装成功
mitmdump --version
运行:
# mitmproxy 命令不支持在 windows 系统中运行
mitmproxy、mitmdump、mitmweb
mitmproxy 提供一个实时命令行界面
mitmweb 命令启动后,会提供一个 web 界面
mitmdump 命令启动后,没有界面,程序默默运行,结合自定义脚本(实际生产中基本使用这个)

mitmweb 启动 mitmproxy
mitmproxy 绑定了 *:8080 作为代理端口,并提供了一个 web 交互界面在 127.0.0.1:8081。
使用 Edge 或其他浏览器打开 127.0.0.1:8081
关闭所有 Chrome 窗口
"C:Program Files (x86)GoogleChromeApplicationchrome.exe" --proxy-server=127.0.0.1:8080 --ignore-certificate-errors
"G:Program FilesMozilla Firefoxfirefox.exe" --proxy-server=127.0.0.1:8081 --ignore-certificate-errors
用 Chrome 打开一个网站(模拟client行为)
Edge上查看(查看proxy拦截的请求)

脚本:
编写一个 py 文件供 mitmproxy 加载
1.文件中定义了若干函数,这些函数实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的函数
import mitmproxy.http
from mitmproxy import ctx
num = 0
def request(flow: mitmproxy.http.HTTPFlow):
global num
num = num + 1
ctx.log.info("We've seen %d flows" % num)
2.文件定义了变量 addons,addons 是个数组,每个元素是一个类实例,
这些类有若干方法,这些方法实现了某些 mitmproxy 提供的事件,mitmproxy 会在某个事件发生时调用对应的方法
import mitmproxy.http
from mitmproxy import ctx
class Counter:
def __init__(self):
self.num = 0
def request(self, flow: mitmproxy.http.HTTPFlow):
self.num = self.num + 1
ctx.log.info("We've seen %d flows" % self.num)
addons = [
Counter()
]
事件:
1. 针对 HTTP 生命周期
# 收到了来自客户端的 HTTP CONNECT 请求,仅是 client 与 proxy 的之间的交流
def http_connect(self, flow: mitmproxy.http.HTTPFlow):
# 来自客户端的 HTTP 请求的头部被成功读取。此时 flow 中的 request 的 body 是空的。
def requestheaders(self, flow: mitmproxy.http.HTTPFlow):
# 来自客户端的 HTTP 请求被成功完整读取。
def request(self, flow: mitmproxy.http.HTTPFlow):
# 来自服务端的 HTTP 响应的头部被成功读取。此时 flow 中的 response 的 body 是空的。
def responseheaders(self, flow: mitmproxy.http.HTTPFlow):
# 来自服务端端的 HTTP 响应被成功完整读取。
def response(self, flow: mitmproxy.http.HTTPFlow):
# 发生了一个 HTTP 错误。比如无效的服务端响应、连接断开等。注意与“有效的 HTTP 错误返回”不是一回事,后者是一个正确的服务端响应,只是 HTTP code 表示错误而已。
def error(self, flow: mitmproxy.http.HTTPFlow):
2. 针对 TCP 生命周期
3. 针对 Websocket 生命周期
4. 针对网络连接生命周期
5. 通用生命周期

启动:
mitmdump -s addons.py

##################################

免责声明:文章转载自《mitmproxy》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇win32 htmlayout点击按钮创建新窗口,以及按钮图片样式本地调试解决跨域类下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

fs学习笔记之输出格式

接触fs那么久,有必要再记录一下。 上一篇介绍了fs拓扑描写叙述文件dot的格式,今天要介绍fs输出文件的格式。 举个样例,下面是d节点输出文件的一行记录,也就是一条流经过d的记录。 textexport d 1.035154 1.035154 1.175314 10.1.1.2:1001->10.5.0.1:2001 tcp 0x0 b:172....

网络流(二)最大流的增广路算法

传送门:网络流(一)基础知识篇网络流(二)最大流的增广路算法网络流(三)最大流最小割定理网络流(四)dinic算法网络流(五)有上下限的最大流网络流(六)最小费用最大流问题转载:https://www.cnblogs.com/ZJUT-jiangnan/p/3632525.html 网络流的相关定义: 源点:有n个点,有m条有向边,有一个点很特殊,只出...

Java 9 揭秘(17. Reactive Streams)

Tips做一个终身学习的人。 在本章中,主要介绍以下内容: 什么是流(stream) 响应式流(Reactive Streams)的倡议是什么,以及规范和Java API 响应式流在JDK 中的API以及如何使用它们 如何使用JDK 9中的响应式流的Java API来创建发布者,订阅者和处理者 一. 什么是流 流是由生产者生产并由一个或多个消费者消费...

git flow常用命令

https://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html https://blog.csdn.net/shu580231/article/details/76240611 https://blog.csdn.net/zpcqdkf/article/details/82621893...

python-Mitmproxy抓包

一、使用 安装pip install mitmproxymitmproxy 是具有控制台界面的交互式,支持SSL的拦截代理mitmdump是mitmproxy的命令行版本。想想tcpdump为HTTPmitmweb 是一个基于web的界面,适用于mitmproxymitmproxy(mac)、mitmdump、mitmweb(win) 这三个命令中的任意一...

POJ 3281 Dining (网络流之最大流)

题意:农夫为他的 N (1 ≤ N ≤ 100) 牛准备了 F (1 ≤ F ≤ 100)种食物和 D (1 ≤ D ≤ 100) 种饮料。每头牛都有各自喜欢的食物和饮料, 而每种食物或饮料只能分配给一头牛。最多能有多少头牛可以同时得到喜欢的食物和饮料? 析:是一个经典网络流的题,建立一个超级源点,连向每种食物,建立一个超级汇点,连向每种饮料,然后把每头牛...