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.