马上就来

马上就来

BJFU 教务系统登录原理及实现方案

  1. 只针对强智教务系统
  2. 只针对我校
  3. 只针对 http://newjwxt.bjfu.edu.cn/jsxsd(免验证码验证)。
  4. http://newjwxt.bjfu.edu.cn 不太一样(需要验证码,还包含了加密)
  5. [可能]对你有帮助,哪怕一丝丝灵感

一、登录原理

以下是教务系统的登录原理

  1. 打开 综合教务管理系统-强智科技,也就是我们的登录页面/未认证页面。这里请求/jsxsd(我们暂且理解为根路径)其实也返回了一个 cookie,但是我不知道这个 cookie 有什么用(一个大佬建议我去研究研究http协议,以及cookie和session究竟是如何工作的,被大佬嫌菜了 😢)

  2. 输入账号密码以后提交表单,发送post请求,这里请求地址是 http://newjwxt.bjfu.edu.cn/jsxsd/xk/LoginToXk,这个地址就是我们登录认证的接口。

    请求头

    账号和密码以Form Data 的形式传向服务端

我们可以直接看网页源代码。大概思路是点击提交表单,先校验不为空,再发送请求提交。

function submitForm1(){ 
    try{
        var xh = document.getElementById("Form1").USERNAME;
        var pwd = document.getElementById("Form1").PASSWORD; 

        if(xh.value==""){
            alert('用户名不能为空!');
            return false;
        }
        if(pwd.value==""){
            alert('密码不能为空!');
            return false;
        } 
        //	var jzmmid = document.getElementById("Form1").jzmmid;   

        document.getElementById("Form1").action="/jsxsd/xk/LoginToXk";
        document.getElementById("Form1").submit();

    }catch(e){
        alert(e.Message); 
    }
}

如果校验成功,返回302状态码,表示重定向。就会自动跳转到响应头返回的 Location,我们就完成登录了

同时返回的 Set-Cookie 也是我们后面真正要用到的 cookie

如果返回200,则表示校验失败。

则会返回新的包含错误提示的新的HTML(服务端渲染,绝对的老项目了)

二、模拟登陆实现方案

我们的目的是完成认证,获取 cookie 从未获得各种权限。认证成功以后返回 set-cookie 的字段,浏览器就会自动帮我们存储cookie了。

由于我的小伙伴们用的是微信小程序,使用了微信自带的 wx.request,代码如下

 login: function() {
     wx.request({
         url: 'http://newjwxt.bjfu.edu.cn/jsxsd/xk/LoginToXk',
         method: 'POST',
         header: {
             'content-type': 'application/x-www-form-urlencoded'
         },
         data: "USERNAME=" + this.data.id + "&PASSWORD=" + this.data.password, //仿照form-data格式
         success:res=>{
             console.log(res)
         }
     })
 }
posted @ 2022-02-12 22:45  coder-chin  阅读(741)  评论(0)    收藏  举报