- A+
所属分类:PHP
文章目录
偶然发现正方教务系统是支持金智统一认证登录的 /sso/jziotlogin
我们学校也接入了(但是没有公开,大家一直都用着教务系统的另一套密码登录,真心无语)
流程分析
登录完统一认证平台,然后访问 /sso/jziotlogin
,看到了一堆 302 /login?service=
是金智的授权页面,会自动认证,然后把 ticket 带回 service
然后就是教务系统自己的一堆 302,点开查看头信息可以看到很多 Set-Cookie,这就是我们要的东西了,但是要注意 JSESSIONID 是会变的,我们要保留最后一次的 JSESSIONID
代码编写
我们使用上一篇获取到的统一认证 cookie 去得到 ticket(携带 cookie 访问 /login?service=
页面并从头信息 Location 中提取 ticket)
这里一定要把 FollowLocation 设置为 false 然后自行处理 302,因为 curl 不会处理保留每次跳转的 Set-Cookie
循环访问,从 header 中提取每次跳转 url 以及 cookie 并处理,直到跳转至主页面,最后一次的 cookie 就能正常访问教务系统啦
登录效果如下,成功获取 cookie 并获取空教室信息
完整代码就不贴了,已经讲得很详细了。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫