Edit on GitHub

#  API Changelog

We try to avoid them, but this page lists breaking changes in the mitmproxy addon API.

#  mitmproxy 7.0

#  Connection Events

We’ve revised mitmproxy’s connection-specific event hooks as part of the new proxy core. The .client_conn and .server_conn objects have major API changes across the board. See the new event hook documentation for details.

Attribute Client (v6) Server (v6) mitmproxy v7
Remote IP:Port .address .ip_address .peername
Local IP:Port .source_address .sockname
Remote Domain N/A .address .address

As the passed objects are different now, we’ve also taken this opportunity to introduce more consistent event names:

mitmproxy 6 mitmproxy 7
clientconnect client_connected
clientdisconnect client_disconnected
serverconnect server_connected
serverdisconnect server_disconnected

#  Logging

The log event has been renamed to add_log. This fixes a consistent source of errors where users imported modules with the name “log”, which were then inadvertedly picked up.

#  Contentviews

Contentviews now implement render_priority instead of should_render. This enables additional specialization, for example one can now write contentviews that pretty-print only specific JSON responses. See the contentview.py example for details.

#  WebSocket Flows

mitmproxy 6 had a custom WebSocketFlow class, which had ugly co-dependencies with the related HTTPFlow. Long story short, WebSocketFlow is no more and instead HTTPFlow has a neat .websocket attribute. All WebSocket flows are now passed the originating HTTPFlow with this attribute set. As always, existing dumpfiles are automatically converted on load.

#  Certificates

mitmproxy now uses cryptography instead of pyOpenSSL to generate certificates. As a consequence, the API of mitmproxy.certs has changed.

#  HTTP Headers

mitmproxy.net.http.Headers -> mitmproxy.http.Headers for consistency.