1.任务介绍
获取每首歌下面的所有评论,通过抓包工具,可以看到该请求返回的数据中,包含了一个页面(这首歌一共有261页评论)的20条评论

因此,拿到每个页面的url就能得到所有评论数据。

对headers进行查看,发现这是一个post请求,form data为params和encSecKey(下图为第一页的params和encSecKey):

从上图可以看出,params和encSecKey都是经过加密的长字符串。
对评论的第二页进行分析,发现request url和第一页一样,只是params和encSecKey不一样:

返回的数据同样也包含了20条评论:

因此,通过不同的params和encSecKey就可以获取歌曲的所有评论。任务的关键就在于加密的params和encSecKey是如何产生的。
2.params和encSecKey的产生过程
点击第一个页面所对应的initiator:

initiator标记请求是由哪个对象或进程发起的,从下到上依次排列,因此最上方的就是最后发出请求的对象。点击最上方的那个对象:

这样看起来不方便,点击左下角这个符号,format一下:

在该页面中使用Ctrl+F寻找“encSecKey”:(为什么不查找“params”?因为params出现的次数较多)

可以看到params和encSecKey来源于bMq3x,而bMq3x又来源于window.asrsea这个函数。因此,我们需要知道window.asrsea这个函数是干什么的。在页面中查找“window.asrsea”:

即d函数就是window.asrsea函数:(python版本在后面代码中有)
!function() {
function a(a) {
var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = "";
for (d = 0; a > d; d += 1)
e = Math.random() * b.length,
e = Math.floor(e),
c += b.charAt(e);
return c
}
function b(a, b) {
var c = CryptoJS.enc.Utf8.parse(b)
, d = CryptoJS.enc.Utf8.parse("0102030405060708")
, e = CryptoJS.enc.Utf8.parse(a)
, f = CryptoJS.AES.encrypt(e, c, {
iv: d,
mode: CryptoJS.mode.CBC
});
return f.toString()
}
function c(a, b, c) {
var d, e;
return setMaxDigits(131),
d = new RSAKeyPair(b,"",c),
e = encryptedString(d, a)
}
function d(d, e, f, g) {
var

本文介绍了如何获取163音乐歌曲评论的过程,包括params和encSecKey的加密机制。通过分析网络请求,发现它们是经过特定函数处理的加密字符串。params和encSecKey的产生涉及window.asrsea函数以及固定字符串bsy0x的拼接。通过理解这些参数的生成方式,可以动态修改第一个参数以下载不同页面的评论。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



