荔枝网 or 广东网络广播电视台?sign逆向

分享
源代码 2024-9-13 15:13:20 10 0 来自 中国
写这篇文章也是由于踩坑浪费了不少时间,难度一星,坑爹五星,把这个网站拎出来给各人避个雷,来自工作中必要抓取的一个网站
https://www.gdtv.cn/search?key=珠江消息眼
找请求

没啥好说的,这个接口:https://gdtv-api.gdtv.cn/api/search/v1/news
python模仿请求

老爬虫操纵都是从欣赏器控制台copy as url 到 postman 再天生 python-requests 代码
nm的诡异征象来了,postman发出的请求永久正常,复制代码发出的请求永久401
我的噩梦来了,先是拿出charles抓包看两次请求不一样的地方,再就是使用文本对比看两次curl不一样的地方,末了乃至手写原生的urllib请求,tm的都没找到缘故原由,此时到这里我已经去办理headers内里加密的字段了,着实不可python调用shell脚本实行curl拿数据
在办理完x-itouchtv-ca-signature这玩意之后,我找到了401的缘故原由,前面的signature是由request-body天生的,而json.dumps之后的body是加了空格美化的,当然和signature对不上了
尚有一个地方是body必要encode才行,这里我没去细究缘故原由了,各位看官可以给我留言
这里我必须吐槽下,我是吐槽postman还是这个网站的后端
signature逆向

定位加密位置以及后续打断点还是非常easy的,直接看图


加密参数天生步调
a 为 JSON.stringify(body)p = (0, r.default)(a)_ = l.default.stringify(p)m = "".concat(t, "\n").concat(n, "\n").concat(d, "\n").concat(_)signature = l.default.stringify((0, o.default)(m, "dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX"))等价于,此中变量d为13位时间戳,a为body l.default.stringify(o.default(["OST", "https://gdtv-api.gdtv.cn/api/search/v1/news", d,  l.default.stringify(r.default(a))].join("\n"), "dfkcY1c3sfuw0Cii9DWjOUO3iQy2hqlDxyvDXd1oVMxwYAJSgeB6phO8eW1dfuwX")) 2.png
加密方法,到这里我们必要关注的也就是l.default.stringify、o.default、r.default三个方法
我们跟进去看一下l.default.stringify,这不就是个base64吗


o.default,hmac + hash,加盐的hash,挨个测试一下,是hmacsha256
r.default,hash,挨个测试一下,是md5

4.png
写个代码测试下,就几行,重要想让你们看下我配景图,哈哈哈
获取数据

nice,可以拿到数据,放工回家


怎么才50啊,再呆10min混个25餐补吧,哈哈哈
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-19 06:16, Processed in 0.185230 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表