好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

今日网站

aHR0cHMlM0EvL3d3dy5ocmRqeXVuLmNvbS8lM0YlMjMvYW5jaG9yTGlzdA==

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

抓包分析与加密定位

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

先看看需要分析的请求

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

在请求头里有两个加密的参数 token 和 sign

分析这两个参数可以通过参数名检索和 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 脚本就可以了

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

查看更多关于Python 爬虫进阶必备 | 某直播数据分析平台加密参数 sign 分析的详细内容...

  阅读:40次