免费开源的交互式 HTTPS 代理Mitmproxy 最常用指令(备忘查询)


使用-pmitmproxy -p 8001在端口 8001 上启动代理-mmitmproxy -p 8001 -m reverse:http://127.0.0.1:40008001 端口反向代理到4000端口-wmitmproxy -p 8001 -w traffic.mitm流到达时流向文件-rmitmproxy -r traffic.mitm从文件中读取流-Cmitmproxy -C traffic.mitm从保存的文件重放客户端请求-Smitmproxy -S traffic.mitm从保存的文件重放服务器响应-smitmproxy -s myScript.py执行脚本-hmitmproxy -hmitmproxy 快速帮助移动 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 intHTTP 响应代码~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 responsefrom 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 headerclass 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

未经允许不得转载:选主机测评网 » 免费开源的交互式 HTTPS 代理Mitmproxy 最常用指令(备忘查询)