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

    相关文章

      网友评论

      • 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