实践网易云API算法,获取评论

前言

音乐解析一直用的METO的,好像他也停止维护了,想获取网易云音乐热评,他的里面没有评论的接口,于是便动手尝试了一遍

分析

本文参照 :https://www.jianshu.com/p/143f1f726ba7  该篇文章而来,他说了很多,也挺详细的,给出了Python的,有兴趣的可以去看看

按照他的方法,找到了产生请求参数params和encSecKey的位置,并且核心js文件名也一直在变,今天14点的时候又发生了一次改变,这个并不影响,只是在抓包替换时候改一下,里面的一些变量名官方也做出了调整,

首先打开 https://s3.music.126.net/web/s/core_ccadc81784e3e2260d08efc0cdcd99eb.js 并保存至桌面

打开Fildder(需要设置HTTPS 在Tools-Options中设置),在右侧找到AutoResponder 并添加 替换规则 ,

原文件 : https://s3.music.126.net/web/s/core_ccadc81784e3e2260d08efc0cdcd99eb.js(5月9日更新)

替换文件为刚保存的文件,刷新网页后,点击链接,看到蓝色背景,即说明正常替换

打开保存的js文件在大约 13014 行处添加console.log(i6c)

强制刷新网页后控制台会输出第一个参数

 

按照此方法依次输出后续参数

$param1 = '{rid: "R_SO_4_28481189", offset: "0", total: "true", limit: "20", csrf_token: ""}';

$param2 = '010001';

$param3 = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7
';

$param4 = '0CoJUm6Qyw8W8jud';

四个参数已知,生成参数params和encSecKey的函数为d函数,找到d函数的位置,a、b、c、函数均与此相关,请求参数params等于h.encText,而h.encText用参数1和参数四进行第一次b函数处理,结果与i作为参数进行第二次b函数处理,i经a函数处理,可以知道是16位随机字符串,b函数为AES加密函数,偏移量为:0102030405060708,模式为CBC;所有都已知可以自行构造出该函数,PHP可以使用openssl_encrypt()来构造,便可得出请求参数encSecKey;

至于第二个请求参数encSecKey的值,我并没有用PHP实现,有实现的的大佬可以教一下,不过这并不影响,他的js文件里完全可以实现,并且字符串都是随机生成的,构造一下完全可以得到结果,密文为256位

这里给出我随机生成的字符串为:

jnhbskihgdjhbgdl

加密后的结果为:1708755d2fac310e44498399aa1abe39205202e2460fb74a6daeea718e4f94ae7d691ff62edcfcbfef81324f214dabb5a8f2b93658345527ccca2e1340d3f79fe4fb4076233d69ff7ef1a10c0e8907496d375619be47750572f3c8868d7bde47c291e6c576f8d2d7db123d72df91f26df8aad063b246295475a197c6e91e80db

有了这些参数便可完成请求,

本地测试结果

与网页端评论一致

这里我有写好的接口

接口地址:https://api.aqzyw.cn/common.php

请求类型:GET

参数:id:歌曲id;page:分页;limit:限制条数

可用来做热评墙,至于歌曲id可以通过歌单爬取,数据量庞大,也可去GitHub找开放的数据

结尾

此篇文章仅供参考,测试与 2019/05/09 ,如果不想动手实践GitHub上也有许多开源项目

本文由 吉音网 作者:yanwu 发表,其版权均为 吉音网 所有,文章内容系作者个人观点,不代表 吉音网 对观点赞同或支持。如需转载,请注明文章来源。

发表评论