mitmproxy is your swiss-army knife for debugging, testing, privacy measurements, and penetration testing. It can be used to intercept, inspect, modify and replay web traffic such as HTTP/1, HTTP/2, HTTP/3, WebSockets, or any other SSL/TLS-protected protocols. You can prettify and decode a variety of message types ranging from HTML to Protobuf, intercept specific messages on-the-fly, modify them before they reach their destination, and replay them to a client or server later on.
Use mitmproxy's main features in a graphical interface withmitmweb. Do you like Chrome's DevTools?mitmweb gives you a similar experience for any other application or device, plus additional features such as request interception and replay.
from mitmproxyimport httpdefrequest(flow: http.HTTPFlow):# redirect to different hostif flow.request.pretty_host =="example.com": flow.request.host ="mitmproxy.org"# answer from proxyelif flow.request.path.endswith("/brew"): flow.response = http.Response.make(418,b"I'm a teapot", )
Write powerful addons and script mitmproxy withmitmdump. The scripting API offers full control over mitmproxy and makes it possible to automatically modify messages, redirect traffic, visualize messages, or implement custom commands.
Mitmproxy is free and open source. Be part of the mitmproxy community and help improve your favorite HTTPS proxy.