正方教务系统分析——后续实现winform版
通过抓包发现登陆接口:http://202.200.206.54/(xxxx)/Default2.aspx 其中xxx中为随机字符串(安全码),每次访问都会出现xxx不同的字符串
分析发现并没有Cookie的影子。
验证码的接口:http://202.200.206.54/(xxx)/CheckCode.aspx?
由于没有Cookie Session所以通过C#模拟登陆后无法保持会话持续,经过了多次尝试
我猜想安全码 一致应该是作为登陆和保持会话持续的突破口。
经过验证 猜想正确
在访问时写死安全码 在请求头中也写死
调用其他成绩查询页面也继续按照格式写死
最后成功模拟登陆并调用返回课表
总结:目前本校所采用的正方系统通过随机生成的字符串来作为验证,并没有加入Cookie验证之类的机制。
后续完善Winform项目贴出代码
2018-8.16
今天完善了课表界面 并重新审视正方系统 发现3点
1.系统存在bug 通过带有安全码的地址模拟登陆后 复制其回传ref在另一台设备 get方法(xh=xx学号)可以绕过登陆
2.课表的接口 ViewState为必须提交参数 否则不返回课表内容,接下来将ViewState作为突破口 实现多账号查询课表功能
3.课表查询api :
http://202.200.206.54/ (安全码)/xskbcx.aspxxh=学号&xm=%D5%C5%C5%F4%B7%C9&gnmkdm=N121603
(经GB2312 URL解码后发现其中xm=表示姓名 居然是拼音缩写- - )
2018-8.16 22:55
实现抓取课表内容:
经过了一天的研究发现Viewstate每个账号是不一样的 写死之后没办法实现其他账号登陆 ,Viewstate内容经过base64编码的 解码后可以看到包括了网页的一些信息,除非拼接不变的字段并编码 为每次登陆构造不同的Viewstate 暂时放弃这样的作法
ViewSate转码后
t<-323048297;t<;l;>;l;i<2>;i<4>;i<7>;i<9>;i<11>;i<13>;i<15>;i<22>;i<26>;i<28>;i<30>;i<34>;i<36>;i<40>;>;l;l<12018-20191;>>;>;;>;t;l>;>;t;@<2017-2018;2016-2017;2015-2016;>;@<2017-2018;2016-2017;2015-2016;>>;l;>>;;>;t;>>;;>;t;l<学号:31512xxxx;>>;>;;>;t;l<姓名:xx;>>;>;;>;t;l<学院:x院;>>;>;;>;t;l<专业:计算机x院);>>;>;;>;t;l<行政班:计算x术(应院)x级x班;>>;>;;>;t<;l;i<3>;>;l;>;l;>;l;;>;>>;>>;t<;l;>;l;>;l;;>;>>;>>;>>;t<;l;>;l;;>;>>;t;l;>>;l;>;l;;>;>>;t<@0;l;i<0>;i<0>;l<>;>>;>;;;;;;;;;;>;;>;t<;l;>;l;>;l;l;i<2>;i<2>;l<>;>>;>;;;;;;;;;;>;l;>;l;i<2>;>;l;i<1>;i<2>;i<3>;i<4>;i<5>;i<6>;>;l;l<毕业设计;>>;>;;>;t;l<张x滨;>>;>;;>;t;l<14.0;>>;>;;>;t;l<03-15;>>;>;;>;t;l< \;;>>;>;;>;t;l< \;;>>;>;;>;t;l<全体教师;>>;>;;>;>>;t<;l;i<1>;i<2>;i<3>;i<4>;i<5>;i<6>;>;l;l<毕业实践;>>;>;;>;t;l<张x滨;>>;>;;>;t;l<2.0;>>;>;;>;t;l<01-02;>>;>;;>;t;l< \;;>>;>;;>;t;l< \;;>>;>;;>;t;l<全体教师;>>;>;;>;>>;>>;>>;>>;>>;t<@0;l;i<0>;i<0>;l<>;>>;>;;;;;;;;;;>;;>;t<;l;>;l;>;l;l;i<2>;i<2>;l<>;>>;>;;;;;;;;;;>;l;>;l;i<2>;>;l;i<1>;i<2>;i<3>;i<4>;>;l;l<2017-2018;>>;>;;>;t;l<2;>>;>;;>;t;l<毕业设计;>>;>;;>;t;l<张滨;>>;>;;>;t;l<14.0;>>;>;;>;>>;t<;l;i<1>;i<2>;i<3>;i<4>;>;l;l<2017-2018;>>;>;;>;t;l<2;>>;>;;>;t;l<毕业实践;>>;>;;>;t;l<张滨;>>;>;;>;t;l<2.0;>>;>;;>;>>;>>;>>;>>;>>;>>;>>;> DWǚ?T?j}
解决思路:
通过抓包分析 有一个GET方法( 默认获取本学期课表) api:http://202.200.206.54/(0hihwxiaj00gttv355z11o55)/xskbcx.aspx?xh="+act+"&xm="+xm+"&gnmkdm=N121603 xh=学号,xm=学年
只能曲线救国 放弃Posft查询的接口 (不能自由查询了), 通过此get 方式的api直接获取本学期的课表
-若本版本的系统有Cookie 就好解决了
2018-8.18
项目基本功能都差不多了
今天又获得了一些新思路:
先 GET 关键api发现源码里有Viewstate 这个是服务器响应的值 发现这个值和下一次POST的ViewState值一样
所以有了新的思路,每次Post前 先Get 获取源码之后解析HTML内容 抓出Viewstate 之后再Post出去,这样就解决了自由查询的问题,目前工作转为C#下解析HTML。
2018.8.18
通过昨晚的分析 今天对返回的Html下手 本来想用Nuget的三方开源的库 经过尝试报错:提示字符存在非法路径,所以最后无奈还是使用了头疼的“正则表达式” dDw([\S\\+]*)=
来获取课程表api的 Viewstate
获取后 进行二次编码 (调用System.Net.WebUtility.UrlEncode();方法实现) 转码后拼接在 data中 Post出去
接下来继续完善Winform的其他功能
正方教务系统分析——后续实现winform版相关推荐
- nodejs模拟登陆旧版正方教务系统
nodejs模拟登陆旧版正方教务系统 nodejs模拟登陆学校教务系统 1.分析教务系统地址 2.分析请求头和请求数据 3.对Cookie.__VIEWSTATE数据的获取 (1)获取cookie ( ...
- 我的第一个开源项目:Java爬虫爬取旧版正方教务系统课程表、成绩表
Java爬虫爬取旧版正方教务系统课程表.成绩表 一.项目展示 1.正方教务系统 首页 2.爬虫系统 首页: 成绩查询: 课表查询: 二.项目实现 1.爬取思路描述 无论是成绩查询或课表查询亦或者其它的 ...
- 针对正方教务开发大学App(查成绩,课表,一键评教,图书馆,正方系统)
针对正方教务开发大学App(查成绩,课表,一键评教--) 大一时针对我校开发的校园客户端,方便学生查课表.成绩.一卡通消费记录.失物招领等等.遵循MD设计原则,数据大多通过抓包获取,现开源(已屏蔽学校 ...
- 模拟登陆新版正方教务管理系统
写在前面 已经过了一年半,网站有所改版,目前是可以正常登录的,获取信息的那几个url不是直接返回JSON了,需要自己去解析数据. 引入 与很多高校一样,西安皇家邮电大学一直钟爱于正方教务管理系统. 前 ...
- python实现高校教务管理系统_Python实现新版正方教务系统爬虫
目录~ 引入 需要什么软件? 模拟登陆 代码实现(登陆) 模拟获取成绩 代码实现(获取成绩) 解析成绩 测试(完成图) 作者的话 引入 就在我刚刚写完旧版正方系统爬虫的时候(旧版正方系统爬虫代码) 学 ...
- python爬虫学校正方教务系统获取全部成绩
python爬虫正方教务系统许昌学院 来自许昌学院的大四小菜鸡,疫情封在宿舍,闲来无事在宿舍爬了一下之前没成功的教务系统爬虫,当时觉得挺难的,今天发现这个还是挺简单的,这个程序参考了很多前辈大佬们的程 ...
- Android 模拟登陆正方教务系统
茂名职业技术学院官网新闻APP 这是一个使用jsoup爬取茂职院官网和正方教务系统信息的app. 采用viewpager+fragment+tablayout结构,支持下拉刷新和上拉加载. 主要功能有 ...
- 用Python登陆新版正方教务系统获取课程表(及RSA加密密码实现)
前言 最近做一个微信小程序,需要登录教务系统.提前用python尝试一下登录接口,并获取到课表打印出来. 我们学校用到新版正方教务系统,长这个样子. 相比旧版的教务系统,唯一好处是不用输入二维码方便爬 ...
- 正方教务系统——用Postman优雅的选课
一.引言 由于每个学期开学都要在学校的土豆服务器上进行抢课大战(总抢不到),我对学校的教务系统(正方教务系统V-8.1.3)早已深恶痛绝,因此,去年用python模拟登陆(selenium)写了个网课 ...
最新文章
- Linux改变输出字体颜色,linux下 C编程改变输出字体颜色
- 第十一章 串 (b2)蛮力匹配
- linux 段大小,linux - 在套接字上的Linux中减少TCP最大段大小(MSS) - 堆栈内存溢出...
- django 数据库中中文转化为汉语拼音
- python获取依赖包和安装依赖包
- 从开源视角分析,搞定边缘计算云原生方案选型
- 你所不知道的mybatis居然也有拦截器
- php在哪改缩略图的大小,Thinkphp自定义生成缩略图尺寸的方法
- DBCC--SQLPERF
- JWT结合Springboot+shiro,session、token同时存在来应对不同的业务场景(物联网设备管理及开放api)...
- 《Android框架揭秘》——2.1节主机环境构成
- 牛客网华为机试题整理
- 技术族谱:软件开发相关知识体系的整理心得(图)
- 乐嘉性格色彩-4色特性,学习感悟
- 用python做一个好玩的数字炸弹游戏
- (附源码)pringboot餐饮点餐系统 毕业设计301749
- ne_comment 表
- 2018航电多校练习第9场-快速幂
- 利用计算机建模的优点,论计算机技术在数学建模领域的应用
- Python中uniform的用法