Python 爬虫进阶必备 | 某直播数据分析平台加密参数 sign 分析

举报
xianyuplus 发表于 2021/03/30 21:31:53 2021/03/30
【摘要】 今日网站aHR0cHMlM0EvL3d3dy5ocmRqeXVuLmNvbS8lM0YlMjMvYW5jaG9yTGlzdA==被催更了,最近临近特殊时期,所以比较忙,趁着有空来一发。抓包分析与加密定位今天这个网站的加密也是比较简单的,所以速战速决。先看看需要分析的请求我们需要抓取的是主播流量数据,通过抓包分析可以定位到下面这个请求在请求头里有两个加密的参数token和sign分析这两个参数...

今日网站

aHR0cHMlM0EvL3d3dy5ocmRqeXVuLmNvbS8lM0YlMjMvYW5jaG9yTGlzdA==

被催更了,最近临近特殊时期,所以比较忙,趁着有空来一发。

抓包分析与加密定位

今天这个网站的加密也是比较简单的,所以速战速决。

先看看需要分析的请求

我们需要抓取的是主播流量数据,通过抓包分析可以定位到下面这个请求

在请求头里有两个加密的参数tokensign

分析这两个参数可以通过参数名检索和xhr断点两种方式分析,这里先简单检索一下参数名。

如果是新手朋友,xhr断点的分析方式可以在用参数名分析的方式定位出加密位置之后自己另外试试,锻炼自己分析堆栈的思维

我们直接检索sign不管是否加上:结果都是非常多的

所以尝试下之前提过的方法

当检索加密参数名,结果很多的时候,可以通过检索请求的其他参数名来分析定位,一般它们都是一起提交的,所以一般都会写在一块

所以这里检索tenant这个参数,可以看到结果很少,而且有价值的结果也很明显

在第二条结果里再次定位,就能够看到我们需要的结果了

打上断点再次刷新验证猜想

可以看到断点成功断上了

我们简单分析一下

变量f也就是参数sign它的加密是由V(pe(be(h)) + "&accessSecret=800006").toUpperCase();得到的

参数token的结果是由c["a"].globalData.token;得到的

现在只要把其中的执行的函数扣出来,能跑通就完成参数的生成了

加密逻辑分析

先来看看参数token

从名字来看,这个参数是一个全局的变量,但是通过检索,发现这个参数是没有检索结果的,而且多次刷新都没有变化

我切换到其他的浏览器测试,这个参数的值多次刷新也是没有变化的,所以这个参数可能是账号+浏览器环境结合生成的的一种标识,长得唬人而已,当作固定值就好

再看下参数sign

可以看到它的加密是由V(pe(be(h)) + "&accessSecret=800006").toUpperCase();得到的,所以我们一步一步来看

首先执行的是be(h)

好像看不出来有做什么特殊的操作,我们验证一下

继续验证下pe(be(h)

可以看到pe是用=将参数拼接起来

继续看V(),这个时候传入的参数是days=3&accessSecret=800006

同时传入到X(Q(K(e)))这段代码里,我们继续调试

同时用console辅助调试

方法K将参数做了CharCode

这里因为我们的参数是由英文和数字组成,所以没有变化

下面继续分析方法Q,console辅助调试结果显示,Q也是做了一系列的位运算

没分析出来具体是什么,直接抠出来

得到Q的结果之后再看X

这里的W是固定值0

我们直接带入代码就可以得到下面的结果了

可以看到和浏览器运行结果一样

之后经过大写转换就和请求提交的完全一样了


之后直接传入Python脚本就可以了

好了,以上就是今天的全部内容了,咱们下次再会~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。