Documentation
¶
Index ¶
- type Addon
- type BaseAddon
- func (addon *BaseAddon) AccessProxyServer(req *http.Request, res http.ResponseWriter)
- 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 LogAddon
- type Options
- type Proxy
- func (proxy *Proxy) AddAddon(addon Addon)
- func (proxy *Proxy) Close() error
- func (proxy *Proxy) GetCertificate() x509.Certificate
- func (proxy *Proxy) GetCertificateByCN(commonName string) (*tls.Certificate, error)
- func (proxy *Proxy) SetShouldInterceptRule(rule func(req *http.Request) bool)
- func (proxy *Proxy) SetUpstreamProxy(fn func(req *http.Request) (*url.URL, error))
- func (proxy *Proxy) Shutdown(ctx context.Context) error
- func (proxy *Proxy) Start() error
- type Request
- type Response
- type ServerConn
- type UpstreamCertAddon
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Addon ¶ added in v1.0.0
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 // onAccessProxyServer AccessProxyServer(req *http.Request, res http.ResponseWriter) }
type BaseAddon ¶ added in v1.0.0
type BaseAddon struct{}
BaseAddon do nothing
func (*BaseAddon) AccessProxyServer ¶ added in v1.6.2
func (addon *BaseAddon) AccessProxyServer(req *http.Request, res http.ResponseWriter)
func (*BaseAddon) ClientConnected ¶ added in v1.0.0
func (addon *BaseAddon) ClientConnected(*ClientConn)
func (*BaseAddon) ClientDisconnected ¶ added in v1.0.0
func (addon *BaseAddon) ClientDisconnected(*ClientConn)
func (*BaseAddon) Requestheaders ¶ added in v1.0.0
func (*BaseAddon) Responseheaders ¶ added in v1.0.0
func (*BaseAddon) ServerConnected ¶ added in v1.0.0
func (addon *BaseAddon) ServerConnected(*ConnContext)
func (*BaseAddon) ServerDisconnected ¶ added in v1.0.0
func (addon *BaseAddon) ServerDisconnected(*ConnContext)
func (*BaseAddon) StreamRequestModifier ¶ added in v1.1.0
func (*BaseAddon) StreamResponseModifier ¶ added in v1.1.0
func (*BaseAddon) TlsEstablishedServer ¶ added in v1.0.0
func (addon *BaseAddon) TlsEstablishedServer(*ConnContext)
type ClientConn ¶ added in v1.0.0
type ClientConn struct { Id uuid.UUID Conn net.Conn Tls bool NegotiatedProtocol string UpstreamCert bool // Connect to upstream server to look up certificate details. Default: True // contains filtered or unexported fields }
client connection
func (*ClientConn) MarshalJSON ¶ added in v1.0.0
func (c *ClientConn) MarshalJSON() ([]byte, error)
type ConnContext ¶ added in v1.0.0
type ConnContext struct { ClientConn *ClientConn `json:"clientConn"` ServerConn *ServerConn `json:"serverConn"` Intercept bool `json:"intercept"` // Indicates whether to parse HTTPS FlowCount atomic.Uint32 `json:"-"` // Number of HTTP requests made on the same connection // contains filtered or unexported fields }
connection context
func (*ConnContext) Id ¶ added in v1.0.0
func (connCtx *ConnContext) Id() uuid.UUID
type Flow ¶ added in v1.0.0
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 UseSeparateClient bool // use separate http client to send http request // contains filtered or unexported fields }
flow
func (*Flow) MarshalJSON ¶ added in v1.0.0
type LogAddon ¶ added in v1.0.0
type LogAddon struct {
BaseAddon
}
LogAddon log connection and flow
func (*LogAddon) ClientConnected ¶ added in v1.0.0
func (addon *LogAddon) ClientConnected(client *ClientConn)
func (*LogAddon) ClientDisconnected ¶ added in v1.0.0
func (addon *LogAddon) ClientDisconnected(client *ClientConn)
func (*LogAddon) Requestheaders ¶ added in v1.0.0
func (*LogAddon) ServerConnected ¶ added in v1.0.0
func (addon *LogAddon) ServerConnected(connCtx *ConnContext)
func (*LogAddon) ServerDisconnected ¶ added in v1.0.0
func (addon *LogAddon) ServerDisconnected(connCtx *ConnContext)
type Proxy ¶
type Proxy struct { Opts *Options Version string Addons []Addon // contains filtered or unexported fields }
func (*Proxy) GetCertificate ¶ added in v1.3.4
func (proxy *Proxy) GetCertificate() x509.Certificate
func (*Proxy) GetCertificateByCN ¶ added in v1.8.2
func (proxy *Proxy) GetCertificateByCN(commonName string) (*tls.Certificate, error)
func (*Proxy) SetShouldInterceptRule ¶ added in v1.3.4
func (*Proxy) SetUpstreamProxy ¶ added in v1.7.0
type Request ¶ added in v1.0.0
type Request struct { Method string URL *url.URL Proto string Header http.Header Body []byte // contains filtered or unexported fields }
flow http request
func (*Request) MarshalJSON ¶ added in v1.0.0
func (*Request) UnmarshalJSON ¶ added in v1.0.0
type Response ¶ added in v1.0.0
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 ¶ added in v1.0.0
func (*Response) IsTextContentType ¶ added in v1.0.0
func (*Response) ReplaceToDecodedBody ¶ added in v1.0.0
func (r *Response) ReplaceToDecodedBody()
type ServerConn ¶ added in v1.0.0
type ServerConn struct { Id uuid.UUID Address string Conn net.Conn // contains filtered or unexported fields }
server connection
func (*ServerConn) MarshalJSON ¶ added in v1.0.0
func (c *ServerConn) MarshalJSON() ([]byte, error)
func (*ServerConn) TlsState ¶ added in v1.0.0
func (c *ServerConn) TlsState() *tls.ConnectionState
type UpstreamCertAddon ¶ added in v1.8.0
type UpstreamCertAddon struct { BaseAddon UpstreamCert bool // Connect to upstream server to look up certificate details. }
func NewUpstreamCertAddon ¶ added in v1.8.0
func NewUpstreamCertAddon(upstreamCert bool) *UpstreamCertAddon
func (*UpstreamCertAddon) ClientConnected ¶ added in v1.8.0
func (addon *UpstreamCertAddon) ClientConnected(conn *ClientConn)
Click to show internal directories.
Click to hide internal directories.