Documentation ¶
Overview ¶
Package proxy implements the MitM Proxy (Forward Proxy).
Index ¶
- type Addon
- type BaseAddon
- func (addon *BaseAddon) ClientConnected(*ClientConn)
- func (addon *BaseAddon) ClientDisconnected(*ClientConn)
- func (addon *BaseAddon) Request(*Flow)
- func (addon *BaseAddon) Requestheaders(*Flow)
- func (addon *BaseAddon) Response(*Flow)
- func (addon *BaseAddon) Responseheaders(*Flow)
- func (addon *BaseAddon) ServerConnected(*ConnContext)
- func (addon *BaseAddon) ServerDisconnected(*ConnContext)
- func (addon *BaseAddon) StreamRequestModifier(f *Flow, in io.Reader) io.Reader
- func (addon *BaseAddon) StreamResponseModifier(f *Flow, in io.Reader) io.Reader
- func (addon *BaseAddon) TlsEstablishedServer(*ConnContext)
- type ClientConn
- type ConnContext
- type Flow
- type Options
- type Proxy
- type Request
- type Response
- type ServerConn
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Addon ¶
type Addon interface { // A client has connected to mitmproxy. Note that a connection can correspond to multiple HTTP requests. ClientConnected(*ClientConn) // A client connection has been closed (either by us or the client). ClientDisconnected(*ClientConn) // Mitmproxy has connected to a server. ServerConnected(*ConnContext) // A server connection has been closed (either by us or the server). ServerDisconnected(*ConnContext) // The TLS handshake with the server has been completed successfully. TlsEstablishedServer(*ConnContext) // HTTP request headers were successfully read. At this point, the body is empty. Requestheaders(*Flow) // The full HTTP request has been read. Request(*Flow) // HTTP response headers were successfully read. At this point, the body is empty. Responseheaders(*Flow) // The full HTTP response has been read. Response(*Flow) // Stream request body modifier StreamRequestModifier(*Flow, io.Reader) io.Reader // Stream response body modifier StreamResponseModifier(*Flow, io.Reader) io.Reader }
type BaseAddon ¶
type BaseAddon struct{}
BaseAddon do nothing
func (*BaseAddon) ClientConnected ¶
func (addon *BaseAddon) ClientConnected(*ClientConn)
func (*BaseAddon) ClientDisconnected ¶
func (addon *BaseAddon) ClientDisconnected(*ClientConn)
func (*BaseAddon) Requestheaders ¶
func (*BaseAddon) Responseheaders ¶
func (*BaseAddon) ServerConnected ¶
func (addon *BaseAddon) ServerConnected(*ConnContext)
func (*BaseAddon) ServerDisconnected ¶
func (addon *BaseAddon) ServerDisconnected(*ConnContext)
func (*BaseAddon) StreamRequestModifier ¶
func (*BaseAddon) StreamResponseModifier ¶
func (*BaseAddon) TlsEstablishedServer ¶
func (addon *BaseAddon) TlsEstablishedServer(*ConnContext)
type ClientConn ¶
type ClientConn struct { ID uuid.UUID `json:"id"` Conn *wrapClientConn `json:"-"` TLS bool `json:"tls"` }
client connection
func (*ClientConn) MarshalJSON ¶
func (c *ClientConn) MarshalJSON() ([]byte, error)
type ConnContext ¶
type ConnContext struct { ClientConn *ClientConn `json:"clientConn"` ServerConn *ServerConn `json:"serverConn"` // contains filtered or unexported fields }
connection context
func (*ConnContext) ID ¶
func (connCtx *ConnContext) ID() uuid.UUID
type Flow ¶
type Flow struct { Id uuid.UUID ConnContext *ConnContext Request *Request Response *Response // https://docs.mitmproxy.org/stable/overview-features/#streaming // 如果为 true,则不缓冲 Request.Body 和 Response.Body,且不进入之后的 Addon.Request 和 Addon.Response Stream bool // contains filtered or unexported fields }
flow
func (*Flow) MarshalJSON ¶
type Proxy ¶
type Request ¶
type Request struct { Method string `json:"method"` URL *url.URL `json:"url"` Proto string `json:"proto"` Header http.Header `json:"header"` Body []byte `json:"-"` // contains filtered or unexported fields }
flow http request
func (*Request) MarshalJSON ¶
func (*Request) UnmarshalJSON ¶
func (*Request) WithAttribute ¶
type Response ¶
type Response struct { StatusCode int `json:"statusCode"` Header http.Header `json:"header"` Body []byte `json:"-"` BodyReader io.Reader // contains filtered or unexported fields }
flow http response
func (*Response) DecodedBody ¶
func (*Response) IsTextContentType ¶
func (*Response) ReplaceToDecodedBody ¶
func (r *Response) ReplaceToDecodedBody()
type ServerConn ¶
type ServerConn struct { ID uuid.UUID `json:"id"` Address string `json:"address"` Conn net.Conn `json:"-"` // contains filtered or unexported fields }
server connection
func (*ServerConn) MarshalJSON ¶
func (c *ServerConn) MarshalJSON() ([]byte, error)
func (*ServerConn) TLSState ¶
func (c *ServerConn) TLSState() *tls.ConnectionState
Click to show internal directories.
Click to hide internal directories.