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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

前言

最近做一个微信小程序,需要登录教务系统。提前用python尝试一下登录接口,并获取到课表打印出来。

我们学校用到新版正方教务系统,长这个样子。

在这里插入图片描述
相比旧版的教务系统,唯一好处是不用输入二维码方便爬虫登录。但登录时用到RSA加密密码发送请求。


正文

分析网页:
在网页上填上随便写的账号密码,点击登录。开发者工具记录如下:

在这里插入图片描述

首先它点击登录后,提交一个表单,Form Data一共有4个数据

提交的数据 解释
csrftoken 为了防止跨站域请求伪造 。在登录页源码里有,每次刷新都会变更
yhm 输入的用户名
mm 输入的密码,被加密过。我们主要关注这一个加密过程

csrftoken 如图所示:
在这里插入图片描述

另外,在开发者工具里,我们还需要注意服务器的一条get请求
在这里插入图片描述

查看它返回的数据
在这里插入图片描述
这条Get请求作用:发送当前时间戳,返回公共密钥。并且每次modulus的数据不同,有人会问,这个东西干嘛的?
其实,这是在密码加密时用到的公钥,如果你也曾看过它的密码加密代码,就会了解到。
我们翻一下网站的Javascript,看看密码加密过程

	$.getJSON(_path+"/xtgl/login_getPublicKey.html?time="+new Date().getTime(),function(data){
   
   
		modulus = data["modulus"];
		exponent = data["exponent"];
	});
		if($("#mmsfjm").val() == '0'){
   
   
			$("#hidMm").val($("#mm").val());
		}else{
   
   
			var rsaKey = new RSAKey();
			rsaKey.setPublic(b64tohex(modulus), b64tohex(exponent));
			var enPassword = hex2b64(rsaKey.encrypt($("#mm").val()));
			$("#mm").val(enPassword);
			$("#hidMm").val(enPassword);   
		}

具体加密过程:首先获取modulus,exponent。将他们从base64转16进制,再通过RSA算法生成公钥。
用公钥将密码生成私钥从16进制转回base64。变成最终加密的密码。

至此,我们分析完成,在python里面要做的步骤:
1、获取到csrftoken
2、发送时间戳获取到PublicKey
3、生成RSA加密的密码
4、POST请求登录


python实现过程

登录中唯一难点是生成rsa加密的密码,有大神把js的rsa算法写成python,具体在github里。我已经下载并放在项目文件夹下,直接调用。

头部文件:


        
在前端JavaScript中动态获取CSRF令牌的几种方法 通过以上任一方法,您可以在前端JavaScript中动态获取并使用CSRF令牌,以保护您的POST请求免受跨站请求伪造攻击。如果CSRF令牌已经包含在HTML页面中(通常是隐藏的输入字段),您可以直接通过DOM API获取它的值。确保在发送AJAX请求时携带CSRF令牌,无论是在请求头中还是在请求体中,这取决于服务器端的期望。某些前端框架或库可能提供了获取CSRF令牌的内置方法或插件,您可以查看您使用的框架或库的文档。在使用CSRF令牌时,避免在不安全的上下文中暴露它,如公共计算机或共享网络。 阅读详情

相关推荐

使用 PyRsa 库解决新版正方教务的 RSA 加密问题并模拟登陆Python 实现

前言 先前有一个契机,需要模拟登陆学校所使用的正方教务来获取课程表,其所使用的 RSA 加密方法没有现成的 Python 库可使用,目前其他的 CSDN 博客所采用的方法均无法成功登陆,故只能自己研究正方教务所采用的 crypto/rsa 的 JavaScript 实现并转义为 Python 语言实现。现开源为 PyRsa 库发布到 PyPI。 PyRsa 使用 安装 pip install py...

qq_40772371的博客 2512

基于Python正方教务系统爬虫设计源码

该项目为基于Python正方教务系统爬虫设计源码,包含368个文件,涵盖352个PNG图片、6个Python源文件、4个XML文件、1个Git忽略文件、1个IML文件、1个LICENSE文件、1个Markdown文件、1个网络配置文件和1个文本文件。系统具备验证码识别、课表和成绩爬取、一键抢课以及选修课列表爬取等功能,旨在便捷地辅助学生进行教务信息管理。

京东post登陆参数js分析,密码加密RSA加密实现

老规矩先用错误信息登陆一下抓一下包,看看有那些post字段: uuid: cf0d4f92-c83b-451a-bc31-be4bf9c546a5eid: 5535JQZQ4ZUMHJEPDFQ7EIQIP4PRSWDLEXGJCVNFQRGNKOKGFFSFHLYDURV5EQVE4JDMIAR3NVD4QEBFQDBSP33GOQfp: 2fe86fc6a5b04...

python之战 1万+

新版正方教务系统rsa加密算法

新版正方教务系统 请在桌面生成code.txt并输入相关参数

76篇 ICCV 2019 论文实现代码

ICCV 2019 将于2019/10/27-2019/11/2在韩国首尔的 COEX 会议中心举行,本次ICCV 收到了创纪录的4303份提交(比ICCV 2017年增加了100%),并接受了1077篇论文,接受率为25%。详情可以看ICCV2019官网:http://iccv2019.thecvf.com/ AI研习社将会给大家持续整理 ICCV 2019 论文实现代码系列集合,方便大家学习!...

git1314的博客 1万+

最新pr值大于6的网站大全

来源:苦战 时间:2009-02-09 22:19 字体:[大 中 小] 收藏 我要投稿   PR值越是评价网站好坏的一个标准,今天我收集了很多pr值大于6的网站!(pr值=7,pr值=8,pr值=9),提供大家参考,欢迎大家补充!!!!!!!!  网站名字 网站地址 网站PR值  一、门户网站类  1、优酷网:www.youku.com [7]  优酷网是一个服务于视频爱好者、视

我本无名 6万+

各种资源网站

1、查找论文资料: 中国图书馆http://www.chnlib.com (需注册), 2、新东方多媒体学习库: http://www.lib.scut.edu.cn/2017/0313/c8737a159322/page.htm(需用身份证号注册),几乎涵盖所有新东方网课 3、全球免费开放的电子图书馆: http://t.cn/h4hJUf 4、外文书籍(基本上都可以搜到并下载,并且...

sshzdr的博客 136万+

新版正方教务网模拟登录python实现

正好大学期末考完,分析一下正方教务网登录实现模拟登录就可以自己实现抢课和查询成绩等常规操作了本文以我学校的正方教务网为例,关键信息已打码,理论上适用于所有新版正方教务网,仅供学习使用!打开学校正方教务网主页,随便输入一个账号密码抓个包 复制代码 隐藏代码 可以看到提交的form表单中我们输入的用户名12345出现在表单中,但是密码12345被加密了,同时还多了一个参数,根据经验,这玩意应该就在网页的源代码中,我们打开网页源码,全局搜索果然就在网页的源码中,那么只要解决密码加密,就能构造表单模拟登录

weixin_43044226的博客 1627

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

目录~引入需要什么软件?模拟登陆代码实现(登陆)模拟获取成绩代码实现(获取成绩)解析成绩测试(完成图)作者的话引入就在我刚刚写完旧版正方系统爬虫的时候(旧版正方系统爬虫代码)学校就出了新版正方教务系统 估计是装空调的钱有的多那就开始讲解叭~ 需要什么软件?基本的Python(我最喜欢3.x的版本啦)一个你喜欢的IDE! (顺手的IDE事半功倍哦)库requests(爬虫基本都大家都明白的吧...

weixin_39687621的博客 1511

自制密码管理器 —— 使用pythonRSA加密文件

密码是一个非常隐私的东西,对于那么多的密码很难记住,使用网上的密码管理器又不安全,不如自己做一个。

不善挽留 5410

python模拟新浪微博登陆获取cookies

python模拟新浪微博登陆获取cookie首先感谢,敲代码的耗子http://www.cnblogs.com/mouse-coder/archive/2013/03/03/2941265.html?utm_source=tuicool,之前一直搞不懂登陆新浪微博的原理,看了他那篇文章之后,终于明白了基本原理。在这里主要是通过代码实现那篇文章的过程。获取网页使用的包是requests,正则匹配用的

Bgods 1万+

Python实现新版正方教务系统爬虫(二)

哎对不起 我可能是silly boy 我想在学校里里把去年的坑填了 但是发现新版的教务系统代码没传到git上 我现在就成了个对着空ide发呆的憨憨(代码在家里啦 所以填坑就再过会吧 那就稍微闲聊一下吧 打算填坑前逛了一下csdn上面有关新版正方教务系统的帖子 我去年留下的rsa加密的坑其实都被填掉了 也有用flask框架完善整个项目的 其实挺好的 写博客就是为了帮助更多的志同道合之人在这条路上进步...

离娄的博客呀 2086

淘宝密码加密方式分析,及python实现

上回说到《分析淘宝登陆对selenium爬虫的封杀方案,反爬虫机制的升级》、《淘宝封杀selenium的ua算法分析》,对淘宝封杀Selenium的思路有了一个清晰认识,核心就是ua算法来鉴别是否为正常浏览器。   至于鉴别的思路可看更早的文章《selenium的封杀与突破,记录一次出师未捷身先死,淘宝、美团对爬虫的深入打击》,《Python爬虫中深不可测的ua参数,爬虫的身份证》。   ...

python之战 5077

Python3登陆土巴兔装修网,解决RSA加密

前言 在这里我就不再一一介绍每个步骤的具体操作了,因为在爬取老版今日头条数据的时候都已经讲的非常清楚了,所以在这里我只会在重点上讲述这个是这么实现的,如果想要看具体步骤请先去看我今日头条的文章内容,里面有非常详细的介绍以及是怎么找到加密js代码和api接口。 Python3爬取今日头条文章视频数据,完美解决as、cp、_signature的加密方法 QQ群聊 855262907 分析土巴兔装修网 先进行一次登陆,然后在开发者工具里面查找一下有参数的链接,搜索关键词username或者password看看有没

LeeGene的博客 2113

webpack实战:某网站RSA登录加密逆向分析

某网站登录RSA加密,深度分析webpack代码并构建完整的加密webpack代码!

吴秋霖的博客 9266

python post请求rsa加密_京东post登陆参数js分析,密码加密RSA加密实现

老规矩先用错误信息登陆一下抓一下包,看看有那些post字段:uuid: cf0d4f92-c83b-451a-bc31-be4bf9c546a5eid: 5535JQZQ4ZUMHJEPDFQ7EIQIP4PRSWDLEXGJCVNFQRGNKOKGFFSFHLYDURV5EQVE4JDMIAR3NVD4QEBFQDBSP33GOQfp: 2fe86fc6a5b0410641970234f8438...

weixin_39794347的博客 1534

Python实现新版正方教务系统爬虫

目录~引入需要什么软件?模拟登陆代码实现(登陆)模拟获取成绩代码实现(获取成绩)解析成绩测试(完成图)作者的话 引入 就在我刚刚写完旧版正方系统爬虫的时候(旧版正方系统爬虫代码) 学校就出了新版正方教务系统 估计是装空调的钱有的多 那就开始讲解叭~ 需要什么软件? 基本的 Python(我最喜欢3.x的版本啦) 一个你喜欢的IDE! (顺手的IDE事半功倍哦) 库 reques...

离娄的博客呀 3904

拼多多登陆 JS 密码字段加密解析

个人博客网站 拼多多登陆 JS 密码字段加密解析 若有侵权请立即联系作者删除!!! 目标: X多多自动登录时对密码字段的加密登陆包 网址 https://mms.pinduoduo.com/login 打开调试工具,随意输入一个账号密码点击登陆 然后我我们看到一个 POST 请求 https://mms.pinduoduo.com/janus/api/auth 可见密码是在 js 中加...

Zok的博客 5560

python3中rsa加密说明

rsa加密,是一种加密算法,目前而言,加密算法,是对数据、密码等进行加密。第一次接触rsa加密算法是linux中免密登陆设置,当时一直以为密钥加密是像token一样的,直到现在才发现并不是,而是一种数据加密的方式,其实也可以理解,在Linux设计哲学的理解下:“一切皆文件”,就可以把他们当成类似的东西来理解。无非就是拿着a字符串和b字符串进行比较,如果返回trun,那么就可以进行下一步的操作,否则就会被返回异常。 在这里,其实有一个逻辑,就是先把数据进行一次加密,然后进行数据传输,在接收到数据后,发现数据

qq_44862918的博客 5646
上一篇: 【基础】计算等腰三角形中的数字的位置 【大数据量】【循环】
下一篇: 【中级】蛇行矩阵
Koevas
博客等级 码龄10年 88粉丝 38原创
评论 22
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值