.NET 7控制台应用无法连接Fiddler抓包,SSL请求失败求助
.NET 7控制台应用连接Fiddler解决SSL失败及抓包问题
针对你的情况,需要补充以下配置来解决SSL请求失败并正常抓包:
1. 信任Fiddler的HTTPS根证书
.NET 7默认不会信任Fiddler生成的自签名证书,需手动导入信任:
- 打开Fiddler,依次点击 Tools > Options > HTTPS
- 勾选
Capture HTTPS CONNECTs和Decrypt HTTPS traffic,点击Actions > Export Root Certificate to Desktop,将证书导出到桌面(文件名通常为FiddlerRoot.cer) - 以管理员身份打开CMD,执行以下命令导入证书:
# 清理可能冲突的本地开发证书 dotnet dev-certs https --clean # 将Fiddler证书导入系统根证书存储(替换为你的证书实际路径) certutil -addstore -f "ROOT" C:\Users\你的用户名\Desktop\FiddlerRoot.cer
2. 配置应用跳过SSL证书验证(仅测试环境使用)
Fiddler解密HTTPS请求时会替换证书,.NET默认的证书验证会失败,可通过以下方式禁用验证:
方式1:通过代码配置HttpClient
在创建HttpClient时添加证书验证回调:
var handler = new HttpClientHandler(); // 跳过证书验证(生产环境禁止使用) handler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => true; var httpClient = new HttpClient(handler);
方式2:通过配置文件设置
在appsettings.json中添加以下配置:
{ "HttpClient": { "Handler": { "ServerCertificateCustomValidationCallback": "IgnoreCertificateError" } } }
3. 确认代理配置的有效性
如果使用appsettings.json而非exe.config,可将代理配置移至appsettings.json(.NET 7优先读取此配置):
{ "System.Net": { "DefaultProxy": { "ProxyAddress": "http://127.0.0.1:8888", "BypassOnLocal": false, "UseSystemDefault": false } } }
同时确认Fiddler的监听端口为8888(在Tools > Options > Connections中查看),与配置一致。
4. 重启验证
完成上述配置后,先关闭Fiddler和控制台应用,重新打开Fiddler,再启动应用即可正常抓取HTTPS请求。
内容的提问来源于stack exchange,提问作者user1255637
相关产品推荐
相关产品推荐

