是否有一种方法可以使用WebClient从密码保护的位置获取登录cookie,而不是Httprequest

本文关键字:登录 获取 位置 cookie Httprequest 密码保护 一种 WebClient 可以使 方法 是否 | 更新日期: 2023-09-27 17:50:16

我目前使用以下代码来获取网站的cookie:

      bool IsLoginSuccessful = false;
  try
  {
    //Get Token and Authorization URL
    HttpWebRequest wr = (HttpWebRequest)HttpWebRequest.Create("https://updates.site.com/download");
    wr.AllowAutoRedirect = true;
    WebResponse response = wr.GetResponse();
    response.Close();
    string data = response.ResponseUri.OriginalString;
    string ssoToken = data.Split('=')[1];
    string authData = String.Format("ssousername={0}&password={1}&site2pstoretoken={2}", username, password, ssoToken);
    string ssoServer = response.ResponseUri.Scheme + "://" + response.ResponseUri.Host;
    string ssoAuthUrl = "sso/auth";
    // now let's get our cookie for the download
    byte[] dataBytes = Encoding.UTF8.GetBytes(authData);
    string url = ssoServer + "/" + ssoAuthUrl;
    wr = (HttpWebRequest)HttpWebRequest.Create(url);
    //MyCookies is a CookieContainer I use to store the login cookies
    wr.CookieContainer = MyCookies;
    wr.Method = "POST";
    wr.ContentLength = dataBytes.Length;
    wr.ContentType = "application/x-www-form-urlencoded";
    Stream dataStream = wr.GetRequestStream();
    dataStream.Write(dataBytes, 0, dataBytes.Length);
    dataStream.Close();
    response = wr.GetResponse();
    response.Close();
    if (wr.CookieContainer.Count > 0)
    {
      IsLoginSuccessful = true;
    }
  }

我想知道是否有一种方法可以使用WebClient或从它继承的类,获得cookie而不是使用HttpRequest?

是否有一种方法可以使用WebClient从密码保护的位置获取登录cookie,而不是Httprequest

获取cookie而不是使用HttpRequest?

cookie是HttpRequest的一个属性:

int loop1, loop2;
HttpCookieCollection MyCookieColl;
HttpCookie MyCookie;
MyCookieColl = Request.Cookies;
// Capture all cookie names into a string array.
String[] arr1 = MyCookieColl.AllKeys;
// Grab individual cookie objects by cookie name. 
for (loop1 = 0; loop1 < arr1.Length; loop1++) 
{
   MyCookie = MyCookieColl[arr1[loop1]];
   Response.Write("Cookie: " + MyCookie.Name + "<br>");
   Response.Write ("Secure:" + MyCookie.Secure + "<br>");
   //Grab all values for single cookie into an object array.
   String[] arr2 = MyCookie.Values.AllKeys;
   //Loop through cookie Value collection and print all values. 
   for (loop2 = 0; loop2 < arr2.Length; loop2++) 
   {
      Response.Write("Value" + loop2 + ": " + Server.HtmlEncode(arr2[loop2]) + "<br>");
   }
}