Python 爬虫进阶必备 | 某策网数据返回值 data 解密逻辑分析
今日网站
aHR0cHM6Ly93d3cuY2hhY2V3YW5nLmNvbS9jaGFueWUvaW5kZXg=
无限 Debugger绕过
打开控制台,就进入 debugger 模式了
直接右键 Never Pause Here 就可以了
抓包分析
绕过反调试,刷新页面,可以看到如下的请求包
请求的参数没有什么好分析的,都是明文,主要是返回的内容是加密的
加密定位
先用上 xhr 断点,找到发包的位置,然后向上翻
可以看到处理 response 的逻辑
在这个位置打上断点,然后放过断点让逻辑运行
可以看到这里的 n 就是请求的返回值
然后继续向下分析,直到这个逻辑
这里是对 page_set 的解密
继续向下,就是对返回值内容的解密
继续跟进去,看到这里的解密是一个 AES CBC 解密
p 上面的变量操作基本都是对 key iv 的处理,所以需要逐个分析一下
加密分析
首先是解密的密钥 c
c 的生成逻辑如下
e = r.decode(t)
a = e.slice(0, 10)
n = l(a, e)
s = n.slice(0, 32)
c = i.default.enc.Utf8.parse(s)
点进 decode 方法,里面是一大串对于返回值的处理
看了一下decode逻辑主要是对返回的字符串进行一些字符的替换,然后再调用了 atob,其实就是base64解码
这里的 a = e.slice(0, 10) 就是获取了解码结果的前 10 的字符然后和解码的结果一块进入 l 计算
这里的 l 主要是对解码的结果进行遍历hex ,每次的hex 的结果都拼接起来
拼接的结果取前 48位作为结果返回
之后的 s 就是对 l 的结果切割取值,再之后的步骤就是 CryptoJS 的常规操作
直接导入 CryptoJS 包就可以
npm install crypto-js
这里的解密使用的 AES CBC 的解密,直接使用 CryptoJS 就可以实现
简单使用 js 复现一下解密的逻辑
这样就得到解密好的结果了
Python 请求全流程
用 Python 请求结果如下
这个站点在 page 的部分好像还动态加载了字体文件,不知道是否还有对字体做了一些操作
本次操作是在未登录状态下的测试,不知道在登录状态下是否还有其他不同的操作,感兴趣的朋友可以拓展测试一下
End.
以上就是全部的内容了,咱们下次再会~
相关文章
- Python数据分析之Pandas(五)
- mt4 python_一个使用Python自动化交易外汇MT4脚本实现「建议收藏」
- Python入门系列(五)一篇搞懂python语句
- python爬虫—–Python访问http的几种方式「建议收藏」
- python chmod_使Python脚本可执行chmod755?
- 【Python】python文件打开方式详解——a、a+、r+、w+、rb、rt区别[通俗易懂]
- raft算法详解_python raft
- Python 正则表达式大全
- python标识符可以使用关键字_printf是关键字还是标识符
- Python的正则表达式_python正则表达式例子
- Python代写:CSC108H Tic-Tac-Toe
- python 图像处理库_Python图像处理库
- python hexdump_笨办法学 Python · 续 练习 26:`hexdump`
- python如何生成随机数_Python生成50个随机数
- 熟悉Python中if-else分支语句,利用for - if嵌套格式完成循环判断逻辑
- 封装Python代码:如何在未安装Python的情况下运行Python脚本
- Python抢火车票
- Python 爬虫进阶必备 | 某应用榜单加密参数 analysis 加密逻辑分析
- Python 爬虫进阶必备 | 某 d 榜单数据请求参数 k 加密逻辑分析
- Python 爬虫进阶必备 | 某新闻网正文图片 data-src 解密逻辑分析
- 软件测试|超好用超简单的Python GUI库——tkinter(二)
- python-数据库编程-如何在Python中连接到数据库
- python中os模块的常用方法详解编程语言
- Bokeh v0.12.6dev2 发布,一个 Python 交互式可视化库详解编程语言
- 在Python中简单调用MySQL(python调用mysql)
- 在Linux系统中使用Python编程语言(linux中python)