前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 爬虫进阶必备 | 某私募基金 (xxppwang) 数据解密逻辑分析

Python 爬虫进阶必备 | 某私募基金 (xxppwang) 数据解密逻辑分析

作者头像
咸鱼学Python
发布2022-03-29 17:32:47
1.1K1
发布2022-03-29 17:32:47
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python

今日网站

aHR0cHM6Ly9kYy5zaW11d2FuZy5jb20v

这类网站需求量蛮大的,不过想这类网站大多需要实名注册,所以爬虫 er 还是适可而止吧,不要瞎搞

抓包分析与加密定位

打开网站,往下找到翻页请求,点击翻页,可以在请求列表里面看到下面的请求包

这个包的返回值是一大串的加密 data,还有一大段的 js 代码

这样的就不好分析了,先一个一个来,看看这个数据是怎么解密的

先通过 js 调用栈把断点打上,找一个看的懂得点进去

在这一步断点然后刷新,data 就已经是明文了,所以要向上分析

接下来就是异步的位置了

我们在异步的上一个堆栈打上断点,然后继续分析

可以看到这里嵌套了很多异步

我们继续单步,可以看到下面这里的请求拦截器

这里分别对应requestresponse

建议这两个都打上断点,然后再单步调试

request的拦截器里会进入到下面的逻辑,就是xhr.send逻辑

是的,这里就是异步套娃,一个接着一个,这样看来直接xhr断点会更加方便

这里发起了xhr之后,就进入到解密的环节了

再单步几次就进到如下混淆的地方了

接下来就是继续单步调试了

加密分析

这里先是判断了data.data以及data.data.encode是否存在

然后给script标签赋值了返回的代码,使用eval执行了这一大段代码,并获取到window[data.data.id]作为结果,赋值给 key

这样就很好理解前面 respose 中data那一大段代码的作用了,是用来生成一个字符串,可以理解为是一个密钥

这里我们自己用代码试一下,验证下我们的猜想

粘贴出来格式化可以看到这里有一个eval

这个 eval 还原大家都会把,直接用console.log就完事了

运行结果就是这样一段赋值的代码,可以理解为给 window 赋值了一个属性值,这个属性值也可以通过 response 获取,获取到之后得到 key ,和我们猜想的完全一致,然后这里的 key 就参与到下面的计算了

接下来就是一段js解密的操作了

眼不眼熟,这不就是aes嘛,key就是上面的代码计算出来的 key 然后md5的结果,然后iv就是这个结果切割后16位,padding就是pkcs7

有这三元素还不是分分钟还原出来了

上个结果对比图

完事~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 咸鱼学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 今日网站
    • 抓包分析与加密定位
      • 加密分析
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档