抓取调试中C#项目发出的网络请求
场景
在win10 VS2022上试了一下调试Prowlarr和FlareSolverr,想搞懂为什么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 |