mitmproxy is a man-in-the-middle HTTPS proxy. It is an interactive console program written in Python that allows HTTP network traffic flows to be inspected and edited on the fly. mitmproxy has >100.000 downloads/year, >3000 stars on GitHub and more than 50 contributors - you’re not going to work on an academic prototype but on a project with a large community instead.

In its current form, mitmproxy is primarily designed to be an HTTP proxy. However, the web is slowly catching up with newer protocols and we want to add support for these in mitmproxy as well! Your task would be to implement basic support for the HTTP2 and WebSocket protocols in Python and wire them up to mitmdump, our non-interactive command line client. We expect you to learn the HTTP2 and WebSocket protocols during the project, knowing their individual details is not a prerequisite. You should, however, be familiar with HTTP, as this will make learning HTTP2 significantly easier.