mitmproxy: release v0.18

We've just released mitmproxy v0.18! Since the last release, the project has had 1399 commits by 40 contributors, resulting in 217 closed issues and 305 closed PRs, all of this in just over 189 days.

This release is notable for a number of reasons.

First, it contains significant contributions from our three excellent GSOC students this year. Shadab Zafar worked on Python 3 compatibility and a number of aspects of mitmproxy's core. Clemens Brunner and Jason Hao made major improvements to mitmweb, the upcoming web-based interface to mitmproxy. We loved working with these guys, and hope that they will continue to hack on mitmproxy.

Second, the project has seen some significant internal reorganisation. Previously, we were split over three separate repositories (mitmproxy, netlib and pathod). Over time, the practical headaches of keeping everything synchronised started taking a toll, and we decided to amalgamate it all in a single repo. The most immediate external effect is that installing mitmproxy (through, say, "pip install mitmproxy") now gets you all of the associated tools and libraries, including pathod and pathoc.

Finally, 0.18 will be the last major version of mitmproxy compatible with Python 2. The next release will target Python 3.5 only, with all of the 2/3 compatibility cruft stripped out. This is not a decision we took lightly - we have a significant community of developers that have tools based on mitmproxy, and we realise this might be painful for some of them. We feel that being able to use the full features of Python 3.5 will make the transition worth it. If you have a library or tool based on mitmproxy, you should start planning for a conversion now. We'd be very happy to help you navigate the transition, so feel free to drop by the Slack channel to chat to the dev team.

Changelog

  • Python 3 Compatibility for mitmproxy and pathod (Shadab Zafar, GSoC 2016)
  • Major improvements to mitmweb (Clemens Brunner & Jason Hao, GSoC 2016)
  • Internal Core Refactor: Separation of most features into isolated Addons
  • Initial Support for WebSockets
  • Improved HTTP/2 Support
  • Reverse Proxy Mode now automatically adjusts host headers and TLS Server Name Indication
  • Improved HAR export
  • Improved export functionality for curl, python code, raw http etc.
  • Flow URLs are now truncated in the console for better visibility
  • New filters for TCP, HTTP and marked flows.
  • Mitmproxy now handles comma-separated Cookie headers
  • Merge mitmproxy and pathod documentation
  • Mitmdump now sanitizes its console output to not include control characters
  • Improved message body handling for HTTP messages:
    • .raw_content provides the message body as seen on the wire
    • .content provides the decompressed body (e.g. un-gzipped)
    • .text provides the body decompressed and decoded body
  • New HTTP Message getters/setters for cookies and form contents.
  • Add ability to view only marked flows in mitmproxy
  • Improved Script Reloader (Always use polling, watch for whole directory)
  • Use tox for testing
  • Unicode support for tnetstrings
  • Add dumpfile converters for mitmproxy versions 0.11 and 0.12
  • Numerous bugfixes

Contributors for this release

  • Aldo Cortesi
  • Angelo Agatino Nicolosi
  • BSalita
  • Brett Randall
  • Christian Frichot
  • Clemens Brunner
  • Cory Benfield
  • Doug Freed
  • Drake Caraker
  • Felix Yan
  • Israel Blancas
  • Jason
  • Jason Pepas
  • Jonathan Jones
  • Kostya Esmukov
  • Linmiao Xu
  • Manish Kumar
  • Maximilian Hils
  • Ryan Laughlin
  • Sachin Kelkar
  • Sanchit Sokhey
  • Schamper
  • Shadab Zafar
  • Steven Noble
  • Steven Van Acker
  • Tai Dickerson
  • Thomas Kriechbaumer
  • Tyler St. Onge
  • Vincent Haupert
  • Wes Turner
  • Yoginski
  • Zohar Lorberbaum
  • arjun
  • chhsiao
  • jpkrause
  • phackt
  • redfast
  • smill
  • strohu
  • vulnminer