CINXE.COM
mitmproxy - an interactive HTTPS proxy
<!DOCTYPE html> <html lang="en-us"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <link rel="icon" type="image/png" href="./favicon.ico"> <title>mitmproxy - an interactive HTTPS proxy</title> <link rel="stylesheet" href="./style.min.css"> <link rel="alternate" type="application/rss+xml" href="./posts/index.xml" title="mitmproxy.org" /> <meta name="generator" content="Hugo 0.140.2"> </head> <body> <nav class="navbar is-dark" role="navigation" aria-label="main navigation"> <div class="container"> <div class="navbar-brand"> <a class="navbar-item" href="./"> <img src="./logo-navbar.png" alt="mitmproxy"> </a> <button class="button navbar-burger is-dark" data-target="topnav"> <span></span> <span></span> <span></span> </button> </div> <div id="topnav" class="navbar-menu"> <div class="navbar-start"> <a class="navbar-item" href="./posts"> Blog </a> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link" href="https://docs.mitmproxy.org/stable"> Docs </a> <div class="navbar-dropdown is-boxed"> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/stable"> v11 (latest release) </a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v10"> v10</a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v9"> v9</a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v8"> v8</a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v7"> v7</a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v6"> v6</a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v5"> v5</a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v4"> v4</a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v3"> v3</a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v2"> v2</a> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/archive/v1"> v1</a> <hr class="navbar-divider"> <a class="navbar-item" target="_blank" href="https://docs.mitmproxy.org/dev"> dev</a> </div> </div> <a class="navbar-item" href="./publications"> Publications </a> </div> <div class="navbar-end"> <div class="navbar-item is-hidden-touch"> <iframe src="./github-btn.html?user=mhils&type=sponsor&size=large" frameborder="0" scrolling="0" width="115" height="30"></iframe> <iframe src="./github-btn.html?user=mitmproxy&repo=mitmproxy&type=star&count=true&size=large" frameborder="0" scrolling="0" width="160" height="30"></iframe> </div> </div> </div> </div> </nav> <script> document.addEventListener('DOMContentLoaded', function () { var $navbarBurgers = Array.prototype.slice.call(document.querySelectorAll('.navbar-burger'), 0); if ($navbarBurgers.length > 0) { $navbarBurgers.forEach(function ($el) { $el.addEventListener('click', function () { var target = $el.dataset.target; var $target = document.getElementById(target); $el.classList.toggle('is-active'); $target.classList.toggle('is-active'); }); }); } }); </script> <div id="home"> <section id="intro"> <div class="hero-body"> <div class="container"> <div class="columns"> <div class="column is-7"> <img src="./screenshot.png" alt="screenshot of mitmproxy's interface"> </div> <div class="column is-hidden-mobile"></div> <div class="column is-two-fifths"> <div> <h1 class="is-size-3"> <dfn id="definition">mitmproxy</dfn> is a free and open source interactive HTTPS proxy. </h1> <br> <div id="install" role="navigation" aria-label="Installation"> <a id="install-windows-classic" class="button is-hidden is-primary is-medium" href="./downloads"> Download Windows Installer </a> <div> <a id="install-windows-store" class="button is-hidden is-black" href="ms-windows-store://pdp/?ProductId=9NWNDLQMNZD7"> <span class="icon"> <svg width=20 height=20 xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23 23"> <path fill="#f35325" d="M1 1h10v10H1z"/> <path fill="#81bc06" d="M12 1h10v10H12z"/> <path fill="#05a6f0" d="M1 12h10v10H1z"/> <path fill="#ffba08" d="M12 12h10v10H12z"/> </svg> </span> <span>Get from Microsoft Store</span> </a> </div> <a id="install-linux" class="button is-hidden is-primary is-medium" href="./downloads"> Download Linux Binaries </a> <pre id="install-macos" class="shell-command is-hidden"> <code>brew install mitmproxy</code> <code class="copy is-hidden-touch" data-clipboard-text="brew install mitmproxy">copy</code> </pre> <a id="install-docker" class="button is-hidden is-link is-medium" href="https://hub.docker.com/r/mitmproxy/mitmproxy/"> Docker Hub </a> <a id="install-more" class="button is-hidden is-info is-medium" href="./downloads"> More Downloads </a> <a id="install-default" class="button is-primary is-medium" href="./downloads"> Download </a> </div> <p> <a class="has-text-dark" href="./tags/releases/">Release Notes (v11.1)</a> <span> – <a id="other-downloads" class="has-text-dark" href="./downloads"> Other Downloads </a> </span> </p> </div> </div> </div> </div> </div> </section> <section id="features"> <div class="hero-body"> <div class="container"> <div class="columns" role="navigation" aria-label="Features"> <a href="#mitmproxy" class="column has-text-centered has-text-primary"> <i class="fas fa-2x fa-terminal"></i> <div class="title">Command Line</div> </a> <a href="#mitmweb" class="column has-text-centered has-text-primary"> <i class="fab fa-2x fa-firefox-browser"></i> <div class="title">Web Interface</div> </a> <a href="#mitmdump" class="column has-text-centered has-text-primary"> <i class="fas fa-2x fa-code"></i> <div class="title">Python API</div> </a> </div> </div> </div> </section> <section id="mitmproxy" class="feature"> <div class="hero-body"> <div class="container"> <div class="columns is-centered"> <div class="column"> <img src="./screenshot.png" alt="screenshot of mitmproxy's interface"> </div> <div class="column"> <h2 class="title">Command Line</h2> <p> <kbd>mitmproxy</kbd> 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. </p> </div> </div> </div> </div> </section> <section id="mitmweb" class="feature"> <div class="hero-body"> <div class="container"> <div class="columns is-centered"> <div class="column"> <img src="./mitmweb.png" alt="screenshot of mitmweb's interface" style="border: solid #93a1a1 1px;"> </div> <div class="column"> <h2 class="title">Web Interface</h2> <p> Use mitmproxy's main features in a graphical interface with <kbd>mitmweb</kbd>. Do you like Chrome's DevTools? <kbd>mitmweb</kbd> gives you a similar experience for any other application or device, plus additional features such as request interception and replay. </p> <!-- <a class="button is-info is-outlined" href="http://share.mitmproxy.org/honeynet-demo/#/flows/b07c553b-1ffd-4414-924f-ca4412804a6d/response"> View Static Demo </a>--> </div> </div> </div> </div> </section> <section id="mitmdump" class="feature"> <div class="hero-body"> <div class="container"> <div class="columns is-centered"> <div class="column"> <div class="sample-code"> <div class="filename">addon.py</div> <pre><span class="import">from</span> mitmproxy <span class="import">import</span> http <span class="keyword">def</span> <span class="method">request</span>(flow: http.HTTPFlow): <span class="comment"># redirect to different host</span> <span class="keyword">if</span> flow.request.pretty_host == <span class="str">"example.com"</span>: flow.request.host = <span class="str">"mitmproxy.org"</span> <span class="comment"># answer from proxy</span> <span class="keyword">elif</span> flow.request.path.endswith(<span class="str">"/brew"</span>): flow.response = http.Response.make( <span class="num">418</span>, <strong>b</strong><span class="str">"I'm a teapot"</span>, )</pre> </div> </div> <div class="column"> <h2 class="title"> Python API </h2> <p> Write powerful addons and script mitmproxy with <kbd>mitmdump</kbd>. The scripting API offers full control over mitmproxy and makes it possible to automatically modify messages, redirect traffic, visualize messages, or implement custom commands. </p> </div> </div> </div> </div> </section> <section id="ecosystem" class="feature"> <div class="hero-body"> <div class="container"> <div class="columns is-centered"> <div class="column"> <h1 class="title is-4">Sponsored By</h1> <div class="sponsors"> <div> <a href="https://nlnet.nl/project/mitmproxy/"><img alt="NLnet" src="./sponsors/nlnet.svg"></a> <a href="https://codacy.com/"><img alt="Codacy" src="./sponsors/codacy.png"></a> <a href="https://proxyman.io/"><img alt="Proxyman" src="./sponsors/proxyman.png"></a> <a href="https://netograph.io/"><img alt="Netograph.io" src="./sponsors/netograph.svg"></a> <a href="https://www.svix.com/"><img alt="Svix" src="./sponsors/svix.svg"></a> <a href="https://llc.org/"><img alt="LLC.org" src="./sponsors/llc.org.png"></a> <a href="https://www.vpsserver.com/en-us/"><img alt="vpsserver.com" src="./sponsors/vpsserver.com.svg"></a> <a href="https://route4me.com/"><img alt="Route Planner Software" src="./sponsors/route4me.png"></a> </div> <div style="margin-top: .5em">...and many <a href="https://github.com/sponsors/mhils" class="has-text-link">individual supporters!</a> ❤️</div> </div> </div> <div class="column"> <h2 class="title">Powerful Ecosystem</h2> <div class="content" role="navigation" aria-label="Ecosystem"> <p> Mitmproxy has a vibrant ecosystem of addons and tools building on it: </p> <ul> <li> <a href="https://github.com/mitmproxy/mitmproxy/tree/main/examples/contrib" class="has-text-link"> mitmproxy/examples/contrib</a>, a collection of community-contributed mitmproxy addons. </li> <li> <a href="https://github.com/alufers/mitmproxy2swagger" class="has-text-link"> mitmproxy2swagger</a>, a tool for automatically converting mitmproxy captures to OpenAPI 3.0 specifications. </li> <li> <a href="https://github.com/soluble-ai/kubetap" class="has-text-link"> kubetap</a>, a kubectl plugin to interactively proxy Kubernetes Services. </li> </ul> </div> </div> </div> </div> </div> </section> <section id="opensource" class="feature"> <div class="hero-body"> <div class="container"> <div class="columns is-centered"> <div class="column has-text-centered"> <i class="fas fa-code fa-8x has-text-danger"></i> </div> <div class="column"> <h2 class="title">Open Source</h2> <p> Mitmproxy is free and open source. Be part of the mitmproxy community and help improve your favorite HTTPS proxy. </p> <br> <div class="buttons" role="navigation" aria-label="Open Source Cummunity"> <a class="button is-dark" href="https://github.com/mitmproxy/mitmproxy"> <span class="icon"> <i class="fab fa-github"></i> </span> <span>GitHub</span> </a> <a class="button is-info" href="https://github.com/mitmproxy/mitmproxy/discussions"> <span class="icon"> <i class="far fa-comments"></i> </span> <span>Ask Questions</span> </a> <a class="button is-danger" href="https://slack.mitmproxy.org"> <span class="icon"> <i class="fab fa-slack-hash"></i> </span> <span>Developer Chat</span> </a> </div> </div> </div> </div> </div> </section> </div> <script src="./polyfills.js"></script> <script src="./clipboard.min.js"></script> <script src="./snapshots.js"></script> <script> document.getElementsByClassName("copy") // Copy let clipboard = new ClipboardJS('.copy'); clipboard.on('success', function (e) { let node = e.trigger; node.classList.add("has-text-success"); node.textContent = "copied!"; window.setTimeout(function(){ node.classList.remove("has-text-success") node.textContent = "copy" }, 1000) }); getLatestRelease("-windows-x86_64-installer.exe").then(function (url) { document.getElementById("install-windows-classic").href = url; }) getLatestRelease("-linux-x86_64.tar.gz").then(function (url) { document.getElementById("install-linux").href = url; }) // OS Detection let platform = window.navigator.platform.toLowerCase(); if (platform.includes("win")) { document.getElementById("install-default").classList.add("is-hidden"); document.getElementById("install-windows-classic").classList.remove("is-hidden"); document.getElementById("install-windows-store").classList.remove("is-hidden"); } else if (platform.includes("linux") && !platform.includes("android")) { document.getElementById("install-default").classList.add("is-hidden"); document.getElementById("install-linux").classList.remove("is-hidden"); } else if (platform.includes("mac") && !platform.includes("iPhone") && !platform.includes("iPad")) { document.getElementById("install-default").classList.add("is-hidden"); document.getElementById("install-macos").classList.remove("is-hidden"); } let install = document.querySelector("#install"); install.style.height = install.clientHeight + "px"; document.getElementById("other-downloads").addEventListener("click", function (e) { e.preventDefault(); document.getElementById("other-downloads").parentElement.classList.add("is-hidden"); install.style.height = "0px"; window.setTimeout(function () { document.querySelectorAll("#install > *").forEach(function (x) { x.classList.remove("is-hidden"); }) document.getElementById("install-default").classList.add("is-hidden"); install.style.height = install.scrollHeight + "px"; }, 300); }) </script> <footer class="footer"> <div class="container"> <div class="content"> <div class="level"> <div class="level-left"> <p> <strong>mitmproxy</strong>, a project by <a href="./authors/aldo-cortesi/">Aldo Cortesi</a>, <a href="./authors/maximilian-hils/">Maximilian Hils</a>, and <a href="./authors/thomas-kriechbaumer/">Thomas Kriechbaumer</a>.<br> Maintained by the <a href="https://github.com/orgs/mitmproxy/people">core team</a> with the help of <a href="https://github.com/mitmproxy/mitmproxy/graphs/contributors">our fantastic contributors</a>.<br> Code licensed <a href="https://github.com/mitmproxy/mitmproxy/blob/main/LICENSE">MIT</a>, website © 2025 Mitmproxy Project. <br><br> <small>Also checkout <a href="https://pdoc.dev">pdoc</a>, a Python API documentation generator built by the mitmproxy developers.</small> </p> </div> <div class="level-right"> <a class="button is-outlined is-info" href="https://twitter.com/mitmproxy"> <span class="icon"> <i class="fab fa-twitter"></i> </span> <span>Follow @mitmproxy</span> </a> </div> </div> </div> </div> </footer> </body> </html>