通过抓包发现登陆接口: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版相关推荐

  1. nodejs模拟登陆旧版正方教务系统

    nodejs模拟登陆旧版正方教务系统 nodejs模拟登陆学校教务系统 1.分析教务系统地址 2.分析请求头和请求数据 3.对Cookie.__VIEWSTATE数据的获取 (1)获取cookie ( ...

  2. 我的第一个开源项目:Java爬虫爬取旧版正方教务系统课程表、成绩表

    Java爬虫爬取旧版正方教务系统课程表.成绩表 一.项目展示 1.正方教务系统 首页 2.爬虫系统 首页: 成绩查询: 课表查询: 二.项目实现 1.爬取思路描述 无论是成绩查询或课表查询亦或者其它的 ...

  3. 针对正方教务开发大学App(查成绩,课表,一键评教,图书馆,正方系统)

    针对正方教务开发大学App(查成绩,课表,一键评教--) 大一时针对我校开发的校园客户端,方便学生查课表.成绩.一卡通消费记录.失物招领等等.遵循MD设计原则,数据大多通过抓包获取,现开源(已屏蔽学校 ...

  4. 模拟登陆新版正方教务管理系统

    写在前面 已经过了一年半,网站有所改版,目前是可以正常登录的,获取信息的那几个url不是直接返回JSON了,需要自己去解析数据. 引入 与很多高校一样,西安皇家邮电大学一直钟爱于正方教务管理系统. 前 ...

  5. python实现高校教务管理系统_Python实现新版正方教务系统爬虫

    目录~ 引入 需要什么软件? 模拟登陆 代码实现(登陆) 模拟获取成绩 代码实现(获取成绩) 解析成绩 测试(完成图) 作者的话 引入 就在我刚刚写完旧版正方系统爬虫的时候(旧版正方系统爬虫代码) 学 ...

  6. python爬虫学校正方教务系统获取全部成绩

    python爬虫正方教务系统许昌学院 来自许昌学院的大四小菜鸡,疫情封在宿舍,闲来无事在宿舍爬了一下之前没成功的教务系统爬虫,当时觉得挺难的,今天发现这个还是挺简单的,这个程序参考了很多前辈大佬们的程 ...

  7. Android 模拟登陆正方教务系统

    茂名职业技术学院官网新闻APP 这是一个使用jsoup爬取茂职院官网和正方教务系统信息的app. 采用viewpager+fragment+tablayout结构,支持下拉刷新和上拉加载. 主要功能有 ...

  8. 用Python登陆新版正方教务系统获取课程表(及RSA加密密码实现)

    前言 最近做一个微信小程序,需要登录教务系统.提前用python尝试一下登录接口,并获取到课表打印出来. 我们学校用到新版正方教务系统,长这个样子. 相比旧版的教务系统,唯一好处是不用输入二维码方便爬 ...

  9. 正方教务系统——用Postman优雅的选课

    一.引言 由于每个学期开学都要在学校的土豆服务器上进行抢课大战(总抢不到),我对学校的教务系统(正方教务系统V-8.1.3)早已深恶痛绝,因此,去年用python模拟登陆(selenium)写了个网课 ...

最新文章

  1. Linux改变输出字体颜色,linux下 C编程改变输出字体颜色
  2. 第十一章 串 (b2)蛮力匹配
  3. linux 段大小,linux - 在套接字上的Linux中减少TCP最大段大小(MSS) - 堆栈内存溢出...
  4. django 数据库中中文转化为汉语拼音
  5. python获取依赖包和安装依赖包
  6. 从开源视角分析,搞定边缘计算云原生方案选型
  7. 你所不知道的mybatis居然也有拦截器
  8. php在哪改缩略图的大小,Thinkphp自定义生成缩略图尺寸的方法
  9. DBCC--SQLPERF
  10. JWT结合Springboot+shiro,session、token同时存在来应对不同的业务场景(物联网设备管理及开放api)...
  11. 《Android框架揭秘》——2.1节主机环境构成
  12. 牛客网华为机试题整理
  13. 技术族谱:软件开发相关知识体系的整理心得(图)
  14. 乐嘉性格色彩-4色特性,学习感悟
  15. 用python做一个好玩的数字炸弹游戏
  16. (附源码)pringboot餐饮点餐系统 毕业设计301749
  17. ne_comment 表
  18. 2018航电多校练习第9场-快速幂
  19. 利用计算机建模的优点,论计算机技术在数学建模领域的应用
  20. Python中uniform的用法

热门文章

  1. 云计算基础与应用 第四章 云网络
  2. 网站优化 SEO教程
  3. 利用ReadyFor4G成功在Vista和windows 7下成功使用4G内存
  4. 32位程序使用超过4G的内存 实例
  5. 01_微信小程序-BLE低功耗蓝牙开发-注册和工具安装
  6. ambari运维问题记录
  7. 如何理解IoC/DI
  8. 裸辞一年再就业,上班第一天就想辞职是什么体验?
  9. 小型微型计算机系统期刊格式,小型微型计算机系统杂志是核心期刊吗?
  10. 未能加载文件或程序集System.Data,Version=2.0.0.0解决方法