Python 爬虫进阶必备 | 某网络广播电视台 header 加密参数逻辑分析
图源:极简壁纸
今日网站
aHR0cHM6Ly93d3cuZ2R0di5jbi9zZWFyY2g/a2V5PSVFNSVBNCVBNyVFNiU5NSVCMCVFNiU4RCVBRQ==
抓包分析
搜索关键词,可以抓到上面的请求
可以看到在 header 中的几个字段应该都是加密的
加密定位
直接检索关键词 x-itouchtv-ca-signature
可以找到下面的文件
在文件中的位置上直接断点,然后点击下一页,就可以看到已经断上了
加密分析
X-ITOUCHTV-Ca-Timestamp
这个见名知义,就是时间戳,并且在上面也可以看到代码
d = (new Date).getTime()
"X-ITOUCHTV-Ca-Timestamp": d
X-ITOUCHTV-Ca-Signature
这个字段,涉及到了 o.default
还有 l.default.stringify
还有 v
l.default.stringify((0,o.default)(v, "dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX"))
传入的参数 v 是由下面的代码计算出来的
var v = "".concat(t, "\n").concat(n, "\n").concat(d, "\n").concat(_);
由上下文可以知道
t = 当前请求的方法 post/get
n = 当前请求的链接
d = 时间戳
_ = l.default.stringify(p))
p = (0,r.default)(a)
a = 当前的请求提交的参数
所以目前需要知道的是参数 a 经过的两个方法 l.default.stringify
还有 r.default
分别为什么
单步进入可以看到,这里的 r.default 是一个 md5
经过计算之后的结果,传入 l.default.stringify
,继续调试
可以看到这里的 l.default.stringify
就是一个 base64 的编码
经过这样计算之后的结果,和上面的 t,n,d 用 \n 拼接到一起,得出参数 v
然后这个 v 经过了 o 之后得到最终的结果
单步进去可以看到
先是进行了一次 hmac
这里的 key 是 dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX
加密的 msg 是 POST\nhttps://gdtv-api.gdtv.cn/api/search/v1/news\n1663207996688\nfGfnMG3h1j/3YxyPfIJ2Ag==
ps:注意这里的 msg 拼接使用的是 \n
在计算之后使用了 base64 也就是 l.default.stringify
进行了编码
最终得出请求需要的 X-ITOUCHTV-Ca-Signature
带入 python 测试结果如下
End.
以上就是全部的内容了,咱们下次再会~
相关文章
- NCAR抛弃PyNCL后又一面向地球科学的Python项目
- python实现矩阵的转置_Python实现矩阵转置的方法分析
- Python入门系列(五)一篇搞懂python语句
- Python入门系列(十)一篇学会python文件处理
- Python列表(list)及其常用方法
- python zipfile_Python 学习入门(16)—— zipfile
- Python绘制旭日图_python绘制散点图
- python中if判断语句的用法_Python if判断语句的用法详细介绍[通俗易懂]
- Python 生成随机数_python 随机字符串
- python type error是什么意思_Python 报错 TypeError:’DoesNotExist’对象不可调用
- 【测试开发】python系列教程:Python 运算符
- Python路面平整度检测车辆数据——速度修正
- Linux下卸载python的正确方法(linux卸载python)
- 开发Linux下Python编程:实现自己的开发梦想(linux下python)
- Python简易操作MySQL数据库指南(python操作mysql数据库)
- 如何在Linux中安装Python?(linux安装python)
- 通过python下载FTP上的文件夹的实现代码
- python切换hosts文件代码示例
- Python实现发送email的几种常用方法
- Python中请使用isinstance()判断变量类型