求助:Mitmproxy无法捕获.NET+Angular项目的localhost请求
排查Mitmproxy无法捕获localhost请求的实用步骤
基础代理配置核查
- 前端与后端代理设置确认:
- Angular:启动项目时必须指定代理配置,比如执行
ng serve --proxy-config proxy.conf.json,同时确保proxy.conf.json里的目标地址指向Mitmproxy默认端口(8080),或者直接把浏览器/前端的系统代理设为http://localhost:8080 - .NET后端:如果需要捕获后端的出站请求,要给后端配置代理;若要捕获前端打给后端的请求,得确保Mitmproxy能拦截到两者之间的流量
- Angular:启动项目时必须指定代理配置,比如执行
- MacOS系统代理设置:打开「系统设置」→「网络」→「高级」→「代理」,勾选Web代理(HTTP)和安全Web代理(HTTPS),地址填
localhost,端口填Mitmproxy的监听端口(默认8080),Mitmproxy运行期间不要关闭这个配置
Mitmproxy运行参数调整
- 用透明模式启动:MacOS下需要root权限,执行
sudo mitmproxy --mode transparent,透明模式无需手动给应用设代理,能自动拦截本地流量 - 指定监听地址:启动时加
--listen-host 0.0.0.0,避免Mitmproxy只监听127.0.0.1,适配不同本地网络接口的请求 - 重置TLS配置:如果之前改了
tls_version_client_min,先恢复默认,执行mitmproxy --set tls_version_client_min=TLS1_2(或直接不指定该参数),同时确认Mitmproxy的CA证书已正确安装到MacOS钥匙串,且设置为「始终信任」
本地网络与防火墙排查
- 解决localhost绕过代理问题:MacOS默认可能让localhost请求不走系统代理,要么把前端/后端的请求地址从
localhost改成127.0.0.1,要么在/etc/hosts里加一条127.0.0.1 localapp.test,用自定义域名访问应用;也可以检查networksetup -getwebproxy Wi-Fi的输出,确认代理规则包含localhost - 防火墙检查:临时关闭MacOS防火墙,或者在防火墙设置里允许Mitmproxy的网络权限,避免流量被拦截
- 查看调试日志:启动Mitmproxy时加
--log-level debug,执行mitmproxy --log-level debug,从终端日志里找请求被拒绝、TLS握手失败之类的错误信息,定位问题点
应用代码层配置检查
- Angular前端:排查代码里有没有硬编码跳过代理的逻辑,比如
HttpClient配置里的withCredentials或自定义代理规则;同时确认proxy.conf.json里的changeOrigin设为true,避免跨域问题导致请求不经过代理 - .NET后端:如果是后端接收的请求没被捕获,确认后端监听地址是
0.0.0.0而非127.0.0.1;如果是后端发起的出站请求,检查appsettings.json或代码里是否给HttpClient配置了正确的代理
内容的提问来源于stack exchange,提问作者Nashaf
相关产品推荐
相关产品推荐

