免费开源的交互式 HTTPS 代理Mitmproxy 最常用指令(备忘查询)
zhezhongyun 2024-12-28 16:45 99 浏览
使用
-p | mitmproxy -p 8001 | 在端口 8001 上启动代理 |
-m | mitmproxy -p 8001 -m reverse:http://127.0.0.1:4000 | 8001 端口反向代理到4000端口 |
-w | mitmproxy -p 8001 -w traffic.mitm | 流到达时流向文件 |
-r | mitmproxy -r traffic.mitm | 从文件中读取流 |
-C | mitmproxy -C traffic.mitm | 从保存的文件重放客户端请求 |
-S | mitmproxy -S traffic.mitm | 从保存的文件重放服务器响应 |
-s | mitmproxy -s myScript.py | 执行脚本 |
-h | mitmproxy -h | mitmproxy 快速帮助 |
移动
k Ctrl b
▲ ▲▲
│ ││
h ? ─── + ─── ? l ││ page
│ ││
▼ ▼▼
j Ctrl f / Space
h, j, k ,l | 左、下、上、右 |
Ctrl b | 向上翻页 |
Space / Ctrl f | 向下翻页 |
g / G | 转到开头/结尾 |
Arrows | 上下左右 |
安装
- mitmproxy 文档 (mitmproxy.org)
- mitmproxy 开源仓库 (github.com)
$ brew install mitmproxy # macOS
代理模式
-R REVERSE_PROXY, --reverse REVERSE_PROXY | 将所有请求转发到上游 HTTP 服务器:http[s]://host[:port]。客户端始终可以通过 HTTPS 和 HTTP 进行连接,与服务器的连接由指定的方案决定 |
--socks | 设置 SOCKS5 代理模式 |
-T, --transparent | 设置透明代理模式 |
-U UPSTREAM_PROXY, --upstream UPSTREAM_PROXY | 将所有请求转发到上游代理服务器:http://host[:port] |
流(视图)
A | 恢复所有拦截的流 |
D | 重复流 |
F | 设置焦点跟随 |
L | 从文件加载流 |
M | 切换查看标记流 |
S | 开始服务器回放 |
U | 取消设置所有标记 |
V | 还原对此流的更改 |
X | 杀死这个流 |
Z | 清除所有未显示的流 |
a | 恢复此拦截流 |
b | 将响应主体保存到文件 |
d | 从视图中删除流 |
e | 将此流导出到文件 |
f | 设置视图过滤器 |
m | 在此流程上切换标记 |
n | 创建新流程 |
o | 设置流列表顺序 |
r | 重播此流程 |
v | 反向流列表顺序 |
w | 将列出的流程保存到文件 |
| | 在此流上运行脚本 |
Ctrl l | 将剪辑发送到剪贴板 |
常见的快捷键
q | 返回/退出 |
z | 清除流列表 |
: | 命令提示符 |
E | 查看事件日志 |
O | 查看选项 |
r | 重播此流程 |
Tab | 下一个 |
Enter | 选择 |
全局键绑定
- | 循环到下一个布局 |
? | 查看帮助 |
B | 启动附加的浏览器 |
C | 查看命令 |
I | 切换拦截 |
K | 查看按键绑定 |
P | 查看流程详细信息 |
Q | 立即退出 |
W | 流式传输到文件 |
i | 设置拦截 |
Ctrl right | 聚焦下一个布局窗格 |
Shift tab | 聚焦下一个布局窗格 |
代理选项
-b ADDR, --bind-address ADDR | 将代理绑定到的地址(默认为所有接口) |
-I HOST, --ignore HOST | 忽略主机并转发所有流量而不对其进行处理。在透明模式下,建议使用 IP 地址(范围),而不是主机名。在常规模式下,仅忽略 SSL 流量并应使用主机名。提供的值被解释为正则表达式并匹配 ip 或主机名。可以多次通过 |
--tcp HOST | 与模式匹配的所有主机的通用 TCP SSL 代理模式。类似于 --ignore,但 SSL 连接被拦截。通信内容以详细模式打印到日志中 |
-n, --no-server | 不要启动代理服务器。用于离线分析以前捕获的流 |
-p PORT, --port PORT | 代理服务端口。默认值:8080 |
--http2, --no-http2 | 显式启用/禁用 HTTP/2 支持。默认情况下禁用,直到主要网站正确实施规范。默认值将在未来版本中更改 |
--no-websocket, --websocket | 显式启用/禁用 WebSocket 支持。默认启用 |
--raw-tcp, --no-raw-tcp | 显式启用/禁用实验性原始 TCP 支持。默认情况下禁用。默认值将在未来版本中更改 |
--spoof-source-address | 使用客户端的 IP 进行服务器端连接。与 –upstream-bind-address 结合使用以欺骗固定源地址 |
--upstream-bind-address UPSTREAM_BIND_ADDRESS | 将上游请求绑定到的地址(默认为无) |
Mitmproxy 过滤器
过滤器
f | 设置视图过滤器 (在流视图页面上) |
- RegEX 备忘清单 (jaywcjlove.github.io)
正则表达式是 Python 风格的,可以指定为带引号的字符串
运算符
! | 一元非 |
& | 和 |
| | 或者 |
(...) | 分组 |
表达式
~a | 响应匹配资源:CSS、Javascript、Flash、图像。 |
~b regex | 主体 Body |
~bq regex | 请求正文 |
~bs regex | 响应体 |
~c int | HTTP 响应代码 |
~d regex | 域 |
~dst regex | 匹配目标地址 |
~e | 匹配错误 |
~h regex | 标头 |
~hq regex | 请求头 |
~hs regex | 响应头 |
~http | 匹配 HTTP 流 |
~m regex | 方法 |
~marked | 匹配标记流 |
~q | 匹配请求无响应 |
~s | 匹配响应 |
~src regex | 匹配源地址 |
~t regex | 内容类型标头 |
~tcp | 匹配 TCP 流 |
~tq regex | 请求 Content-Type 标头 |
~ts regex | 响应内容类型标头 |
~u regex | 网址 |
~websocket | 匹配 WebSocket 流(和 HTTP-WebSocket 握手流) |
流选择器
表达式
@all | 所有流程 |
@focus | 目前关注的流程 |
@shown | 当前显示的所有流程 |
@hidden | 当前隐藏的所有流程 |
@marked | 所有标记流 |
@unmarked | 所有未标记的流 |
mitmproxy 有一组方便的流选择器,可以在当前视图上操作
示例
包含“google.com”的网址
google\.com
正文中包含字符串“test”的请求
~q ~b test
除了带有 text/html 内容类型的请求之外的任何内容:
!(~q & ~t "text/html")
替换请求中的整个 GET 字符串(需要引号才能使其工作):
":~q ~m GET:.*:/replacement.html"
Mitmproxy 脚本
Custom response
from mitmproxy import http
def request(flow: http.HTTPFlow) -> None:
if flow.request.pretty_url == "http://example.com/path":
flow.response = http.HTTPResponse.make(
200, # (optional) status code
b"Hello World", # (optional) content
{"Content-Type": "text/html"} # (optional) headers
)
从代理发送回复而不向远程服务器发送任何数据
Add header
class AddHeader:
def __init__(self):
self.num = 0
def response(self, flow):
self.num = self.num + 1
flow.response.headers["count"] = str(self.num)
addons = [
AddHeader()
]
为每个响应添加一个 HTTP 标头
mitmproxy 文档 mitmproxy.org
相关推荐
- Go语言标准库中5个被低估的强大package
-
在Go语言的世界里,开发者们往往对fmt、net/http这些“明星包”耳熟能详,却忽略了标准库里藏着的一批“宝藏工具”。它们功能强大却低调内敛,能解决并发控制、内存优化、日志管理等核心问题。今天就带...
- 作为测试人,如何优雅地查看Log日志?
-
作为一名测试工程师,测试工作中和Linux打交道的地方有很多。比如查看日志、定位Bug、修改文件、部署环境等。项目部署在Linux上,如果某个功能发生错误,就需要我们去排查出错的原因,所以熟练地掌握查...
- Java 从底层与接口实现了解String、StringBuffer、StringBuilder
-
String、StringBuffer和StringBuilder的接口实现关系:String:字符串常量,字符串长度不可变。Java中String是immutable(不可变)的。用于存放字符...
- FluentData 从入门到精通:C#.NET 数据访问最佳实践
-
简介FluentData是一个微型ORM(micro-ORM),主打「FluentAPI」风格,让开发者在保持对原生SQL完全控制的同时,享受链式调用的便捷性。它与Dapper、Massi...
- 团队协作-代码格式化工具clang-format
-
环境:clang-format:10.0.0前言统一的代码规范对于整个团队来说十分重要,通过git/svn在提交前进行统一的ClangFormat格式化,可以有效避免由于人工操作带来的代码格式问题。C...
- C# 数据操作系列 - 15 SqlSugar 增删改查详解(超长篇)
-
0.前言继上一篇,以及上上篇,我们对SqlSugar有了一个大概的认识,但是这并不完美,因为那些都是理论知识,无法描述我们工程开发中实际情况。而这一篇,将带领小伙伴们一起试着写一个能在工程中使用的模...
- Mac OS 下 Unix 使用最多的100条命令(收藏级)
-
MacOS内置基于Unix的强大终端(Terminal),对开发者、运维工程师和日常用户来说,掌握常用的Unix命令是提升效率的关键。本文整理了100条在MacOS下最常用的U...
- C语言字符串操作总结大全(超详细)
-
C语言字符串操作总结大全(超详细)1)字符串操作strcpy(p,p1)复制字符串strncpy(p,p1,n)复制指定长度字符串strcat(p,p1)附加字符串strncat...
- 经常使用到开源的MySQL,今天我们就来系统地认识一下
-
作为程序员,我们在项目中会使用到许多种类的数据库,根据业务类型、并发量和数据要求等选择不同类型的数据库,比如MySQL、Oracle、SQLServer、SQLite、MongoDB和Redis等。今...
- 电脑蓝屏代码大全_电脑蓝屏代码大全及解决方案
-
0X0000000操作完成0X0000001不正确的函数0X0000002系统找不到指定的文件0X0000003系统找不到指定的路径0X0000004系统无法打开文件0X0000005拒绝...
- 8个增强PHP程序安全的函数_php性能优化及安全策略
-
安全是编程非常重要的一个方面。在任何一种编程语言中,都提供了许多的函数或者模块来确保程序的安全性。在现代网站应用中,经常要获取来自世界各地用户的输入,但是,我们都知道“永远不能相信那些用户输入的数据”...
- css优化都有哪些优化方案_css性能优化技巧
-
CSS优化其实可以分成几个层面:性能优化、可维护性优化、兼容性优化以及用户体验优化。这里我帮你梳理一份比较系统的CSS优化方案清单,方便你参考:一、加载性能优化减少CSS文件体积压缩CSS...
- 筹划20年,他终于拍成了这部电影_筹划20年,他终于拍成了这部电影英语
-
如果提名好莱坞最难搞影星,你第一时间会联想到谁?是坏脾气的西恩·潘,还是曾因吸毒锒铛入狱的小罗伯特·唐尼,亦或是沉迷酒精影响工作的罗素·克劳?上述大咖,往往都有着这样或那样的瑕疵。可即便如此,却都仍旧...
- Keycloak Servlet Filter Adapter使用
-
KeycloakClientAdapters简介Keycloakclientadaptersarelibrariesthatmakeitveryeasytosecurea...
- 一些常用的linux常用的命令_linux常用命令有哪些?
-
在Linux的世界里,命令是与系统交互的基础。掌握常用命令不仅能让你高效地管理文件、进程和网络,还能为你进一步学习系统管理和自动化打下坚实的基础。本文将深入探讨一些最常用且功能强大的Linux...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML文本框样式 (31)
- HTML滚动条样式 (34)
- HTML5 浏览器支持 (33)
- HTML5 新元素 (33)
- HTML5 WebSocket (30)
- HTML5 代码规范 (32)
- HTML5 标签 (717)
- HTML5 标签 (已废弃) (75)
- HTML5电子书 (32)
- HTML5开发工具 (34)
- HTML5小游戏源码 (34)
- HTML5模板下载 (30)
- HTTP 状态消息 (33)
- HTTP 方法:GET 对比 POST (33)
- 键盘快捷键 (35)
- 标签 (226)
- HTML button formtarget 属性 (30)
- opacity 属性 (32)
- transition 属性 (33)