We’re delighted to announce the release of mitmproxy v3.0. This is a massive milestone release, featuring a substantial revamp of mitmproxy’s internal structure and serious improvements in all tools across the board. Everyone should update!
The project’s momentum remains fearsome: this release features 1235 commits by 56 contributors, resulting in 287 closed issues and 308 merged PRs. With this release, we’re also launching a new website (you’re looking at it), a new project blog (you’re reading this release notice on it), and cleaner docs.
Let’s dig into the details.
Mitmproxy now has a powerful new addon infrastructure. Addons can hook into mitmproxy’s internal events, can expose typed options for configuration, and can create typed commands for user interaction. We’ve migrated much of mitmproxy’s own functionality into a set of internal addons, resulting in a much cleaner and more maintainable code structure.
Perhaps the most exciting aspect of this change is the power it gives third-party addons and user scripts. We expose precisely the same functionality mitmproxy uses for itself to users. Typed options declared by addons automatically appear in type-aware options editors in the official tools, are automatically included in configuration files, and can automatically be controlled from the command line. Typed commands exposed by addons get tab completion in mitmproxy console for free, and can be bound to keys. If you’re working on an extension of mitmproxy, please let us know - mitmproxy addons are now more powerful and easier to write than ever, and we’d like your feedback to help us make them better still.
The mitmproxy console app has been rebuilt around the new addon mechanism. Every user interaction and key binding simply invokes an addon command. Keystrokes can be bound directly to commands, and the command language can be invoked from an interactive, smart, syntax-aware prompt. User addons and scripts are first-class citizens, and get the same tab completion, type-aware options editor and key binding support as builtins.
The introduction of commands makes mitmproxy a massively more flexible and powerful tool. Any operation on flows can be invoked from the command prompt and combined with flow selectors. So, for instance, we can replay all flows with the domain “google.com” like so:
Along with this comes many, many user interface improvements. Major changes
include horizontal and vertical multi-pane layouts, customizable keybindings, an
options editor, and a command palette. There are too many minor improvements to
list, but my personal favourite is the new “B” keybinding (the
command), which opens an isolated instance of Chrome automatically set up to go
through the running proxy. Very handy.
Mitmweb, protocol support and others
For a complete list of changes, see the CHANGELOG.
Are you a student and interested in working on mitmproxy? Take a look at our GSoC 2018 page!
Mitmproxy doesn’t have telemetry and collects as little data as possible on its users. We rely on your manual feedback to let us know what to build. Please take a moment to fill in the 2018 mitmproxy user survey - this feeds directly into our dev priorities for the next year.