为了账号安全,请及时绑定邮箱和手机立即绑定

Python爬虫进阶之巧破RSA加密

标签:
Python 爬虫

更多爬虫进阶文章,关注公众号Python编程与实战

美团 PASSWORD 参数网址如下:
aHR0cHM6Ly9wYXNzcG9ydC5tZWl0dWFuLmNvbS9hY2NvdW50L3VuaXRpdmVsb2dpbg==

下面的抓包的界面:

这里有三个参数是需求构造的,password,csrf(这个简单,从html中获取即可),h5Fingerprint。h5Fingerprint 以前的参数名是 token, 这个今天不演示,有兴趣的朋友可以去试试。今天的主要是找到 password 的生成方式。

根据工具栏中的 Network ,找到 Initiator 选项栏,将鼠标悬停在抓到包的那条请求上,出现如上图。我们找到 ajax 请求的前面一个 e, 点击进去

注意发现关键点,对象 o 有 url, post,data, 其中 data 就是 post 的参数,打上断点,重发请求,如下:

e 里面的 password 已完成加密,往上追

定位到加密函数 u.encrypt() , 而在加密之前对对象 u 进行了u.setPublicKey(this.publicKey) 这一步。

地址:aHR0cDovL3d3dy5pYXBwc3RvZGF5LmNvbS8=

下面是浏览器抓包 Network 栏,和上面定位加密位置一样,鼠标悬浮在 Initiator 那一列

选择 ajax 请求前面那个,点击进去之后如下:

很明显的可以看到,前面代码是获取输入的 password 值,并对其进行 RSA 加密,最后你可下个断点将相关的代码拿出来。

地址如下:aHR0cHM6Ly9sb2dpbi4xMDA4Ni5jbi9odG1sL2xvZ2luL2VtYWlsX2xvZ2luLmh0bWw=

根据 password = , 快速定位到加密位置

在该位置打上断点后进入到加密函数,

熟悉的 setPublicKey(), 典型的 RSA 加密

地址如下: aHR0cDovL2kuYmFpZHUuY29tL3dlbGNvbWUv
抓包之后,根据登录的请求,

如上图所示,点击进去后,定位如下,记得打上断点,

从页面输入框获取 password 之后做了简单处理,然后进入到
baidu.url.escapeSymbol(e.RSA.encrypt(o),其中 o 就是我们输入的密码
。可以看到函数名称等特征是 RSA 加密,我们可以点进去查看

上面的代码也能佐证我们的判断,password 使用的 RSA 加密。

上述的四个案例都是 RSA 加密,实际上只是找到加密的代码位置,并没有去和以前一样扣代码。也许你以前也遇到过很多类似的案例,然后扣了大半天也没有扣出结果!结果即浪费时间,也没有效果。其实遇到这种加密并不需要去扣代码,因为大都数的 RSA 加密都是通用的,加密的算法都是一样的。

很少有网站会去更改,就算就修改也只是对参数的输入和加密后的输出做了进一步的处理。例如第四个案例,对 RSA 加密后的结果中某些字符进行了简单的替换,baidu.url.escapeSymbol()

所以我们不要去扣代码,直接用成熟的RSA加密即可!这里提供一个 RSA 加密算法的 JS 代码,https://github.com/travist/jsencrypt/blob/master/bin/jsencrypt.js 以后遇到类似的 RSA 加密,可以直接拿来用。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消