HTTP2 for mitmproxy

Project Name: Project 6 - Do you speak HTTP2? Teach it mitmproxy!
Mentor: Maximilian Hils (DE)
Backup mentor: Aldo Cortesi (IT)
Student: Thomas Kriechbaumer
Skills required:
    •    Python (strong)
    •    HTTP & TCP/IP (strong)
Project type: Improve existing tool
Project goal: Create your own HTTP/2 and WebSocket implementations for mitmproxy!
Description:

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.

Project page: https://mitmproxy.org/
Code repository: https://github.com/mitmproxy/mitmproxy
Getting started for GSoC: https://github.com/mitmproxy/mitmproxy/issues/495
We are on #[email protected]

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.

Achievements:

The results from Thomas are neatly summarized in a blog post