勇哥注:
网上的教程都是教你怎么用Fiddle+浏览器来抓包;或者是怎么抓手机软件的包。
就是很少教你怎么来抓.net程序的包,特别是抓wcf的soap包、rest包。
下面的资料其实是Fiddle的官方文档的翻译。
https://docs.telerik.com/fiddler/configure-fiddler/tasks/configuredotnetapp
要允许 .NET Framework 自动连接到 Fiddler,请在启动 .NET 应用程序之前启动 Fiddler Classic。
要将 .NET 应用程序临时连接到 Fiddler Classic,请使用GlobalProxySelection类设置代理:
System.Net.WebRequest.DefaultWebProxy = new System.Net.WebProxy("127.0.0.1", 8888);
或者,在yourappname.exe.config文件中指定一个代理。
如果 .NET 应用程序在您当前的用户帐户中运行,请在配置部分中添加以下内容:
<configuration> <system.net> <defaultProxy> <proxy bypassonlocal="false" usesystemdefault="true" /> </defaultProxy> </system.net></configuration>
如果 .NET 应用程序在不同的用户帐户中运行(例如,Windows 服务),请编辑machine.config文件:
<!-- The following section is to force use of Fiddler Classic for all applications, including those running in service accounts --> <system.net> <defaultProxy> <proxy autoDetect="false" bypassonlocal="false" proxyaddress="http://127.0.0.1:8888" usesystemdefault="false" /> </defaultProxy></system.net>
或者,在单个 WebRequest 对象上手动指定代理:
objRequest = (HttpWebRequest)WebRequest.Create(url); objRequest.Proxy= new WebProxy("127.0.0.1", 8888);
注意:重要提示:无论其他设置如何,.NET 始终会绕过包含 localhost 的 URL 的 Fiddler Classic 代理。因此,不要使用 localhost,而是更改代码以引用计算机名称。例如:
此 URL 不会出现在 Fiddler 中:
http://localhost/X509SignCodeService/X509SigningService.asmx
此 URL 将出现在 Fiddler 中:
http://mymachine/X509SignCodeService/X509SigningService.asmx
配置 .NET Core 应用程序
通过命令行中的 netsh 工具设置代理,方法如下
有关此主题的更多信息,请参阅Netsh Docs
netsh winhttp set proxy 127.0.0.1:8888
要删除代理,请使用以下命令
netsh winhttp reset proxy
实现监控的时候,建议开个虚拟机,把Hosting运行在虚拟机上面。
然后修改客户端的代理方式为Fiddle的 127.0.0.1:8888,这样所有的通信都会先通过Fiddle,这样就可以被抓到了。
<system.net> <defaultProxy> <proxy autoDetect="False" bypassonlocal="False" proxyaddress="http://127.0.0.1:8888" usesystemdefault="False"/> </defaultProxy> </system.net>
下面的抓到的http,这个例子是wcf的rest服务。
另外,包过滤功能可以参考下面,以host地址的方式过滤
还有一个按进程过滤,貌似不行,反而什么都收不到。

