FiddlerCore:如何正确使用系统代理?

FiddlerCore: how to use system proxy right?

我想嗅探浏览器的一些 https 流量。我的网络设置使用代理配置 "Use automatic configuration script: 'http://proxyconf-domain.net/'"

现在我的代码如下所示:

FiddlerApplication.AfterSessionComplete += FiddlerApplicationOnAfterSessionComplete;

FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Default);

...

private void FiddlerApplicationOnAfterSessionComplete(Session oSession)
{
    if (oSession.LocalProcessID == 22228)
    {
        Console.WriteLine("Chrome Traffic");
    }
}

问题: 启动后我的系统代理设置丢失,因此浏览器无法连接到互联网,我必须手动重置它们。但我希望 FiddlerCore 像 Fiddler App 一样工作。

FiddlerCoreStartupFlags.Default 具有 RegisterAsSystemProxy 标志。 Fiddler 应用程序具有相同的设置: FiddlerSettings 但是 Fiddler 应用程序正在捕获流量并且浏览器保留其代理设置。

我是否必须读取系统代理并在我的代码中为 FiddlerCore 或其他东西设置它?

After Startup my system proxy settings are lost so the browser cannot connect to internet and i have to reset them manually. But i want FiddlerCore to work like the Fiddler App.

这是因为您在程序退出时没有调用Shutdown()方法。调用 Shutdown() 告诉 FiddlerCore 停止监听指定端口,并且 注销系统代理。例如:

    FiddlerApplication.AfterSessionComplete += FiddlerApplicationOnAfterSessionComplete;
    FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Default);
    ...

    //when your program exits
    Fiddler.FiddlerApplication.Shutdown();
    ...

在许多情况下,您最好直接调用 Fiddler.FiddlerApplication.oProxy.Detach()