具有Selenium代理设置的FiddlerCore

时间:2019-09-24 09:17:44

标签: c# selenium https proxy fiddlercore

在使用Selenium(C#)ChromeDriver执行Web UI测试时,我使用FiddlerCore捕获HTTP通信。我终于设法通过反复试验使它正常工作,但是需要提示我的解决方案为何起作用,而对我而言,逻辑方法却行不通。

我将提琴手代理配置为:

CONFIG.IgnoreServerCertErrors = false;

FiddlerApplication.Prefs.SetBoolPref("fiddler.network.streaming.abortifclientaborts", true);

var startupSettings =
    new FiddlerCoreStartupSettingsBuilder()
        .ListenOnPort(0)
        .DecryptSSL()
        .OptimizeThreadPool()
        .Build();

FiddlerApplication.Startup(startupSettings);
HttpPort = FiddlerApplication.oProxy.ListenPort;
FiddlerApplication.Log.LogFormat("Created HTTP endpoint listening on port {0}", HttpPort);

secureEndpoint = FiddlerApplication.CreateProxyEndpoint(HttpsPort, true, Host);
if (secureEndpoint != null)
{
    HttpsPort = secureEndpoint.ListenPort;
    FiddlerApplication.Log.LogFormat("Created secure endpoint listening on port {0}, using a HTTPS certificate for '{1}'",HttpsPort, Host);
}

CertMaker.trustRootCert();

这基本上遵循为FiddlerCore提供的演示项目。请注意,该代理未注册为系统代理。

然后,将ChromeDriver配置为:

var chromeDriverService = ChromeDriverService.CreateDefaultService();
chromeDriverService.HideCommandPromptWindow = true;

var options = new ChromeOptions();
options.Proxy = new Proxy()
{
    HttpProxy = $"{SkicoProxy.Host}:{SkicoProxy.HttpPort}",
    SslProxy = $"{SkicoProxy.Host}:{SkicoProxy.HttpPort}"
};
_driver = new ChromeDriver(chromeDriverService, options);

什么是行不通的,尽管我希望它是:

options.Proxy = new Proxy()
{
    HttpProxy = $"{SkicoProxy.Host}:{SkicoProxy.HttpPort}",
    SslProxy = $"{SkicoProxy.Host}:{SkicoProxy.HttpsPort}" // HTTPS PORT INSTEAD HTTP PORT
};

不过,如果我没有在Fiddler中配置端点,则SSL网站在Chrome中显示为不安全。

为什么不需要通过相应的端点路由SSL流量,如果没有通过安全的端点代理SSL流量,为什么还要起作用?

0 个答案:

没有答案