Python爬虫实战案例——第四例

文章中所有内容仅供学习交流使用,不用于其他任何目的!严禁将文中内容用于任何商业与非法用途,由此产生的一切后果与作者无关。若有侵权,请联系删除。

目标:网易云音乐歌单评论采集(初级逆向)

地址:aHR0cHM6Ly9tdXNpYy4xNjMuY29tLyMvZGlzY292ZXIvcGxheWxpc3Q=

点击任意歌单进入页面开始分析

搜索评论内容找到评论所在的包

可以看到关键参数主要就是两个------paramsencSecKey

全局搜索encSecKey参数

按F8直到评论区开始加载(因为其他内容加载时使用的也是同一个加密算法,但是参数不同)

可以看到此时两个参数的生成方法已经能够生成调用

在这里我们可以看到几个参数的值,这些参数是作为入口函数调用时需要传入的

那么接下来就要去分析e,f,g三个参数是从何处生成而来。在当前js文件中定位到第二个encSecKey的搜索位置

在这里就可以看到入口处就是刚才定位到的d函数,所以window.asrsea函数中传递的参数依次为d函数中的形式参数d,e,f,g,打上断点来到console中测试输出不难发现这三个值都是固定值,所以就不用再去找其生成逻辑了。

接下来要做的就是将入口函数抠到本地生成两个目标参数,然后将其代入进行请求。初步js代码如下

js 复制代码
function d(d, e, f, g) {
        var h = {}
          , i = a(16);
        return h.encText = b(d, g),
        h.encText = b(h.encText, i),
        h.encSecKey = c(i, e, f),
        h
    }

var d_data = '{"rid":"A_PL_0_26467411","threadId":"A_PL_0_26467411","pageNo":"1","pageSize":"20","cursor":"-1","offset":"0","orderType":"1","csrf_token":""}'
    ,e_data = "010001"
    ,f_data = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
    ,g_data = "0CoJUm6Qyw8W8jud"
d(d_data, e_data, f_data, g_data)

然后就是补函数补环境,缺什么补什么就可以了,补的时候需要注意每个代码块的顺序,nodejs中RSA算法可以使用crypto-js模块来实现,在当前执行环境下输入npm install crypto-js即可完成模块的安装

补完后执行代码结果如下

将d_data进行动态变化修改

复制代码
{"rid":"A_PL_0_2065854146","threadId":"A_PL_0_2065854146","pageNo":"1","pageSize":"20","cursor":"-1","offset":"0","orderType":"1","csrf_token":""}

这个参数中的各个键值对不难分析,重复刚刚对网页的分析步骤就能够知道rid和threadId表示歌单的标识以及id组成,pageNo为页数,其它参数不用改动,所以要获取其他歌单的评论的话修改rid和threadId即可。

最终执行结果如下:

完整代码移步:https://gitee.com/shuailiuquan

相关推荐
FrankYoou44 分钟前
Jenkins 与 GitLab CI/CD 的核心对比
java·docker
麦兜*1 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
KK溜了溜了1 小时前
JAVA-springboot 整合Redis
java·spring boot·redis
小赖同学啊2 小时前
物联网数据安全区块链服务
开发语言·python·区块链
天河归来2 小时前
使用idea创建springboot单体项目
java·spring boot·intellij-idea
weixin_478689762 小时前
十大排序算法汇总
java·算法·排序算法
码荼2 小时前
学习开发之hashmap
java·python·学习·哈希算法·个人开发·小白学开发·不花钱不花时间crud
IT_10242 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
ye903 小时前
银河麒麟V10服务器版 + openGuass + JDK +Tomcat
java·开发语言·tomcat
武昌库里写JAVA3 小时前
Oracle如何使用序列 Oracle序列使用教程
java·开发语言·spring boot·学习·课程设计