学信网模拟登录2

 登录地址https://account.chsi.com.cn/passport/login?service=http%3A%2F%2Fmy.chsi.com.cn%2Farchive%2Fj_spring_cas_security_check

1.发现页面在初始化的时候就创建的cookie,然后页面提交的时候会一起认真是否是合法的。

用这个来存储cookie的值

/// <summary>
/// 请求注入的cookie
/// </summary>
public CookieContainer requestcookie = new CookieContainer();

/// <summary>
/// 返回的cookie
/// </summary>

public CookieCollection reponsecookie = new CookieCollection();

reponsecookie = response.Cookies;
requestcookie = new CookieContainer();
foreach (Cookie cookie in response.Cookies)
{
requestcookie.Add(cookie);
}

 

2.然后来看看他需要提交什么信息,有时候还会出现name="captcha",这个是验证码的文本框。

3.提交页面提交的时候会提交下面提交参数

4.页面进行好几次302,然后在这个过程中有变化cookie 的值,所以这个时候要小心了,然后你做的时候登录成功了,但是你没有更新cookie的值,到时候在去访问其他页面的时候会显示未登录,所以你最后还要用

//获取新的cookie
requestcookie = request.CookieContainer;
string strHeadersCookies = request.Headers["Cookie"];
if (!string.IsNullOrWhiteSpace(strHeadersCookies))
{
string[] arrHeadersCookie = strHeadersCookies.Split(';');
//reponsecookie = response.Cookies;
//foreach (var strCookie in arrHeadersCookie)
///因为里面存储的是最新的在前面,所以要想要旧的cookie冲掉就要从后面获取。
for (int cookiecount = arrHeadersCookie.Length - 1; cookiecount >= 0; cookiecount--)
{
string[] strsplitcookie = arrHeadersCookie[cookiecount].Split('=');
string cookiename=strsplitcookie[0].Trim(' ');
string cookievalue=strsplitcookie[1].Trim(' ');
Cookie cookie = new Cookie(cookiename, cookievalue, "", response.ResponseUri.Host);
reponsecookie.Add(cookie);
}
}

 回来更新你存储的cookie,

这样就登录成功了。

原文地址:https://www.cnblogs.com/zhian/p/6116334.html