Как я могу открыть 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);

            }

Это открывает новый браузер с любыми заголовками, необходимыми для аутентификации, базовыми или другими.