You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在mitmproxy代理中捕获查看SMTP等非HTTP类本机流量

mitmproxy捕获SMTP及其他非HTTP类型流量的配置方案

首先明确核心原理:mitmproxy默认运行模式为显式HTTP代理,只会识别、解析HTTP/HTTPS协议流量,遇到非HTTP的TCP/UDP连接会默认静默透传、不记录不展示,因此要实现全流量捕获,需要调整运行模式、开启非HTTP流量的记录规则。

具体配置步骤

  • 切换到全流量接管的运行模式
    放弃默认的纯HTTP显式代理模式,启动时指定透明代理或本地接管模式:
    • Linux/macOS环境下执行 mitmproxy --mode transparent
    • Windows环境下执行 mitmproxy --mode local
      该模式下mitmproxy会直接对接管到的所有TCP连接做拦截,不会因为协议不符合HTTP规范直接丢弃连接记录。
  • 开启非HTTP流量的记录匹配规则
    默认情况下即使模式切换,非HTTP流量仍不会在界面展示,需要通过tcp-host参数指定需要捕获、记录的流量范围:
    • 仅捕获SMTP类流量:SMTP默认对应25(明文)、465(SMTPS)、587(邮件提交)端口,启动时追加参数 --tcp-host ".*:25" --tcp-host ".*:465" --tcp-host ".*:587",匹配后mitmproxy会完整记录对应连接的所有收发原始字节,可在交互界面直接查看SMTP握手、邮件传输的明文内容。
    • 捕获所有类型的非HTTP TCP流量:直接追加参数 --tcp-host ".*",所有流经的TCP连接都会被记录展示,不再做协议类型过滤。
  • 解密加密的非HTTP协议流量
    对带TLS加密的非HTTP协议(如SMTPS、FTPS),需要在匹配规则后追加tls标记,让mitmproxy对匹配的连接自动执行证书伪造、TLS解密流程,例如捕获解密465端口的SMTPS流量时,规则写为 --tcp-host ":465@tls",只要客户端提前信任了mitmproxy生成的根CA证书,就能在界面看到解密后的明文SMTP交互内容。
  • 捕获UDP类型的非HTTP流量
    mitmproxy v9及以上版本支持UDP流量捕获,启动时通过--udp-host参数指定需要捕获的UDP端口/主机规则即可,例如捕获53端口的DNS流量时,追加参数 --udp-host ".*:53"。

实操注意事项

  • --tcp-host/--udp-host参数的核心作用是把对应流量从“静默透传不记录”的默认状态,切换为“完整记录、可在界面查看内容”的状态,并非仅做流量转发。
  • 如果仅需要捕获本机发出的流量,不需要配置网关级的流量重定向,通过本机防火墙把出站TCP/UDP连接导向mitmproxy监听的默认8080端口即可。
  • 捕获非HTTP流量时不需要保证和远端服务的连通性,只要流量经过mitmproxy拦截,就能在本地看到完整的客户端发送的原始报文内容。

内容的提问来源于stack exchange,提问作者vegabond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 17:15:03