FiddlerCore с настройками прокси Selenium - PullRequest
0 голосов
/ 24 сентября 2019

Я использую FiddlerCore для захвата HTTP-трафика при выполнении тестов веб-интерфейса с Selenium (C #) ChromeDriver.Мне наконец удалось заставить его работать методом проб и ошибок, но мне нужна подсказка о том, почему мое решение работает, а логический способ (для меня) - нет.

Я настраиваю прокси-сервер Fiddler как:

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 не нужно маршрутизировать через соответствующую конечную точку и почемуэто даже работает, если это не прокси через безопасную оконечную точку?

...