{"slug": "mitmproxy", "name": "mitmproxy", "category": "networking", "category_name": "Networking and VPN", "description": "", "recommenders": 7, "commenters": 21, "warners": 3, "score": 5.651, "rising": 0.36, "first": "2025-11-09", "latest": "2026-10-22", "why": "mitmproxy is an amazing cli powertool I first discovered over a decade ago", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 7, "neutral": 8, "compare": 4, "warn": 3}, "spark": [1, 1, 0, 0, 2, 0, 0, 0, 1, 0, 0, 2], "listed": true, "loved": [], "caveat": "", "short_quote": "mitmproxy is an amazing cli powertool I first discovered over a decade ago", "kind": "", "icon": true, "domain": "mitmproxy.org", "github_repo": null, "official_url": "https://mitmproxy.org", "pricing": "", "aliases": ["mitmproxy"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 803155153, "item_id": 50197197, "url": "https://news.ycombinator.com/item?id=50197197", "by": "ryukoposting", "date": "2026-10-22", "version": null, "stance": "recommend", "quote": "this glorious new mitmproxy feature", "excerpt": "Use my pihole to make the domain resolve to some machine on my LAN, then use this glorious new mitmproxy feature: https://www.mitmproxy.org/posts/releases/mitmproxy-12.3/", "context": "", "use_case": "", "switched_from": "", "story": "eMudhra to exit global SSL/TLS certificate business"}, {"id": 803055488, "item_id": 50190968, "url": "https://news.ycombinator.com/item?id=50190968", "by": "chrisweekly", "date": "2026-10-22", "version": null, "stance": "recommend", "quote": "mitmproxy is an amazing cli powertool I first discovered over a decade ago", "excerpt": "mitmproxy is an amazing cli powertool I first discovered over a decade ago (around the same time as lnav). highly recommended.", "context": "", "use_case": "HTTP traffic interception", "switched_from": "", "story": "mitmproxy adds --emudhra option"}, {"id": 784888128, "item_id": 49055508, "url": "https://news.ycombinator.com/item?id=49055508", "by": "boorang", "date": "2026-07-26", "version": null, "stance": "recommend", "quote": "I think it's a useful exercise for most people to sniff the traffic at least once", "excerpt": "I ran into this issue about 6 months ago when i was using mitmproxy to view the system prompts for claude code to try to diagnose degraded adherence to my CLAUDE.MD instructions: https://github.com/anthropics/claude-code/issues/18560 To summarize- they were embedding the CLAUDE.MD in a system-reminder with this disclaimer at the end: \"IMPORTANT: this context may or may not be relevant to your tasks. You should not re", "context": "", "use_case": "inspecting Claude Code system prompts", "switched_from": "", "story": "The new rules of context engineering for Claude 5 generation models"}, {"id": 784888064, "item_id": 49055504, "url": "https://news.ycombinator.com/item?id=49055504", "by": "boorang", "date": "2026-07-26", "version": null, "stance": "recommend", "quote": "I think it's a useful exercise for most people to sniff the traffic at least once", "excerpt": "I ran into this issue about 6 months ago when i was using mitmproxy to view the system prompts for claude code to try to diagnose degraded adherence to my CLAUDE.MD instructions: https://github.com/anthropics/claude-code/issues/18560 To summarize- they were embedding the CLAUDE.MD in a system-reminder with this disclaimer at the end: \"IMPORTANT: this context may or may not be relevant to your tasks. You should not re", "context": "", "use_case": "inspecting Claude Code system prompts", "switched_from": "", "story": "The new rules of context engineering for Claude 5 generation models"}, {"id": 784883266, "item_id": 49055204, "url": "https://news.ycombinator.com/item?id=49055204", "by": "boorang", "date": "2026-07-25", "version": null, "stance": "recommend", "quote": "just tell the agent to setup an mitmproxy to watch the traffic", "excerpt": "I spent some time running mitmproxy and watching the system prompts and it's what drove me to codex. the main issue for me was their system prompt wrapped the CLAUDE.MD with a \"IMPORTANT: this context may or may not be relevant to your tasks. You should not respond to this context unless it is highly relevant to your task.\" https://github.com/anthropics/claude-code/issues/18560 Anyhow- if anyone is sufficiently curio", "context": "", "use_case": "", "switched_from": "", "story": "The new rules of context engineering for Claude 5 generation models"}]}], "caveats": [{"label": "", "summary": "", "quotes": [{"id": 748977648, "item_id": 46811103, "url": "https://news.ycombinator.com/item?id=46811103", "by": "arowthway", "date": "2026-01-29", "version": null, "stance": "warn", "quote": "mitmproxy doesnt check it even when ssl_insecure=false", "excerpt": "If you're able to manipulate DNS, can't you just issue your own certificate for the domain? Even if it would be revoked moments later, mitmproxy doesnt check it even when ssl_insecure=false: https://github.com/mitmproxy/mitmproxy/issues/2235 EDIT: Maybe I incorrectly assumed you meant authoritative DNS.", "context": "", "use_case": "", "switched_from": "", "story": "A MitM proxy to see what your LLM tools are sending"}, {"id": 748835057, "item_id": 46802191, "url": "https://news.ycombinator.com/item?id=46802191", "by": "tkp-415", "date": "2026-01-28", "version": null, "stance": "warn", "quote": "then the TLS handshake started failing", "excerpt": "Curious to see how you can get Gemini fully intercepted. I've been intercepting its HTTP requests by running it inside a docker container with: -e HTTP_PROXY=http://127.0.0.1:8080 -e HTTPS_PROXY=http://host.docker.internal:8080 -e NO_PROXY=localhost,127.0.0.1 It was working with mitmproxy for a very brief period, then the TLS handshake started failing and it kept requesting for re-authentication when proxied. You can", "context": "", "use_case": "", "switched_from": "", "story": "A MitM proxy to see what your LLM tools are sending"}, {"id": 741355073, "item_id": 46334692, "url": "https://news.ycombinator.com/item?id=46334692", "by": "punnerud", "date": "2025-12-20", "version": null, "stance": "warn", "quote": "until they changed all they keybindings around version 2", "excerpt": "I was a daily user of mitmproxy, until they changed all they keybindings around version 2. Tried a couple of times to get used to the new \u201cTMUX\u201d style, but switched to Charles Proxy. Have mitmproxy gotten any better in usability over the years? Just based on the images, is seems to have the same problems?", "context": "", "use_case": "", "switched_from": "", "story": "Charles Proxy"}]}], "who": [{"by": "mft_", "context": "experimenting with local models", "url": "https://news.ycombinator.com/item?id=48883545", "date": "2026-07-12"}], "tags": [], "use_cases": ["inspecting claude code system prompts", "http traffic interception", "intercepting claude code traffic", "intercepting app traffic", "capturing agent system prompt", "proxy for agent api key isolation"], "compared": [{"slug": "claude-code", "name": "Claude Code", "co": 5, "switched_from": 0, "switched_to": 0}, {"slug": "charles-proxy", "name": "Charles Proxy", "co": 3, "switched_from": 0, "switched_to": 1}, {"slug": "burp-suite", "name": "Burp Suite", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "opencode", "name": "OpenCode", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [{"id": 803047168, "item_id": 50190448, "url": "https://news.ycombinator.com/item?id=50190448", "by": "mhils", "date": "2026-10-22", "version": null, "stance": "recommend", "quote": "Release is out now, including a blog post at https://www.mitmproxy.org/posts/releases/mitmproxy-12.3/.", "excerpt": "Ha, I didn't expect this to show up on HN! Release is out now, including a blog post at https://www.mitmproxy.org/posts/releases/mitmproxy-12.3/. There isn't really much to explain, you just pass `--emudhra`. :)", "context": "", "use_case": "HTTP debugging proxy", "switched_from": "", "story": "mitmproxy adds --emudhra option"}, {"id": 803045792, "item_id": 50190362, "url": "https://news.ycombinator.com/item?id=50190362", "by": "mhils", "date": "2026-10-22", "version": null, "stance": "neutral", "quote": "I didn't expect this commit to end up on HN", "excerpt": "I didn't expect this commit to end up on HN, otherwise I would have done the full integration in one go. :) https://github.com/mitmproxy/mitmproxy/pull/8503 adds the AAA root path.", "context": "", "use_case": "", "switched_from": "", "story": "mitmproxy adds --emudhra option"}], "threads": [{"url": "https://news.ycombinator.com/item?id=46799898", "title": "A MitM proxy to see what your LLM tools are sending", "mentions": 4}, {"url": "https://news.ycombinator.com/item?id=50189232", "title": "mitmproxy adds --emudhra option", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=49051361", "title": "The new rules of context engineering for Claude 5 generation models", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=46333983", "title": "Charles Proxy", "mentions": 3}, {"url": "https://news.ycombinator.com/item?id=50195110", "title": "eMudhra to exit global SSL/TLS certificate business", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=50000488", "title": "Why isn't the industry freaking out about DeepSeek 4.1 Flash?", "mentions": 1}], "sentiment_by_month": {"2025-11": {"recommend": 1, "compare": 1}, "2025-12": {"neutral": 1, "compare": 2, "warn": 1, "recommend": 1}, "2026-01": {"compare": 1, "neutral": 3, "warn": 2}, "2026-02": {}, "2026-03": {"recommend": 2}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"neutral": 1, "recommend": 1}, "2026-08": {}, "2026-09": {"neutral": 2}, "2026-10": {"neutral": 1, "recommend": 2}}, "versions": [], "version_unnamed": 0, "quotes": [{"id": 803155153, "item_id": 50197197, "url": "https://news.ycombinator.com/item?id=50197197", "by": "ryukoposting", "date": "2026-10-22", "version": null, "stance": "recommend", "quote": "this glorious new mitmproxy feature", "excerpt": "Use my pihole to make the domain resolve to some machine on my LAN, then use this glorious new mitmproxy feature: https://www.mitmproxy.org/posts/releases/mitmproxy-12.3/", "context": "", "use_case": "", "switched_from": "", "story": "eMudhra to exit global SSL/TLS certificate business"}, {"id": 803055488, "item_id": 50190968, "url": "https://news.ycombinator.com/item?id=50190968", "by": "chrisweekly", "date": "2026-10-22", "version": null, "stance": "recommend", "quote": "mitmproxy is an amazing cli powertool I first discovered over a decade ago", "excerpt": "mitmproxy is an amazing cli powertool I first discovered over a decade ago (around the same time as lnav). highly recommended.", "context": "", "use_case": "HTTP traffic interception", "switched_from": "", "story": "mitmproxy adds --emudhra option"}, {"id": 800278673, "item_id": 50017417, "url": "https://news.ycombinator.com/item?id=50017417", "by": "boorang", "date": "2026-10-09", "version": null, "stance": "neutral", "quote": "In my mitmproxy experiments", "excerpt": "there is literally a --system-prompt flag for claude code. In my mitmproxy experiments using that flag appended to the existing system prompt rather than replacing it. So I had to create a little helper to strip the system prompt sent over the wire and add my own. here is a collection of public system prompts from claude code: https://github.com/Piebald-AI/claude-code-system-prompts", "context": "", "use_case": "intercepting Claude Code traffic", "switched_from": "", "story": "Why isn't the industry freaking out about DeepSeek 4.1 Flash?"}, {"id": 797578353, "item_id": 49848647, "url": "https://news.ycombinator.com/item?id=49848647", "by": "paimapi", "date": "2026-09-25", "version": null, "stance": "neutral", "quote": "I was running a little mitmproxy network test", "excerpt": "they already have the backbone for this with Microsoft Clarity: https://clarity.microsoft.com/ I was running a little mitmproxy network test on some baby-tracking apps to see what kind of data got sent back home and man, realizing that everything I was doing on my phone was essentially being recorded and 'anonymized' by whatever definition of MS has for anonymization was really not fun", "context": "", "use_case": "", "switched_from": "", "story": "Dutch governments builds alternative for Microsoft based on NixOS"}, {"id": 795113153, "item_id": 49694572, "url": "https://news.ycombinator.com/item?id=49694572", "by": "shocks", "date": "2026-09-14", "version": null, "stance": "neutral", "quote": "You can extract keys out of Authy using mitm-proxy.", "excerpt": "You can extract keys out of Authy using mitm-proxy. I have done it and switched to Bitwarden.", "context": "", "use_case": "Intercepting app traffic", "switched_from": "", "story": "OEMpocalypse: Unprivileged Android app to root on Samsung, Xiaomi, others"}, {"id": 784888128, "item_id": 49055508, "url": "https://news.ycombinator.com/item?id=49055508", "by": "boorang", "date": "2026-07-26", "version": null, "stance": "recommend", "quote": "I think it's a useful exercise for most people to sniff the traffic at least once", "excerpt": "I ran into this issue about 6 months ago when i was using mitmproxy to view the system prompts for claude code to try to diagnose degraded adherence to my CLAUDE.MD instructions: https://github.com/anthropics/claude-code/issues/18560 To summarize- they were embedding the CLAUDE.MD in a system-reminder with this disclaimer at the end: \"IMPORTANT: this context may or may not be relevant to your tasks. You should not re", "context": "", "use_case": "inspecting Claude Code system prompts", "switched_from": "", "story": "The new rules of context engineering for Claude 5 generation models"}, {"id": 784888064, "item_id": 49055504, "url": "https://news.ycombinator.com/item?id=49055504", "by": "boorang", "date": "2026-07-26", "version": null, "stance": "recommend", "quote": "I think it's a useful exercise for most people to sniff the traffic at least once", "excerpt": "I ran into this issue about 6 months ago when i was using mitmproxy to view the system prompts for claude code to try to diagnose degraded adherence to my CLAUDE.MD instructions: https://github.com/anthropics/claude-code/issues/18560 To summarize- they were embedding the CLAUDE.MD in a system-reminder with this disclaimer at the end: \"IMPORTANT: this context may or may not be relevant to your tasks. You should not re", "context": "", "use_case": "inspecting Claude Code system prompts", "switched_from": "", "story": "The new rules of context engineering for Claude 5 generation models"}, {"id": 784883266, "item_id": 49055204, "url": "https://news.ycombinator.com/item?id=49055204", "by": "boorang", "date": "2026-07-25", "version": null, "stance": "recommend", "quote": "just tell the agent to setup an mitmproxy to watch the traffic", "excerpt": "I spent some time running mitmproxy and watching the system prompts and it's what drove me to codex. the main issue for me was their system prompt wrapped the CLAUDE.MD with a \"IMPORTANT: this context may or may not be relevant to your tasks. You should not respond to this context unless it is highly relevant to your task.\" https://github.com/anthropics/claude-code/issues/18560 Anyhow- if anyone is sufficiently curio", "context": "", "use_case": "", "switched_from": "", "story": "The new rules of context engineering for Claude 5 generation models"}, {"id": 782136721, "item_id": 48883545, "url": "https://news.ycombinator.com/item?id=48883545", "by": "mft_", "date": "2026-07-12", "version": null, "stance": "neutral", "quote": "I used mitmproxy (setup assisted by Claude, natch) to capture Claude Code's entire initial system prompt", "excerpt": "Early on in experimenting with local models, I found that hooking them up to Claude Code worked very well, but it was also really slow. I used mitmproxy (setup assisted by Claude, natch) to capture Claude Code's entire initial system prompt and the whole thing was (I just double-checked) 162k of JSON. This led me to start experimenting with Pi, OpenCode, and Hermes...", "context": "experimenting with local models", "use_case": "capturing agent system prompt", "switched_from": "", "story": "Claude Code sends 33k tokens before reading the prompt; OpenCode sends 7k"}, {"id": 759336848, "item_id": 47458553, "url": "https://news.ycombinator.com/item?id=47458553", "by": "joostme", "date": "2026-03-20", "version": null, "stance": "recommend", "quote": "I also settled on mitmproxy.", "excerpt": "Great tool. Yours is much more sophisticated than mine, but I also came up with a similar solution to my personal problem of running opencode web in a container with access to all my API keys. I also settled on mitmproxy. Before I was trying to use IPTables, but that didnt really safely work, because the agent could still escape if he tried hard enough. I'm happy there is some work being done of securing agents more ", "context": "", "use_case": "Proxy for agent API key isolation", "switched_from": "", "story": "Show HN: OneCLI \u2013 Vault for AI Agents in Rust"}, {"id": 755795236, "item_id": 47237202, "url": "https://news.ycombinator.com/item?id=47237202", "by": "ysnp", "date": "2026-03-03", "version": null, "stance": "recommend", "quote": "you (and any GrapheneOS user) can do it today with mitmproxy and RethinkDNS", "excerpt": ">are by incompetent/lazy/pressured devs who just throw in some library and don't even care that it leaks data to Google Even if I agreed with this statement, I don't understand why it is better to put limited/precious resources something the app developers can easily circumvent, praying they never stop being incompetent/lazy/pressured and tell device owners it is an important privacy feature? Instead of waiting for t", "context": "", "use_case": "", "switched_from": "", "story": "/e/OS is a complete \"deGoogled\", mobile ecosystem"}, {"id": 748977648, "item_id": 46811103, "url": "https://news.ycombinator.com/item?id=46811103", "by": "arowthway", "date": "2026-01-29", "version": null, "stance": "warn", "quote": "mitmproxy doesnt check it even when ssl_insecure=false", "excerpt": "If you're able to manipulate DNS, can't you just issue your own certificate for the domain? Even if it would be revoked moments later, mitmproxy doesnt check it even when ssl_insecure=false: https://github.com/mitmproxy/mitmproxy/issues/2235 EDIT: Maybe I incorrectly assumed you meant authoritative DNS.", "context": "", "use_case": "", "switched_from": "", "story": "A MitM proxy to see what your LLM tools are sending"}, {"id": 748893376, "item_id": 46805836, "url": "https://news.ycombinator.com/item?id=46805836", "by": "Retr0id", "date": "2026-01-28", "version": null, "stance": "neutral", "quote": "", "excerpt": "Looks like it's implemented that way already? https://github.com/jmuncor/sherlock/blob/fb76605fabbda351828ebc0e042f03d13caee502/sherlock/interceptor.py#L17", "context": "", "use_case": "", "switched_from": "", "story": "A MitM proxy to see what your LLM tools are sending"}, {"id": 748873696, "item_id": 46804606, "url": "https://news.ycombinator.com/item?id=46804606", "by": "mikehotel", "date": "2026-01-28", "version": null, "stance": "neutral", "quote": "Addon to mitmproxy:", "excerpt": "Addon to mitmproxy: https://docs.mitmproxy.org/stable/addons/overview/", "context": "", "use_case": "HTTP traffic inspection", "switched_from": "", "story": "A MitM proxy to see what your LLM tools are sending"}, {"id": 748835057, "item_id": 46802191, "url": "https://news.ycombinator.com/item?id=46802191", "by": "tkp-415", "date": "2026-01-28", "version": null, "stance": "warn", "quote": "then the TLS handshake started failing", "excerpt": "Curious to see how you can get Gemini fully intercepted. I've been intercepting its HTTP requests by running it inside a docker container with: -e HTTP_PROXY=http://127.0.0.1:8080 -e HTTPS_PROXY=http://host.docker.internal:8080 -e NO_PROXY=localhost,127.0.0.1 It was working with mitmproxy for a very brief period, then the TLS handshake started failing and it kept requesting for re-authentication when proxied. You can", "context": "", "use_case": "", "switched_from": "", "story": "A MitM proxy to see what your LLM tools are sending"}, {"id": 747176432, "item_id": 46698527, "url": "https://news.ycombinator.com/item?id=46698527", "by": "asabla", "date": "2026-01-20", "version": null, "stance": "neutral", "quote": "It's not fully working for all workflows yet. But it's getting close", "excerpt": "Very nice! I've been experimenting with a similar setup. And I'll probably implement some of the things you've been doing. For the proxy part I've been running https://www.mitmproxy.org/ It's not fully working for all workflows yet. But it's getting close", "context": "", "use_case": "Proxy for agent sandbox", "switched_from": "", "story": "Running Claude Code dangerously (safely)"}, {"id": 746926641, "item_id": 46682915, "url": "https://news.ycombinator.com/item?id=46682915", "by": "1vuio0pswjnm7", "date": "2026-01-19", "version": null, "stance": "compare", "quote": "For me, HAproxy is smaller and faster than mitmproxy", "excerpt": "\"When hostnames and headers are hard to edit: mitmproy add-ons\" \"The mitmproxy tool also supports addons where you can transform HTTP requests between Claude Code and third-party web servers. For example, you could write an add-on that intercepts https://api.anthropic.com and updates the X-API-Key header with an actual Anthropic API Key.\" \"You can then pass this add-on via mitmproxy -s reroute_hosts.py.\" If using HAp", "context": "", "use_case": "HTTP interception proxy", "switched_from": "", "story": "Using Proxies to Hide Secrets from Claude Code"}, {"id": 742736560, "item_id": 46421035, "url": "https://news.ycombinator.com/item?id=46421035", "by": "klohto", "date": "2025-12-29", "version": null, "stance": "recommend", "quote": "I have had great experience scripting and running", "excerpt": "I have had great experience scripting and running http://mitmproxy.org for these purposes. I also have set it in production as a dumb caching proxy for upstream services (We do a lot dumb GETs to list/enumerate)", "context": "", "use_case": "scripted proxy and caching", "switched_from": "", "story": "Kubernetes Egress Control with Squid Proxy"}, {"id": 741394672, "item_id": 46337167, "url": "https://news.ycombinator.com/item?id=46337167", "by": "Fnoord", "date": "2025-12-20", "version": null, "stance": "compare", "quote": "mitmproxy isn't the gold standard; it is Burp Suite, sadly.", "excerpt": "mitmproxy isn't the gold standard; it is Burp Suite, sadly. Burp Suite uses a subscription model. Charles a model like Sublime Text: you buy it and get to keep the version forever, major upgrades available for a discount. I had to chuckle at this one: > If you purchased a Charles license prior to 1 May 2008 your existing license key is still valid for Charles 5. So I guess in past they used a model where you'd have l", "context": "", "use_case": "", "switched_from": "", "story": "Charles Proxy"}, {"id": 741355073, "item_id": 46334692, "url": "https://news.ycombinator.com/item?id=46334692", "by": "punnerud", "date": "2025-12-20", "version": null, "stance": "warn", "quote": "until they changed all they keybindings around version 2", "excerpt": "I was a daily user of mitmproxy, until they changed all they keybindings around version 2. Tried a couple of times to get used to the new \u201cTMUX\u201d style, but switched to Charles Proxy. Have mitmproxy gotten any better in usability over the years? Just based on the images, is seems to have the same problems?", "context": "", "use_case": "", "switched_from": "", "story": "Charles Proxy"}, {"id": 741346481, "item_id": 46334155, "url": "https://news.ycombinator.com/item?id=46334155", "by": "cientifico", "date": "2025-12-19", "version": null, "stance": "compare", "quote": "The closest free alternative is https://www.mitmproxy.org/ that is not even close.", "excerpt": "One hidden gem. The closest free alternative is https://www.mitmproxy.org/ that is not even close. And off course, https://www.wireshark.org/ but that is too generic and with a bigger learning curve. Worth the money. And no subscription (or there weren't a subscription back then)", "context": "", "use_case": "", "switched_from": "", "story": "Charles Proxy"}, {"id": 741130688, "item_id": 46320668, "url": "https://news.ycombinator.com/item?id=46320668", "by": "baobun", "date": "2025-12-18", "version": null, "stance": "neutral", "quote": "I got different results using a local mitmproxy on a clean install.", "excerpt": "What was your methodology in checking? I got different results using a local mitmproxy on a clean install. https://sizeof.cat/post/web-browser-telemetry-2025-edition/", "context": "", "use_case": "traffic inspection proxy", "switched_from": "", "story": "Firefox will have an option to disable all AI features"}, {"id": 734230737, "item_id": 45889421, "url": "https://news.ycombinator.com/item?id=45889421", "by": "Marceltan", "date": "2025-11-11", "version": null, "stance": "compare", "quote": "not just the HTTP calls (like you would see with mitmproxy)", "excerpt": "Fair shout. Our instrumentations (https://github.com/Use-Tusk/drift-node-sdk?tab=readme-ov-file#requirements) hook directly into pg, mysql2, ioredis, firestore, etc., at the library level. We capture the actual DB queries, Redis cache hits, JWT generation, and not just the HTTP calls (like you would see with mitmproxy), which lets us replay the full request chain without needing a live database or cache. This way eac", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Tusk Drift \u2013 Open-source tool for automating API tests"}, {"id": 733922256, "item_id": 45870141, "url": "https://news.ycombinator.com/item?id=45870141", "by": "AquiGorka", "date": "2025-11-09", "version": null, "stance": "recommend", "quote": "then I found out about: https://www.mitmproxy.org/", "excerpt": "Some time ago I was building a mitm proxy myself, then I found out about: https://www.mitmproxy.org/ Maybe you already had it in your radar", "context": "", "use_case": "", "switched_from": "", "story": "Ask HN: What Are You Working On? (Nov 2025)"}]}