CUMT教务系统模拟登录

作者: Eddie_Ivan | 来源:发表于2018-03-28 23:47 被阅读332次

没爬过自己学校教务网站怎么能说自己会敲爬虫 : )

在此记录模拟登录cumt教务系统

P.s  Markdown学习中....没找到在哪里能插入代码...所以代码都是图片形式,在后面附上github地址


正文开始

教务系统网址

和许多学校相同,都是正方教务系统(ummm正方和煎蛋难兄难弟)

查看源代码

可以看到由五个js进行登录加密,为RSA加密,不了解rsa的看这里:RSA加密

提交表单

post的数据包括csrf令牌以及明文的yhm(即学号,我随便敲的),和base64加密的mm(提交了两次),即密码

csrftoken

用来防止跨站请求伪造

源代码中搜索,找到随机生成的token表单value

登录加密

查看login.js

找到获取公钥私钥的地址

cookies问题

使用requests库的requests.session()保持会话即可

登录逻辑:从登录页面获取csrftoken,请求login_getpublickey.html提交时间参数获取rsa密钥,对获取到的密钥base64解密,用密钥对登录密码进行rsa加密,对密文再进行base64加密,最后post


rsa加密是最麻烦的地方

此处参考stackoverflow文章戳我

代码

放上代码地址,使用时导入login.py,调用httpmthd类即可

github地址

此处的requests库会有一个编码问题,按报错把库文件代码里某处的'latin1'改为'utf-8'就可以解决

模拟登录后顺便做了成绩获取

打算有时间了敲一个多线程暴力抢课脚本,但是很狗的是,敲完程序测试的机会就只有学期末抢课那几天,这学期敲好调试好要等到过一学期才能拿来用 ( :

好了不管这些,反正模拟登录成功后就可以为所欲为了


selenium脚本

除了利用RSA加密密码外,还可以使用selenium直接提交表单

缺点是button的click()有几率失效,网上有解决办法,不多讨论

P.s在此强烈谴责selenium喜新厌旧的行为!!!居然抛弃了PhantomJS转投火狐和chrome的无头版本,然而火狐无头实例化耗时比phantom多了不少

而且既然不支持phantom,为啥库文件里还是有phantom的包,直到运行的时候才报错说phantom已经过时了,请使用火狐或谷歌...莫名其妙.jpg


更多思路

还可以node.js本地运行js加密,或者提交到在线rsa加密网站

反正方法有很多,没有验证码也可以说对爬虫很友好了


第一篇博客文章end:)

2018.3.28

相关文章

  • CUMT教务系统模拟登录

    没爬过自己学校教务网站怎么能说自己会敲爬虫 : ) 在此记录模拟登录cumt教务系统 P.s Markdown学习...

  • Android模拟登录教务系统

    一、原理 在超级课程表等APP中,大都有使用学号密码登录教务系统读取课程的功能。在这里我将模仿此功能使用J2V8、...

  • Python简单验证码登录

    背景 前几天想用Python模拟登录教务系统,但是我们学校的教务系统做了验证码识别,既然如此,刚好学习一下识别简单...

  • Python模拟登录高校URP教务系统

    对于爬虫来说,需要爬取的信息如果需要登录才可以得到的话,那么我们就需要模拟登录。比如,登录教务系统才可以获取成绩。...

  • Eclipse+Java+Swing+Mysql实现学校教务管理

    一、系统介绍 本系统实现的以下功能登录功能:教务人员登录、注销;教师登录、注销;学生登录,注销。教务人员功能:对学...

  • PythonLog171209

    本周开始Python web方向的知识。以下是模拟登录研究生教务系统,并获取课表的Python代码。 获取cook...

  • G(eek)DPU | python模拟登录教务系统

    一句话介绍: 用程序模拟人登录网页进行成绩查询的行为。 流程 使用工具 python2.7 pycharm(断点调...

  • iOS模拟登录方正教务系统获取课表

    最近做学校教务系统爬虫,这里写一下我遇到的一些问题和心得。 1.用到的工具 Chrome的开发者工具:分析网页行为...

  • 通过爬虫来理解Cookie和Session

    前言 Cookie和Session的概念我也接触过很多次,但一直没有机会实践一下,正巧最近想用爬虫模拟登录教务系统...

  • 从零搭建教务抢课系统(一)

    目录 (一)核心功能:模拟登陆(二)使用Cookie进行模拟登录(三)获取教务网选课列表(四)循环选课(五)断线重...

网友评论

  • lossfunc:敢问楼主成绩表是如何打印的这么整齐的?我怎么都对齐不了,因为中文和英文大小不一样
    lossfunc:@Eddie_Ivan OK,我试下,感谢~
    Eddie_Ivan:@Neo_Feng format函数填充的时候中文用chr(12288)填充,如:

    "{0:{2}<2} {1:{2}<2}".format("a","b",chr(12288))
  • 2c2eac0b692f:校友…2011级…
  • bf04f510f2b5:请问,验证码部分怎么处理的
    Eddie_Ivan:@灵魂独白者 我们教务登录失败三次才有验证码 验证码可以提取图片手动输入或者接ocr的api处理
  • 汇源可乐:插入代码其实比较简单。就是在markdown模式下,按下键盘上esc下面,[tab上面,f1左面那个键]3次。把demo插入进去就ok了。
    Eddie_Ivan:@汇源可乐 get了,前天学了下markdown语法,这篇当时是富文档编辑的,半天没搞懂怎么插代码
  • 汇源可乐:China University Of Mining Tecnology.
    汇源可乐:@Eddie_Ivan 同是16级的。老哥有点6啊。你是机械专业的,还是比较强的。我才开始学python呢,希望互相交流。
    汇源可乐:@Eddie_Ivan 嗯
    Eddie_Ivan:@汇源可乐 校友?
  • af2d4630dab8:好棒!坚持。
    Eddie_Ivan:@开方db 😁😁😁

本文标题:CUMT教务系统模拟登录

本文链接:https://www.haomeiwen.com/subject/tpxpcftx.html