BJFU 教务系统登录原理及实现方案
- 只针对强智教务系统
- 只针对我校
- 只针对 http://newjwxt.bjfu.edu.cn/jsxsd(免验证码验证)。
- http://newjwxt.bjfu.edu.cn 不太一样(需要验证码,还包含了加密)
- [可能]对你有帮助,哪怕一丝丝灵感
一、登录原理
以下是教务系统的登录原理
-
打开 综合教务管理系统-强智科技,也就是我们的登录页面/未认证页面。这里请求/jsxsd(我们暂且理解为根路径)其实也返回了一个 cookie,但是我不知道这个 cookie 有什么用(一个大佬建议我去研究研究http协议,以及cookie和session究竟是如何工作的,被大佬嫌菜了 😢)
-
输入账号密码以后提交表单,发送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)
}
})
}

浙公网安备 33010602011771号