Python 爬虫进阶必备 | 某志愿数据站点加密参数加密逻辑分析
点击上方“ 咸鱼学Python ”,选择“ 加为星标 ”
第一时间关注Python技术干货!
图源:AI绘画
前言
今年第一篇技术水文,冲!
“最近 AI 的风很大,咸鱼一度陷入 FOMO ,累挺!!!
恰巧遇到一个读者面试遇到面试题投稿过来分析,正好换换脑子
先看需求,原题如下(以下为聊天记录部分截图)
今日站点
aHR0cHM6Ly93d3cuNTFzZHguY29tL3NjaG9vbC8/ZnJvbT0lMkZzY2hvb2w=
抓包分析
需求是翻页+详情内容解析
先看翻页,点击翻页看到下面的请求
看下请求提交的参数
有一个 verifySign,这应该就是重点分析的参数了
详情页里面有一个历史录取分数,看了一下请求多了一个 paramSign
加密参数分析
verifySign 加密分析
直接搜索加密参数 verifySign
命中的结果就一个,点进去再次搜索定位
好像有点简单,简单分析一下参与计算的参数
参与 verifySign 计算的参数有
o, t, l.a.verify
o 是当前的时间戳
var o = (new Date).getTime()
t 是生成6位随机数
var t = ("000000" + Math.floor(999999 * Math.random())).slice(-6)
l.a.verify 是加盐字符串【隐去部分】
sdxxqbrolkjwrgoiuyaghnow32429asnnhg
这三个部分的字符串通过“ _”拼接之后经过方法 v 之后得出最终的结果,单步调试可以得出 v 就是 md5
以上代码还原为 Python 逻辑之后可以正常请求,结果如下
paramSgin 加密分析
通过 xhr 断点
找到下面的加密位置
得到 paramSing 由下面的逻辑得到
l()("" + t.univId + t.provinceId + n.a.SALT)
其中
univId,provinceId 是提交参数,一个是报考省份id,一个是高校的id
n.a.SALT 是加盐的字符串【隐去关键】
25raHVwZ2xnemhsbW9jdka2pkdG92aHB3ZGVoYHBoAAA
得到的结果经过拼接后经过 l 方法,这里的 l 方法单步进去也是一个 md5
有了上面的逻辑之后,可以使用 Python 实现下面的结果
以上就是今天的全部内容了,咱们下次再会~
End.
以上就是全部的内容了,咱们下次再会~
备注【 咸鱼666 】,入群交流
我是没有更新就在摸鱼的咸鱼
收到请回复~
咸鱼:来都来了,再不点赞就不礼貌了!