获取HTTP请求和响应使用的HttpWebRequest / HttpWebResponse在提琴手

2019-07-19 07:24发布

有没有什么办法可以勾小提琴手来捕获使用.NET HttpWebRequest和HttpWebResponse提出的请求和响应?

Answer 1:

小提琴手常见问题给出了答案。

你基本上是借道提琴手(即使用Fiddler作为代理)的HTTP流量。

下面是一些链接,这将有助于:
提琴手Web调试-配置客户端

这反过来又链接到这里:
就拿负担关闭用户与自动配置在.NET

您可以通过在web.config文件(ASP.NET应用程序)的一些配置设置,像这样实现这一点:

<system.net>
  <defaultProxy>
    <proxy
      proxyaddress="http://[your proxy address and port number]"
      bypassonlocal="false"
    />
  </defaultProxy>
</system.net>

见这里有关完整的详细信息<defaultProxy>设置。

另外,您也可以使用像在代码中使用一个WebProxy对象:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[ultimate destination of your request]");
WebProxy myproxy = new WebProxy("[your proxy address]", false);
request.Proxy = myproxy;
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse) request.GetResponse();

见这里对WebProxy类的完整细节。

还要注意,在提琴手常见问题解答中提到的重要的“警告”:

为什么我看不到发送到交通的http://本地主机或http://127.0.0.1 ?
IE7和.NET Framework是硬编码不经过代理服务器发送请求的本地主机,并作为代理,提琴手不会收到这样的交通。

解决方法是使用你的机器名作为主机名而不是本地主机或127.0.0.1。 所以,举例来说,而不是打的http://本地主机:8081 / mytestpage.aspx ,而不是访问的http://机器:8081 / mytestpage.aspx 。

...或者,如果你使用的提琴手v2.1.8或更高版本,只需使用HTTP://ipv4.fiddler打IPv4的适配器在本地主机上,或使用HTTP://ipv6.fiddler打本地主机IPv6的适配器上。 这个效果特别好与Visual Studio测试Web服务器(代号:卡西尼),因为测试服务器只监听IPv4的环回适配器上。

最后,你可以自定义规则文件,如下所示:

  static function OnBeforeRequest(oSession:Fiddler.Session) { if (oSession.HostnameIs("MYAPP")) { oSession.host = "127.0.0.1:8081"; } } 

...然后只需点击HTTP:// MYAPP ,这将作为一个别名127.0.0.1:8081。



Answer 2:

如果你不能, Wireshark的是一个类似的工具,在网络硬件水平的作品,因此它可以从任何应用程序捕获网络流量。

Wireshark是不是提琴手更复杂一点,更普遍的,但它是一个伟大的工具,在你的工具箱,值得研究了一些时间到。



Answer 3:

如果你能够修改请求URI,它是localhost然后有一个更简单的解决方案:更换主机名localhost.fiddler

这对设置代理没有依赖性(是否设置HttpWebRequest.Proxy<defaultProxy>在一个元件.config文件)。

(从在评论这个问题 。)



文章来源: Get HTTP requests and responses made using HttpWebRequest/HttpWebResponse to show in Fiddler