To add custom functionality, implement the Addon interface. You can hook into various lifecycle events such as client connections, HTTP request/response headers, full request/response bodies, and WebSocket/SSE events.
Key event hooks include:
ClientConnected(*ClientConn) / ClientDisconnected(*ClientConn)Requestheaders(*Flow) / Responseheaders(*Flow)Request(*Flow) / Response(*Flow)StreamRequestModifier(*Flow, io.Reader) io.Reader (for streaming request body modification)StreamResponseModifier(*Flow, io.Reader) io.Reader (for streaming response body modification)WebSocketStart(*Flow) / WebSocketMessage(*Flow) / WebSocketEnd(*Flow)SSEStart(*Flow) / SSEMessage(*Flow) / SSEEnd(*Flow)RequestError(*Flow, error) / HTTPConnectError(*Flow, error)
type Addon interface {
// 一个客户端已经连接到了mitmproxy。请注意,一个连接可能对应多个HTTP请求。
ClientConnected(*ClientConn)
// 一个客户端连接已关闭(由我们或客户端关闭)。
ClientDisconnected(*ClientConn)
// mitmproxy 已连接到服务器。
ServerConnected(*ConnContext)
// 服务器连接已关闭(由我们或客户端关闭)。
ServerDisconnected(*ConnContext)
// 与服务器的TLS握手已成功完成。
TlsEstablishedServer(*ConnContext)
// HTTP请求头已成功读取。此时,请求体为空。
Requestheaders(*Flow)
// 完整的HTTP请求已被读取。
Request(*Flow)
// HTTP响应头已成功读取。此时,响应体为空。
Responseheaders(*Flow)
// 完整的HTTP响应已被读取。
Response(*Flow)
// 流式请求体修改器
StreamRequestModifier(*Flow, io.Reader) io.Reader
// 流式响应体修改器
StreamResponseModifier(*Flow, io.Reader) io.Reader
// WebSocket 连接建立
WebSocketStart(*Flow)
// WebSocket 消息接收
WebSocketMessage(*Flow)
// WebSocket 连接关闭
WebSocketEnd(*Flow)
// SSE 连接建立
SSEStart(*Flow)
// SSE 消息接收
SSEMessage(*Flow)
// SSE 连接关闭
SSEEnd(*Flow)
// HTTP 请求失败
RequestError(*Flow, error)
// HTTP CONNECT 请求失败
HTTPConnectError(*Flow, error)
}