深度解析获取作品列表的加密算法

在获取作品列表时,以https://cp.kuaishou.com/rest/cp/works/v2/video/pc/photo/list?__NS_sig3=xxxxxxxxxxx为例,我们发现__NS_sig3是一个由异步回调生成的值。

具体的加密逻辑如下:

s().call("$encode", [...])
  • s().call("$encode", [...]):这部分表示调用对象s()上的call方法,并将$encode作为第一个参数。s()可能表示某个对象或函数的调用,它返回了一个具有call方法的对象。

  • "$encode":这是传递给call方法的第一个参数。

  • [i, { ... }]:这是传递给call方法的第二个参数,是一个数组。数组的第一个元素i是要加密的原数据。第二个元素是一个包含suc和err回调函数的对象。

通过打断点到s()这里,我们可以看到i的具体数值。

进一步发现i也是一个加密的值,类似于md5加密后的样式。我们再往上寻找i的生成地方,发现i是通过m(t, e, n)生成的。

在函数m的内部,我们发现e被JSON序列化后加入到d(i)后面,最终通过a()(s)进行加密。因此,我们需要对i进行处理,并从中理解生成__NS_sig3的过程。

从逻辑上来看,i处理完毕后,我们就可以继续向下进行。由于__NS_sig3是通过s().call()生成的,我们需要确定s()的定义位置。

找到s的定义:s = n.n(o),然后找到o的定义:o = n(7606),我们发现7606是webpack,接下来开始解析webpack。

最后,验证结果。

验证通过后,尝试在Python中运行结果。

  • 先用错误的sig看一下效果。


  • 再试试我们自己生成的sig的结果。


运行完毕~

此部分算法与app中的某部分相似。

**本文仅供学习参考,如有问题询问或有需要可留言,或加q 1018866051 **请备注算法交流

热门手游下载
相关文章