如何使用PyExecJS编写Python代码模拟登录华工新版教务系统选课操作?

2026-04-02 11:331阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计668个文字,预计阅读时间需要3分钟。

如何使用PyExecJS编写Python代码模拟登录华工新版教务系统选课操作?

先前学校用的是老版本的教务系统,自己也写过文章介绍,而现在学校换了新教务系统。作为计算机学生,自然会想看看能不能写个脚本抢课。

之前学校用的是老版正方教务系统,也写过文章,而最近学校更换了教务系统,作为计算机的学生,当然还是看看能不能写个脚本抢下课啦。小苏打:用Python实现模拟登录正方教务系统抢课​zh

之前学校用的是老版正方教务系统,也写过文章,而最近学校更换了教务系统,作为计算机的学生,当然还是看看能不能写个脚本抢下课啦。

小苏打:用Python实现模拟登录正方教务系统抢课​ zhuanlan.zhihu.com

我们发现数据包由 rsa,ul,pl,it,execution,_eventid构成,我们一一在Chrome Network左侧搜索,我们很容易能够找到lt,execution,这在html里面就有,而这个数据是变化的,所以必须每次请求获得。

然后我们搜索rsa,rsa这个一看就知道是已加密的内容,所以必定在js里面出现,我们很快就能找到rsa,并且得知ul和pl是用户名和密码的长度信息,所以我们就只用得到rsa即可完成模拟登录了。

然而这个加密是在另外一个名叫des.js的文件完成的,这个函数名为strEnc,第一个参数为用户名、密码和lt值的拼接,并且我初步观察了加密的流程,是比较复杂的,根据平常爬虫的思路,我们有两种办法:

1.用Python直接模拟加密过程

2.用selenium

如何使用PyExecJS编写Python代码模拟登录华工新版教务系统选课操作?

第一种方法显然是比较复杂的,所以我尝试了些许时间就放弃了,而第二种方法由于运行速度比较慢,所以也被我排除了。

于是我就想到能不能运行js文件来获得同样的效果,所以我用了一个名为 PyExecJS 的Python库来运行js文件,我们首先把des.js这个文件下载到本地,然后再操作。

所以到这里,我们的登录流程差不多已经理好思路了,开始写代码了。

登录代码

我们获得一个Session对象,我们选课的核心即是获取登录成功的COOKIE值,请求一次登录页面然后用正则表达式获取这两个数据的值。

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0'}session = requests.Session()r = session.get('sso.scut.edu.cn/cas/login?service=sso.scut.edu.cn/cas/login?service=www.558idc.com/helan.html 复制请保留原URL】

本文共计668个文字,预计阅读时间需要3分钟。

如何使用PyExecJS编写Python代码模拟登录华工新版教务系统选课操作?

先前学校用的是老版本的教务系统,自己也写过文章介绍,而现在学校换了新教务系统。作为计算机学生,自然会想看看能不能写个脚本抢课。

之前学校用的是老版正方教务系统,也写过文章,而最近学校更换了教务系统,作为计算机的学生,当然还是看看能不能写个脚本抢下课啦。小苏打:用Python实现模拟登录正方教务系统抢课​zh

之前学校用的是老版正方教务系统,也写过文章,而最近学校更换了教务系统,作为计算机的学生,当然还是看看能不能写个脚本抢下课啦。

小苏打:用Python实现模拟登录正方教务系统抢课​ zhuanlan.zhihu.com

我们发现数据包由 rsa,ul,pl,it,execution,_eventid构成,我们一一在Chrome Network左侧搜索,我们很容易能够找到lt,execution,这在html里面就有,而这个数据是变化的,所以必须每次请求获得。

然后我们搜索rsa,rsa这个一看就知道是已加密的内容,所以必定在js里面出现,我们很快就能找到rsa,并且得知ul和pl是用户名和密码的长度信息,所以我们就只用得到rsa即可完成模拟登录了。

然而这个加密是在另外一个名叫des.js的文件完成的,这个函数名为strEnc,第一个参数为用户名、密码和lt值的拼接,并且我初步观察了加密的流程,是比较复杂的,根据平常爬虫的思路,我们有两种办法:

1.用Python直接模拟加密过程

2.用selenium

如何使用PyExecJS编写Python代码模拟登录华工新版教务系统选课操作?

第一种方法显然是比较复杂的,所以我尝试了些许时间就放弃了,而第二种方法由于运行速度比较慢,所以也被我排除了。

于是我就想到能不能运行js文件来获得同样的效果,所以我用了一个名为 PyExecJS 的Python库来运行js文件,我们首先把des.js这个文件下载到本地,然后再操作。

所以到这里,我们的登录流程差不多已经理好思路了,开始写代码了。

登录代码

我们获得一个Session对象,我们选课的核心即是获取登录成功的COOKIE值,请求一次登录页面然后用正则表达式获取这两个数据的值。

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0'}session = requests.Session()r = session.get('sso.scut.edu.cn/cas/login?service=sso.scut.edu.cn/cas/login?service=www.558idc.com/helan.html 复制请保留原URL】