web-dev-qa-db-fra.com

Comment puis-je ouvrir une URL dans un navigateur Web (tel que IE) et transmettre des informations d'identification

Je souhaite ouvrir une page nécessitant une authentification de base. Je souhaite transmettre l'en-tête d'authentification de base au navigateur, ainsi que l'URL.

Comment puis je faire ça?

16
Erik Sapir

Via un en-tête, vous pouvez:

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);

étant donné que cela doit être fait sur demande, une option plus simple pour l’authentification de base consiste à:

webBrowserCtl.Navigate("http://uuuuuuu:[email protected]", null, null, authHdr);
14
Alex K.

Vous pouvez essayer l'ancien format "en URL" qui permettait cela mais ce n'est pas sûr:

http(s)://username:password@server/resource.ext

Cela expose les informations d'identification et IE l'a désactivé , mais cela peut toujours fonctionner dans d'autres navigateurs. Lorsque ce format est utilisé, les informations d'identification sont disponibles pour le navigateur. Il prend la décision d'envoyer l'en-tête d'authentification de base en fonction de la réponse du serveur Web. 

6
Brian Lyttle

Essayez d’utiliser quelque chose comme WatinIci vous pouvez trouver de bons articles sur votre blog à propos de Watin.

Le code ressemble à:

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();
  }
}
2
oxilumin

Le contrôle WebBrowser dans .Net utilise Internet Explorer comme navigateur. Par conséquent, si vous voulez bien utiliser IE, voici le code que j'ai écrit. h5url est l'URL que vous souhaitez ouvrir dans une fenêtre. Mon programme ne montre même pas de contrôle de navigateur, il s'agit d'une instance d'Internet Explorer avec la page Web connectée.

     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);

            }

Cela ouvre un nouveau navigateur avec tous les en-têtes dont vous avez besoin pour l'authentification, de base ou autre.

0
Billy Willoughby

Vérifiez d'abord ce code:

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

Si ce n’était pas ce que vous recherchiez, vérifiez ce post, cela peut aider:

Comment me connecter à un site avec WebClient?

Mise à jour :

De cette façon, vous n'ouvrez aucun navigateur. Il suffit de demander l'adresse que vous voulez et de transmettre des informations d'identification. 

0
Afshin Gh