前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 爬虫进阶必备 | 某 d 榜单数据请求参数 k 加密逻辑分析

Python 爬虫进阶必备 | 某 d 榜单数据请求参数 k 加密逻辑分析

作者头像
咸鱼学Python
发布2022-12-10 16:08:43
4450
发布2022-12-10 16:08:43
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python

今日网站

aHR0cHM6Ly9hcHAuZGlhbmRpYW4uY29tL3JhbmsvaW9zLzEtNC0wLTc1LTI/dGltZT0xNjY4NTI4MDAwMDAwJmRldmljZT0x

这个网站是群友分享到群里的,之前应该没有写过,正好拿来当作素材

有一说一,第一次打开网站,我连加密参数是哪个都不知道

抓包分析

随便找一个榜单,然后点击全部榜单后无需登录

打开抓包,然后切换一下上面的分类就可以看到带有加密参数的请求了

请求如下

可以看到请求带有一个加密的参数 k

这就是本文需要分析的参数了

抓包部分多废话一下,避免有和我一样的憨批找不到加密的请求

加密定位

这种 xhr 请求的加密还是很好分析的

分析的方式有 xhr 断点,还有查看 js 调用堆栈 Initiator 等方法

接下来我们快速找找加密的位置,毕竟分析加密才是大头,找加密位置,只要足够耐心多多调试基本能找的到

打上 xhr 断点,然后切换一下榜单

通过 xhr 断点可以看到请求的位置,params 中已经有了加密好的 k 参数

所以按照堆栈继续向上分析

在堆栈里可以看到下面的这个段代码

看过之前文章的就知道,很多站点都会在这里做一些操作

先不停的放过断点,等到这里的 t 和我们分析的 url 相同的时候

进去打个埋伏,就能找到加密的地方了

进去之后,可以看到下面的代码,我们先打上断点

看到 interceptors 的时候,基本可以确定就是这里了

这个时候放过断点,这个时候逻辑就会运行到 e(n) 这行的位置

我们再单步进去看 e 方法做了什么操作

可以看到最终执行的是 L

单步下去可以看到 k 的通过 Object(O.a)(r,path,{xxx}) 得到的

跟进去可以看到加密的位置如下

加密分析

这个加密就很简单了,虽然看着很多的样子,但是最后返回的时候就是一个 base64

主要关注的是前面对于请求参数的处理

可以看到最后参与到 base64 编码的是 y

而这里的 y 是一个匿名方法,参数是 content、t和 e

而这里的 content 是由下面的方法两个方法计算得到的

简单的分析一下就是将请求参数的值取出来,然后拼接

拼接后的结果连同时间戳计算、当前请求的path以及n.sort 一块传入下面的方法

这个方法也是对传入的参数用 (&&) 拼接,这个结果就是 content

这里的 t 是一个固定的字符串,这里不列举出来,感兴趣的可以自行调试一下

e 固定为 10

将上述的三个参数带入匿名函数,得出一串乱码,然后带入 base64 编码得出 k 的值

我们用本地的 js 代码验证一下

在线执行的结果

本地 node 运行的结果

两者相同

Python 请求验证参数

直接带入请求就可以获取到了

End.

以上就是全部的内容了,咱们下次再会~

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

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

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

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

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