如何使用FiddlerCore捕获数据?

Ldg*_*Ldg 5 c# browser get fiddler fiddlercore

我正在用c#开发一个程序,它允许我捕获WebBrowser1发出的请求.

我的问题是"请求数据"始终为空.我不明白我在哪里放"webBrowser1.Navigate"命令.

现在我的代码如下.

private void button3_Click(object sender, EventArgs e)
{
    webBrowser1.ScriptErrorsSuppressed = true;
    WebProxy myProxy = new WebProxy();
    Uri newUri = new Uri("http://localhost:8888");
    myProxy.Address = newUri;

    Fiddler.FiddlerApplication.Startup(8888, false, false);

    List<Fiddler.Session> oAllSessions = new List<Fiddler.Session>();

    webBrowser1.Navigate("http://www.youtube.com/");
    while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
    {
        System.Windows.Forms.Application.DoEvents();
    }

    Fiddler.FiddlerApplication.BeforeRequest += delegate(Fiddler.Session oS)
    {
        Monitor.Enter(oAllSessions);
        oAllSessions.Add(oS);
        Monitor.Exit(oAllSessions);
    };

    var message = string.Join(Environment.NewLine, oAllSessions);
    MessageBox.Show(message);

    Fiddler.FiddlerApplication.Shutdown();

}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

Eri*_*Law 3

您指的“请求数据”是什么?

这里的核心问题是您使用false参数调用Startup,这表明 Fiddler 根本没有成为任何进程的代理,因此您永远不会看到任何数据,除非您直接向该代理实例发送 HTTP 请求。

如果您的目标是捕获来自此应用程序且仅此应用程序的流量,请致电

URLMonInterop.SetProxyInProcess("127.0.0.1:8888", "<-loopback>");

启动代理实例后。这会将当前进程的 WinINET 代理设置设置为指向您已启动的 FiddlerCore 实例。