这次的目标是aHR0cHM6Ly93d3cua2Fua2FuZXdzLmNvbS9hLzIwMjItMDItMjMvMDAzMTAwNTE3NjUuc2h0bWw=
说难不难,说简单也不简单
慢慢分析吧
首先,确定网页源码没有视频数据,那就肯定是走接口了,找找看吧。
在上图找到了目标接口和数据。
分析接口:
上面的参数咱们从1到6命名
参数1不知道是啥,页面源码搜不到
参数2搜到了,在页面源码,就是一个叫omsid的东西,已解决
参数3和5 固定值,一眼看出来的东西不多解释了
参数4,一眼时间戳,也不解释了
参数5,加密sign
在该接口做请求时,任何一个参数都不能缺失,否则验签失败。
我们需要解决的就是参数1 nonce 和参数5 sign
全局搜sign会比较麻烦,结果有点多
全局搜nonce
在上图第三个js有两个nonce
基本相同哈,但是这里面都没有sign,也没有看到omsid
但是在这俩地方打断点都无法调试。
搜接口吧
只有一个结果,打上断点试试
直接都出来了,跟我们在前面接口看到的参数一样
按照图里的步骤可以看到下图
在_getVideo方法里,获取了参数n,将osmid加入n之后又进行了操作
我们挨个看一下都是进行了什么操作
可以看到
其实就是之前我们nonce的其中一个,可以看到它返回一个字典过去
有时间戳,nonce,platform和version,那这个nonce我们就获取了
然后它把omsid也放进了n里面,用c.a进行操作,同理,我们看看c.a是什么
可以看到
我们唯一不知道就是n这个字典里的排列顺序,也就不知道这个字符串组合之后是啥样的
打断点吧
第一遍执行的时候还没有获取到omsid,咱们继续就行了
这时候出现了omsid,咱们也看到排列顺序:
然后
剩下就一个问题了
什么加密。其实很简单,一眼能看出来是md5,也可以去_()校验一下
这个c方法进去就是md5。
结束。
对了,那个nonce写成定值就行了,没必要去用js生成
然后,找个靠谱的md5加密测试网站
同一条字符串我在三个网站获取了三个结果,还以为这个网站的md5是自己改了用的。差点踩大雷。
这些东西在python里也就十几行代码。用不到写js。
结束。