Как я могу открыть URL-адрес в веб-браузере (например, IE) и передать учетные данные
Я хочу открыть страницу, для которой требуется обычная проверка подлинности.
Я хочу передать основной заголовок проверки подлинности в браузер вместе с URL.
Как я могу это сделать?
Ответы
Ответ 1
С помощью заголовка вы можете:
string user = "uuuuuuu";
string pass = "ppppppp";
string authHdr = "Authorization: Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(user + ":" + pass)) + "\r\n";
webBrowserCtl.Navigate("http://example.com", null, null, authHdr);
учитывая, что это необходимо сделать для каждого запроса, более простой вариант для базового auth - просто:
webBrowserCtl.Navigate("http://uuuuuuu:[email protected]", null, null, authHdr);
Ответ 2
Вы можете попробовать старый формат "в URL", который разрешил это, но он небезопасен:
http(s)://username:[email protected]/resource.ext
Это предоставляет учетные данные, а IE отключил его, но он все равно может работать в других браузерах. Когда этот формат используется, учетные данные доступны для браузера, и он принимает решение отправить основной заголовок аутентификации в зависимости от того, как отвечает веб-сервер.
Ответ 3
Попробуйте использовать что-то вроде Watin
Здесь вы можете найти хорошие сообщения в блоге о Watin
.
Код выглядит так:
public void SearchForWatiNOnGoogle()
{
using (var browser = new IE("http://www.google.com"))
{
browser.TextField(Find.ByName("q")).TypeText("WatiN");
browser.Button(Find.ByName("btnG")).Click();
}
}
Ответ 4
Сначала проверьте этот код:
Dim result As String
Using wClnt As New Net.WebClient
wClnt.Credentials = New System.Net.NetworkCredential("username", "password")
Using strR As New IO.StreamReader(wClnt.OpenRead("http://ADDRESS_To_READ"))
result = strR.ReadToEnd
End Using
End Using
Если это не то, что вы ищете, проверьте этот пост, это может помочь:
Как мне войти на сайт с помощью WebClient?
Обновление
Таким образом, вы не открываете браузер. Просто запросить адрес, который вы хотите, и передать учетные данные.
Ответ 5
Элемент управления WebBrowser в .Net использует Internet Explorer в качестве браузера, поэтому, если вы не против использования IE, это код, который я написал. h5url - это URL, который вы хотите открыть в окне. В моей программе даже не отображается элемент управления браузером, это порождает экземпляр Internet Explorer с зарегистрированной веб-страницей.
using (WebBrowser WebBrowser1 = new WebBrowser())
{
String auth =
System.Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(_User + ":" + _Password));
string headers = "Authorization: Basic " + auth + "\r\n";
WebBrowser1.Navigate(h5URL, "_blank", null, headers);
}
Это открывает новый браузер с любыми заголовками, необходимыми для аутентификации, базовыми или другими.