抓取调试中C#项目发出的网络请求

场景

在win10 VS2022上试了一下调试ProwlarrFlareSolverr,想搞懂为什么docker上跑着的这两容器在某一两个pt站上不能成功过CF的5秒盾,需要抓下包确认下请求头是否设置无误。

尝试

想从VS里面直接抓包,一些旧版VS在性能查看器那里是有关于网络的,从某个版本开始也移除了这个功能,没有网络了。

打开了wireshark从网卡当然可以抓到所有包,但请求都是https,用改环境变量让chrome记录ssllog接着wireshark去读它然后解密的方法,只适用于浏览器,对IDE调试没用。想走一样的思路让IDE去记录调试中网络连接的私钥,也没能搜到相关的内容。

于是我打开了fiddler,fiddler是代理中间人的模式,肯定能解https,可是调试时却发现没能抓到任何一个VS的包,浏览器的包倒是能抓到,原因是vs发出的网络请求没从fiddler代理的8888端口经过。

接着便是修改VS的设置让VS从8888走代理,搜了一下发现2022版本好像是没有代理服务器设置的,旧版是有的,某个版本开始也移除了。

最后用netsh修改WinHTTP的代理,然后重启VS,问题得到了解决。

解决方案

设置代理:

1
netsh winhttp set proxy 127.0.0.1:8888

重置:

1
netsh winhttp reset proxy

引用

wireshark https抓包

Introducing Visual Studio’s Network tool

Configure .NET Core Applications