Proxy 如何设置FiddlerCore来监控所有系统流量?

Proxy 如何设置FiddlerCore来监控所有系统流量?,proxy,network-monitoring,fiddlercore,Proxy,Network Monitoring,Fiddlercore,我们正在评估FiddlerCore的用例。基本上,现在我们只想捕获系统上请求的所有端点/URL。这在Fiddler中运行良好,没有问题。但我们只想在某个供应商的软件打开时捕获它们。因此,我们想为该软件编写一个插件,该插件将在启动时运行,然后在退出时退出。因此,使用FiddlerCore(希望如此) 作为概念证明,我只是制作了一个简单的应用程序,一个带有文本框的表单,它应该将每个url附加到文本框中。尽可能简单。然而,它什么也没做。我运行应用程序,然后刷新浏览器中的页面,然后。。。没什么 这是我的

我们正在评估FiddlerCore的用例。基本上,现在我们只想捕获系统上请求的所有端点/URL。这在Fiddler中运行良好,没有问题。但我们只想在某个供应商的软件打开时捕获它们。因此,我们想为该软件编写一个插件,该插件将在启动时运行,然后在退出时退出。因此,使用FiddlerCore(希望如此)

作为概念证明,我只是制作了一个简单的应用程序,一个带有文本框的表单,它应该将每个url附加到文本框中。尽可能简单。然而,它什么也没做。我运行应用程序,然后刷新浏览器中的页面,然后。。。没什么

这是我的程序的全部(未生成的)代码

using Fiddler;
using System;
using System.Windows.Forms;

namespace ScratchCSharp {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();

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

        private void FiddlerApplication_AfterSessionComplete(Session s) {
            textBox1.Invoke((Action)delegate () {
                AddText(s.fullUrl);
            });
        }

        public void AddText(string text) {
            textBox1.Text += $"{text}\n";
        }
    }
}
再仔细查看一下,我看到
FiddlerApplication.IsSystemProxy
正在返回
false
。似乎与设置为系统代理的启动标志不再有效有关,它告诉您现在使用Telerik.NetworkConnections.NetworkConnectionManager将其设置为系统代理。但我找不到任何地方真正说明如何做到这一点。我能找到的最接近的东西似乎是他们对这个问题的官方答案。然而,这只是讨论了他们为什么不赞成国旗,以及他们如何设计其替代品的想法,而不是实际讨论如何使用替代品。演示应用程序也不使用这些库(可能是它也不捕获任何内容的原因)

不过,最大的问题是NetworkConnectionsManager类没有公共构造函数,因此无法创建实例。它是不可继承的,因此不能创建子类实例。它上面的所有方法都是实例方法,而不是静态/共享的。库中似乎没有方法可以为您创建NetworkConnectionsManager实例

因此,尽管该类被明确设计为用作实例(因此方法不是
静态的
/
共享的
),但实际上似乎没有任何方法来创建实例


关于如何设置此功能以捕获系统上所有传出URL的任何帮助?

您可以使用以下代码启动Fiddler Core并将其注册为系统代理:

FiddlerCoreStartupSettings启动设置=
新的FiddlerCoreStartupSettingsBuilder()
.ListenPort(fiddlerCoreListenPort)
.RegisterAsystemProxy()
.ChainToUpstreamGateway()
.ssl()
.threadpool()
.Build();
FiddleApplication.Startup(启动设置);
有些方法目前已经过时,但我建议继续使用它们,直到NetworkConnectionManager API得到改进和最终确定


此外,还有一个示例应用程序(FiddlerCore安装程序安装在桌面上),它对于开发的起点非常有用。

您可以使用以下代码启动Fiddler Core并将其注册为系统代理:

FiddlerCoreStartupSettings启动设置=
新的FiddlerCoreStartupSettingsBuilder()
.ListenPort(fiddlerCoreListenPort)
.RegisterAsystemProxy()
.ChainToUpstreamGateway()
.ssl()
.threadpool()
.Build();
FiddleApplication.Startup(启动设置);
有些方法目前已经过时,但我建议继续使用它们,直到NetworkConnectionManager API得到改进和最终确定

另外,还有一个示例应用程序(FiddlerCore安装程序安装在桌面上),它对于开发的起点非常有用