【Python小工具】爬虫之破解RSA加密详解

Python小工具系列是一个使用Python实现各种各样有意思的小玩意儿的系列,包括制作个性化的二维化、词云、简单爬虫等,持续更新中,如果你感兴趣就关注一波吧!

一、基本介绍

接上一篇获取验证码图片,获取到图片并识别即可得到验证码,按照简单难度的网站,接下来就应该携带上表单数据,然后进行Post请求了。但我所使用的案例是我学校的教务系统,没想到它使用了RSA加密。
该加密的原理可见链接: RSA算法原理-知乎
所以下面就以教务系统网站为案例,介绍一下如何实现最终的请求登陆。

二、具体步骤

1.数据解析——获取参数

在这里插入图片描述
这里还是使用xpath,因为这个不需要怎么学,操作步骤如下:
在这里插入图片描述
⭕️:这里要注意,XPath获取的是列表,需要取第[0]个元素才是具体值,且获取的值是字符串!

2.数据加密——使用RSA加密模块

这里我使用的模块是rsa,跟有一些博主使用的不同,导入如下:
在这里插入图片描述

然后就进行加密,如下所示:
在这里插入图片描述

3.POST请求——获取登陆后网页

最后只要携带表单数据,发起POST请求就可以获取登陆后的网页啦!
在这里插入图片描述

三、注意事项

1.Cookie问题

因为涉及多次请求,一定要保证前后携带的Cookie保持一致!否则就请求不到登陆后的页面

2.RSA模块的使用

因为网络上有很多教程,但是都是以结果为导向的,不介绍怎么知道这些函数怎么用的,注释也不详细。我也是请求大佬才明白如何给函数传递正确参数。
而授人以鱼不如授人以渔,因此我下面会详细介绍我是如何了解 一个陌生的rsa 模块中加密函数的使用。


首先肯定要导入一个你中意的库,然后使用其加解密函数,由于我的需求很简单:只需要进行加密,得到加密后的密文即可。因此我参考的是这篇博客: 超简易python实现RSA加解密
然后进入想要了解的函数,查看具体源代码,示例如下:
在这里插入图片描述

点进去之后,看到结果如下图所示,可以发现这里第二个参数就是公钥,且是一个非基本数据类型,所以再Alt + 鼠标左键点击该类型,查看它的初始化方法即可知道要传递哪些类型参数

在这里插入图片描述
然后发现这个类型还继承自一个父类,再次进入查看该父类

在这里插入图片描述
在父类中找到该类的初始化方法,这下就了解要传递哪些参数了!

在这里插入图片描述

从上面可知,要分别传递int 型参数 n 和 e ,从而初始化一个AbstractKey实例(但要作为Publickey实例使用),因此改变最开始使用的别人博客里的代码:

在这里插入图片描述

⭕️特别注意,原本使用rsa.encrypt 加密后得到的是二进制数,这里根据需要,我将其转换为了十六进制。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值