是否有一种方法可以使用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?
获取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>");
}
}