教务系统抢课程序的思路

本文介绍了作者尝试模拟学校教务系统的两种登录方式的过程。一种方式需要处理验证码,并使用OCR库辅助识别;另一种则涉及复杂的JS加密算法。文章还探讨了通过前端调用JS加密函数配合后端API来实现模拟登录的技术方案。
摘要由CSDN通过智能技术生成

  最近在学习Python爬虫处理表单登录的知识,就想到了拿学校的教务系统来试手。经过调查发现学校的教务系统登录有如下特点:

  • 有两个登录页面,一个页面是需要输入账号密码以及四位字符验证码,另一个页面只需要账号密码不需要验证码。
  • 两个登录页面表单提交的地址不一样,但是都需要encoded字段,然而encoded是经过js加密处理得到的复杂字符串。
  • 需要验证码的那个登录页面是当你提交表单的时候会先向服务器发送GET请求得到一个以’#’分割的字符串,分为前后两部分,分割后得到两个字符串。然后将账号和密码以”%%%”进行连接得到新的字符串,之后遍历新字符串,结合之前从服务器请求返回的字符串以一定的规则进行加密,加密结果作为encoded字段的值。
  • 不需要验证码的那个登录页面则是通过调用一个js加密函数先将账号加密,然后调用同样的js加密函数将密码加密,两部分通过”%%%”进行连接作为encoded字段的值。

所以现在有两个登录方式可以模拟登录到系统。如果使用有验证码那个action进行模拟登录,加密规则其实相对来说翻译成Python代码比较简单,然后验证码可以使用一些OCR库来进行识别,最后可以轻易的登录到系统;如果使用没有验证码的那个登录页面那么主要得把那个几十行的js加密函数进行理解翻译成Python代码?有没有不用理解它加密逻辑的方法?于是我想到了一种方式就是网页+webservice的方式,在前端调用js加密函数来生成encoded字符串,后台编写api提供集成处理,也正好可以实践最近学习的SOA课程。

时间原因,目前只实现了登录部分(带验证码登录和不带验证码登录),之后有时间会把这个完整实现,github地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值