zoukankan      html  css  js  c++  java
  • 学信网模拟登录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,

    这样就登录成功了。

  • 相关阅读:
    DSP 知识点
    JVM中的垃圾收集
    MyBatis中的命名空间namespace的作用
    Gradle各版本下载地址
    redis学习笔记
    Mybaties 的缓存
    zookeeper配置集群报错Mode: standalone
    ZooKeeper 典型应用场景
    Linux下搭建mongDB环境
    关系型数据库三范式
  • 原文地址:https://www.cnblogs.com/zhian/p/6116334.html
Copyright © 2011-2022 走看看