免费开源的交互式 HTTPS 代理Mitmproxy 最常用指令(备忘查询)
zhezhongyun 2024-12-28 16:45 39 浏览
使用
-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
相关推荐
- 「layui」表单验证:验证注册
-
注册界面手动验证获取短信验证码代码原文<!DOCTYPEhtml><htmllang="zh"><head>&...
- Full text: Joint statement between China and Kenya on creating an inspiring example in the all-weather China-Africa community with a shared future for the new era
-
JointStatementBetweenthePeople'sRepublicofChinaandtheRepublicofKenyaonCreatinganInspi...
- 国际组织最新岗位信息送给你
-
国际刑警组织PostingTitleITLogisticsManagerGrade5DutyStationAbidjan,IvoryCoastDeadlineforApplicatio...
- 【新功能】Spire.PDF 8.12.5 支持设置表单域的可见与隐藏属性
-
Spire.PDF8.12.5已发布。该版本新增支持设置表单域的可见与隐藏属性、添加自定义的元数据以及给PDF文档的元数据添加新的命名空间。本次更新还增强了PDF到DOCX和图片的转换...
- AI curbs show Biden's rejection of cooperation
-
AIcurbsshowBiden'srejectionofcooperation:ChinaDailyeditorial-Opinion-Chinadaily.com.cnT...
- “煤气灯效应”上热搜,这几种有毒的“情感关系”也要注意了……
-
近日,“煤气灯效应”(theGaslightEffect)再次进入公众视野并登上热搜,引发网友广泛关注。那么,什么是“煤气灯效应”?以“爱”之名进行情绪控制在心理学中,通过“扭曲受害者眼中的真实”...
- Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门
-
一、前言在推流领域,尤其是监控行业,现在主流设备基本上都是265格式的视频流,想要在网页上直接显示监控流,之前的方案是,要么转成hls,要么魔改支持265格式的flv,要么265转成264,如果要追求...
- 写给运维的Nginx秘籍
-
要说Web服务器、代理服务器和调度服务器层面,目前使用最大的要数Nginx。对于一个运维工程师日常不可避免要和Nginx打交道。为了更好地使用和管理Nginx,本文就给大家介绍几个虫虫日常常用的秘籍。...
- 突破亚马逊壁垒,Web Unlocker API 助您轻松获取数据
-
在数据驱动决策的时代,电商平台的海量数据是十足金贵的。然而,像亚马逊这样的巨头为保护自身数据资产,构建了近乎完美的反爬虫防线,比如IP封锁、CAPTCHA验证、浏览器指纹识别,常规爬虫工具在这些防线面...
- 每日一库之 logrus 日志使用教程
-
golang日志库golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数对于更精细的日志级别、日志文件分割以及日志分发等方面并没有提供支持.所以催生了很多第三方...
- 对比测评:为什么AI编程工具需要 Rules 能力?
-
通义灵码ProjectRules在开始体验通义灵码ProjectRules之前,我们先来简单了解一下什么是通义灵码ProjectRules?大家都知道,在使用AI代码助手的时候,有时...
- python 面向对象编程
-
Python的面向对象编程(OOP)将数据和操作封装在对象中,以下是深度解析和现代最佳实践:一、核心概念重构1.类与实例的底层机制classRobot:__slots__=['...
- Windows系统下常用的Dos命令介绍(一)
-
DOS是英文DiskOperatingSystem的缩写,意思是“磁盘操作系统”。DOS主要是一种面向磁盘的系统软件,说得简单些,DOS就是人给机器下达命令的集合,是存储在操作系统中的命令集。主要...
- 使用 Flask-Admin 快速开发博客后台管理系统:关键要点解析
-
一、为什么选择Flask-Admin?Flask-Admin是Flask生态中高效的后台管理框架,核心优势在于:-零代码生成CRUD界面:基于数据库模型自动生成增删改查功能-高度可定制...
- Redis淘汰策略导致数据丢失?
-
想象一下,你的Redis服务器是一个合租宿舍,内存就是床位。当新数据(新室友)要住进来,但床位已满时,你作为宿管(淘汰策略)必须决定:让谁卷铺盖走人?Redis提供了8种"劝退"方案,...
- 一周热门
- 最近发表
-
- 「layui」表单验证:验证注册
- Full text: Joint statement between China and Kenya on creating an inspiring example in the all-weather China-Africa community with a shared future for the new era
- 国际组织最新岗位信息送给你
- 【新功能】Spire.PDF 8.12.5 支持设置表单域的可见与隐藏属性
- AI curbs show Biden's rejection of cooperation
- “煤气灯效应”上热搜,这几种有毒的“情感关系”也要注意了……
- Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门
- 写给运维的Nginx秘籍
- 突破亚马逊壁垒,Web Unlocker API 助您轻松获取数据
- 每日一库之 logrus 日志使用教程
- 标签列表
-
- HTML 教程 (33)
- HTML 简介 (35)
- HTML 实例/测验 (32)
- HTML 测验 (32)
- HTML 参考手册 (28)
- JavaScript 和 HTML DOM 参考手册 (32)
- HTML 拓展阅读 (30)
- HTML常用标签 (29)
- 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)