C# PhantomJSDriver с прокси-сервером Fiddler и HTTP-аутентификацией: трафик не перехвачен

Я пытаюсь перейти к приложению на локальном узле, которое требует проверки подлинности с использованием PhantomJSDriver и передачи имени пользователя: пароля в URL. Для получения кодов ответов я использую прокси-сервер Fiddler из примера Джима Эвана https://github.com/jimevans/WebDriverProxyExamples.

PhantomJSDriver успешно перемещается (используя NTLM/Basic auth), но Fiddler не перехватывает трафик.

public static int NavigateTo(this IWebDriver driver, string targetUrl, TimeSpan timeout, bool printDebugInfo)
{
    int responseCode = 0;
    DateTime endTime = DateTime.Now.Add(timeout);
    SessionStateHandler responseHandler = delegate(Session targetSession)
    {
        if (targetSession.responseCode >= 300 && targetSession.responseCode < 400)
        {
            targetUrl = targetSession.GetRedirectTargetURL();
        }
        else
            responseCode = targetSession.responseCode;
    };

    // Attach the event handler, perform the navigation, and wait for
    // the status code to be non-zero, or to timeout. Then detach the
    // event handler and return the response code.
    FiddlerApplication.AfterSessionComplete += responseHandler;
    driver.Url = targetUrl;
    while (responseCode == 0 && DateTime.Now < endTime)
    {
        System.Threading.Thread.Sleep(100);
    }

    FiddlerApplication.AfterSessionComplete -= responseHandler;
    return responseCode;
}

Мне удалось захватить трафик при использовании ChromeDriver с тем же приложением, а также для веб-сайта, который не требует аутентификации с использованием PhanotmJSDriver. Единственный сценарий, в котором он не работает - это сайт аутентификации PhantomJSDriver +.

Обновление: я обнаружил проблему благодаря Dead Link http://docs.telerik.com/fiddler/observe-traffic/troubleshooting/notraffictolocalhost/ устранение неисправностей/notraffictolocalhost/. Это не имело ничего общего с аутентификацией, а скорее с получением трафика от localhost.

Решением было использовать имя локальной машины вместо localhost в URL.

1 ответ

Решение

Я обнаружил проблему благодаря http://docs.telerik.com/fiddler/observe-traffic/troubleshooting/notraffictolocalhost/. Это не имело ничего общего с аутентификацией, а скорее с получением трафика от localhost. Я не уверен, почему, но, похоже, комбинация использования PhantomJSDriver для перехода к локальному URL и Fiddler для захвата трафика не сработала.

Решение состояло в том, чтобы использовать локальное ИМЯ МАШИНЫ вместо "localhost" в URL.

Другие вопросы по тегам