QQ音乐接口分析

1.搜索单曲/歌手/专辑...

sign值是加密了的,而且比较复杂,所以我选择用Fiddler插桩来猜测加密的方法。
首先在本地保存一份vendor.chunk.1f17ebf1d66e5a939f5f.js,找到加密函数的位置,做一些改动:

1

2

3

4

5

6

7

8

9

10

11

// for (var h = !1; !h; )

// h = dn[t++];

for (var h = !1; !h; ) {

    h = dn[t++];

    console.log(JSON.stringify(i, function(key, value){

        if (value == window) {

            return undefined;

        }

        return value;

    }));

}

然后确保Fiddler设置无误,刷新并保存控制台的输出,会得到6000多行的日志,我们慢慢分析。
注意到这一行:

1

...["BB111A35"],["2D143488"],[false],[false],[16],[87],[6],[84],[92],[241],[21],[5],[51],[49],["l2zpwCKe8kqK+FVVVFzxUQ"],[5],["l2zpwCKe8kqKFVVVFzxUQ"],[],[null],[32],"zzb"]

不难发现,最终的sign值由独立的四部分组成:"zzb" + 头部("BB111A35") + 中间("l2zpwCKe8kqK+FVVVFzxUQ") + 尾部("2D143488")。
往上能找到头部的生成方式:

1

2

...["4341B984E13D51811724AB0E98139957"],[true],["4341B984E13D51811724AB0E98139957",21]]

...["4341B984E13D51811724AB0E98139957"],[true],"B"]

其中4341B984E13D51811724AB0E98139957是搜索信息通过md5加密后得到的,21是一个固定列表[21,4,9,26,16,20,27,30]的第一个数,而字符串的第21位就是字母B了,也就是头部的第一个字母。尾部的生成方式与头部类似,列表为[18,11,3,2,1,7,6,25]
至于中间,需要三步计算。
第一步,是将md5加密后的字符串转成列表:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],[9],["4341B984E13D51811724AB0E98139957",0]]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],[9],"4"]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],[{ "0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"A":10,"B":11,"C":12,"D":13,"E":14,"F":15},"4"]]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],4]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],4,54]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],4,54,38]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],4,16]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[9]]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[9],[11]]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[9],[11],0]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[9],[11],0,2]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[9],[11],0]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[9],[11],0,1]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[9],[11],1]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[9],["4341B984E13D51811724AB0E98139957",1]]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[9],"3"]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,[{ "0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9,"A":10,"B":11,"C":12,"D":13,"E":14,"F":15},"3"]]

...[],[],[],[],[],[],[],[],[],[],[],[],[],[null],[20],64,3]

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值