网易云音乐评论抓取(js逆向)

2023-10-30

网易云音乐评论抓取(js逆向)

本文通过分析网易云音乐的js加密,通过构造相关的参数,获取网易云音乐评论。


所用语言和相关模块

  • python3.6
  • requests`

网站特点分析

通过分析网站可知:
评论获取的url:https://music.163.com/weapi/comment/resource/comments/get?csrf_token=
评论获取的方法:post
评论获取的参数:params、encSecKey
且参数为加密参数
在这里插入图片描述
在这里插入图片描述

实现过程

由上面的分析过程可以得知,实现过程分为3部分完成:
1)找出各参数的js代码
ctrl+shift+f掉出全局搜索,输入参数“encSecKey”,找出各参数形成的位置
在这里插入图片描述
在这里插入图片描述

2)分析各参数的加密逻辑
在相关的参数加密获得处打上断点,
由图可知,两个参数的值是由一个函数获取得到,其主要的参数为d,e,f,g
d:通过分析参数的格式可知,rid、threadId为歌曲id,pageNo评论页数, pageSize为页的条数,cursor为该页获取的评论的最小发布时间戳,orderType为排序规则
e为固定值010001
f为固定值00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7
g为固定值0CoJUm6Qyw8W8jud
在函数中,有个比较重要的参数i,其为随机的16位字符串,每次请求可取固定的值,取其值为3XDOKTz8borjR3H3
encSecKey的值的加密代码为h.encSecKey = c(i, e, f),由于i、e、f可为固定的值,故encSecKey取值为i=3XDOKTz8borjR3H3的加密得到1206a2796de825fceaa6d57bbfaf901ce9c13c9f7364fb721aa1260355020a9e7e753744223f165be7a1b4edda2dbac2edda6add418de29793c177c1578611e606f9a35e3d8cb44da198072531528dc551416a6242d9330d410b066f410f6c9fab866cc6b2cc73131f62669042086f3666e3336bc5a2e0acb38ddef443a615da
params的为aes二次加密得到
故此,只需实现aes加密,模拟获取相关的评论
在这里插入图片描述

在这里插入图片描述

3)python实现相关的加密代码
params参数获取:

def get_params():
    """
    获取params参数的值
    :return:
    """
    iv = "0102030405060708"
    i = '3XDOKTz8borjR3H3'
    # 获取密文
    encText = AES_encrypt(d, g, iv)
    encText = AES_encrypt(encText, i, iv)
    return encText

aes加密:

def AES_encrypt(text, key, iv):
    """
    进行aes加密
    :param text:加密的明文
    :param key:密钥
    :param iv:
    :return:
    """
    pad = 16 - len(text) % 16
    text = text + pad * chr(pad)
    encryptor = AES.new(key.encode("utf-8"), AES.MODE_CBC, iv.encode("utf-8"))
    encrypt_text = encryptor.encrypt(text.encode("utf-8"))
    encrypt_text = base64.b64encode(encrypt_text)
    return encrypt_text.decode('utf8')

全部代码

github链接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网易云音乐评论抓取(js逆向) 的相关文章

随机推荐

  • C++工程实践经验

    1 C 工程实践经验谈 陈硕 giantchen gmail com 最后更新 2012 4 20 版权声明 本作品采用 Creative Commons 署名 非商业性使用 禁止演绎 3 0 Unported 许可 协议 cc by nc
  • DF标志和串移动指令(movsb/movsw)

    1 标志寄存器的第10位DF 方向标志位 在串处理指令中 控制每次操作后si di的增减 DF 0 每次操作后 si di增加 DF 1 每次操作后 si di减小 我们可以用汇编语法描述movsb的功能如下 mov es di byte
  • 读写分离(主从复制,Sharding-JDBC)

    目录 1 介绍 2 配置 2 1配置准备 2 2配置主库Master 2 3配置从库Slave 3 读写分离案例 3 1Sharding JDBC 3 2入门案例 1 介绍 MySQL主从复制是一个异步的复制过程 底层是基于MySQL数据库
  • 数控直流电压源的设计与制作【keil5 & AD20]

    目录 1 设计任务与要求 1 1 设计任务 1 2 设计要求 2 设计方案 2 1 系统方案设计 2 1 1 滤波电路 2 2 2 辅助电源电路 2 2 3 三端可调稳压电路 2 2 4 电压 电流采样电路 2 2 元器件选型 2 2 1电
  • 浅析数据库case when 用法

    背景 今天在做一个需求 大致就是根据卡的logo去匹配 卡片的主卡数量 附属卡数量 激活卡数量 未激活卡数量 销卡数量等 当时以为要写很多sql 后来问了下同事说可以用case when写一条sql就能搞定 当时那个开心啊就是这样的O O哈
  • YoloV8改进策略:SPD-Conv加入到YoloV8中,让小目标无处遁形

    摘要 SPD Conv是一种新的构建块 用于替代现有的CNN体系结构中的步长卷积和池化层 它由一个空间到深度 SPD 层和一个非步长卷积 Conv 层组成 空间到深度 SPD 层的作用是将输入特征图的每个空间维度降低到通道维度 同时保留通道
  • arxiv国内镜像——快速下载

    arXiv org是一个收录科学文献预印本的在线数据库 目前包含了超过50万篇文章 并且以每个月5000篇的速度增长着 目前 这个数据库包含 数学 物理 计算机 非线性科学 定量生物学 定量财务以及统计学几大分类 其最重要的特点就是 开放式
  • php结合验证码实现登陆,thinkPHP实现的验证码登录功能示例

    本文实例讲述了thinkPHP实现的验证码登录功能 分享给大家供大家参考 具体如下 使用thinkphp自带的验证 实现登录页面的账号密码 验证码的验证 namespace Admin Controller use Think Contro
  • hashmap的扩容机制

    1 hashmap扩容的代码实现 hashMap的扩容机制 final Node
  • springboot整合IJPay实现微信支付-V3---微信小程序

    前言 微信支付适用于许多场合 如小程序 网页支付 但微信支付相对于其他支付方式略显麻烦 我们使用IJpay框架进行整合 一 IJpay是什么 JPay 让支付触手可及 封装了微信支付 支付宝支付 银联支付常用的支付方式以及各种常用的接口 不
  • Flutter

    看到有不少人在用 CustomScrollView 我实在心痛 杀鸡焉用牛刀 好好看代码 一个小小的 Column 就能解决问题 class AddHeaderFooterListPageState extends State
  • OpenCV3特征提取与目标检测之HOG(一)——HOG的概述与原理

    1 HOG Histogram of Oriented Gradient 是方向梯度直方图的意思 是一种特性描述子 通过计算与统计图像局部区域的梯度方向直方图来构成特征 边缘是图像颜色剧变的区域 在一副图像中 局部目标的表象与形状能够被梯度
  • PDU+远控,企业如何应用工业级智能PDU远程赋能业务?

    在很多企业级业务场景下 如何保障相关业务设备的稳定供电非常重要 插座也就成为了这些业务体系中的核心基建 为了保证相关设备供电的稳定 并且实现高效的远程管理 很多企业级的业务场景会部署专业的智能PDU 而在众多智能PDU设备中 向日葵智能PD
  • AI实战:钉钉 AI 的魔法棒,“小二” 帮你打工

    钉钉作为企业办公领域巨头般的存在 市场规模远超企微和飞书 随着阿里 AI 大模型的能力提升 AI 能力也在慢慢嵌入到阿里各个产品生态中去 钉钉 AI 就是在这样的一个背景下产生的 官方网站 https workspace dingtalk
  • Web项目如何做单元测试

    你可能会用单元测试框架 python的unittest pytest Java的Junit testNG等 那么你会做单元测试么 当然了 这有什么难的 test demo py def inc x return x 1 def test a
  • 在WebStorm中使用Vue的v-bind,v-on等内置指令时报命名空间的错误

    报错详情 Namespace v bind is not bound Namespace v on is not bound 等 问题说明 出现这个错误不是代码本身的问题 而是 WebStorm 这个编辑器的问题 因为 WebStorm 不
  • B+ Tree

    B Tree 什么是B B 树的时间复杂度和高度 Insert 简单的insert 复杂的Insert Delete 简单的delete 复杂的delete 时间复杂度 什么是B B tree是平衡二叉树 每个节点包含k个元素 k的范围在
  • SmartBuffer-让你不再为共享与私有缓存处理逻辑费神

    一 带着问题 找思路 有这样一个需求 有3个算法类 我们分别称为TestAlgo1 TestAlgo2 TestAlgo3 每个算法可以设置使用buffer类型是共享或私有 补充 共享是指在同类型算法的多个实例中使用同一块buffer 比如
  • Python-mock

    文章目录 一 接口测试中Mock的用处 二 使用步骤 1 Moco框架搭建Mock服务 Moco说明 2 Python unittest模块自带的mock 一 接口测试中Mock的用处 前后端开发 后端接口未开发完成 前端调用mock数据进
  • 网易云音乐评论抓取(js逆向)

    网易云音乐评论抓取 js逆向 本文通过分析网易云音乐的js加密 通过构造相关的参数 获取网易云音乐评论 所用语言和相关模块 python3 6 requests 网站特点分析 通过分析网站可知 评论获取的url https music 16