【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密

这篇具有很好参考价值的文章主要介绍了【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢!

1、前言

今天逆向的这个网站 某易云音乐 歌曲的评论列表

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

而要拿到评论列表爬虫发送的表单需要两个参数 params 和 encSecKey。这两个玩意是加密的,所以重点就是怎么搞定这两个参数。

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

2、行动

话不多说,直接分析。

首先我们进入到网易云,随便进入某一首歌详情页。通过抓包分析,很轻松的找到了每一首音乐的评论的位置,现在只需要访问 https://music.163.com/weapi/comment/resource/comments/get?csrf_token= 就可以了。

可以看到这是一个post请求,而且携带的这两个参数这么大一坨,不用多想,绝对是个加密参数。但是大家不要慌,让我们全局搜索一下(跟栈也可以,但我觉得这里直接搜索要快一点),仔细分析一波。

通过搜索任意一个参数可以快速找到加密的位置,可以看到

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

接下来就是打断点分析。

首先可以确定的是 params= bVe7X.encText,

encSecKey=bVe7X.encSecKey

而 bVe7X 又等于 window.asrsea 这个函数,观察可知这个函数是需要四个参数的,

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

在控制台中打印一下四个参数,分别是:

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

经过多次测试,发现后面三个参数是不变的(如下图),而第一个参数也只有 rid、threadId、cursor 会变,rid 和 threadId 还是一样的,而且是 R_SO_4_ 加上歌曲的 id,cursor 是毫秒的时间戳,那这就简单了。

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

好了,四个参数已经搞定,接下来就是关键了,进入 window.asrsea 函数

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

可以看到,d 就是 window.asrsea 这个函数。要传入的四个参数我们已经知道了。

不管那么多,直接复制到 js 文件里看看结果。

为了避免与后面其他的参数起冲突,这里我就改了下名字,然后运行。

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

意料之中,报错了。

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

说简单也简单,报错了之后,接下来就是缺什么补什么,这里就大家去 js 页面找自己慢慢去补了哈。

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

另外,当补到b函数的时候,会说 CryptoJS is not defined,仔细一看原来 b 函数里面有个 AES 加密,能调库就调库,这里就npm install crypto-js,然后导入就可以了

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

后面的就没有什么大问题了。补完函数后(大概有34个函数左右,400行左右的 js 代码),我们也是顺利的拿到了想要的东西。

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密,js逆向,Python,笔记,爬虫,javascript,开发语言

虽然过程艰辛,很累的,一味以为拿错了,但结果是好的。接下来就是写代码拿评论了,这里我用的是 execjs 库来执行 js 代码,完整 Python 代码如下:

import json
import time

import execjs
import requests
from fake_useragent import UserAgent


def get_argument(music_id, page):
    with open('./comments.js', 'r', encoding='utf-8') as f:
        time_now = int(round(time.time() * 1000))
        # 第一个 {} 符号被误识别为占位符,导致后面的键值对无法正确替换,可以使用双大括号 {{}} 来表示字面意义上的大括号
        aa = '{{"rid":"R_SO_4_{}","threadId":"R_SO_4_{}","pageNo":"{}","pageSize":"20","cursor":"{}","offset":"0","orderType":"1","csrf_token":""}}'.format(
            music_id, music_id, page, time_now)
        bb = '010001'
        cc = '00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7'
        dd = '0CoJUm6Qyw8W8jud'
        argument_data = execjs.compile(f.read()).call('d', aa, bb, cc, dd)
        params = argument_data['encText']
        encSecKey = argument_data['encSecKey']
    return params, encSecKey


def get_comment(params, encSecKey):
    url = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
    header = {
        "Origin": "https://music.163.com",
        "Pragma": "no-cache",
        "Referer": "https://music.163.com/song?id=65766",
        "Sec-Ch-Ua": "\"Not/A)Brand\";v=\"99\", \"Google Chrome\";v=\"115\", \"Chromium\";v=\"115\"",
        "Sec-Ch-Ua-Mobile": "?0",
        "Sec-Ch-Ua-Platform": "\"Windows\"",
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-origin",
        "User-Agent": UserAgent().random
    }
    data = {
        "params": f"{params}",
        "encSecKey": f"{encSecKey}"
    }
    response = requests.post(url=url, headers=header, data=data)
    data = response.text
    return data


def parse_data(data):
    json_data = json.loads(data)
    comments = json_data['data']['comments']
    print('采集评论数据如下:')
    for i in comments:
        comment = i['content']
        print(comment)


if __name__ == '__main__':
    while True:
        music_id = input('请输入歌曲id:')
        page = input('请输入要采集第几页评论:')
        params, encSecKey = get_argument(music_id, page)
        response_data = get_comment(params, encSecKey)
        parse_data(response_data)
        is_continue = input('是否继续采集(y/n):')
        if is_continue == 'n':
            break

我这里是封装成一次采集一页评论,如果需要采集全部评论的需求,自己修改一下就可以了

3、源码

Github:网易云音乐PC端逆向
CSDN:网易云音乐PC端 js 逆向资源

4、号外

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “👍点赞” “✍️评论” “💙收藏” 一键三连哦!
【👇🏻👇🏻👇🏻关注我| 获取更多源码 | 定制源码】大学生毕设模板、期末大作业模板 、Echarts大数据可视化、爬虫逆向等! 「一起探讨 ,互相学习」!(vx:python812146)
以上内容技术相关问题😈欢迎一起交流学习👇🏻👇🏻👇🏻🔥文章来源地址https://www.toymoban.com/news/detail-620158.html

到了这里,关于【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python爬虫之JS逆向基础小案例:网抑云数据获取

    嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 所用软件 解释器: python 3.8 编辑器: pycharm 2022.3 使用的模块 第三方模块: requests 数据请求 execjs pip install pyexecjs 内置模块(无需安装): nodejs 模块安装: win + R 输入cmd 输入安

    2024年01月20日
    浏览(45)
  • 【Python爬虫案例】抖音下载视频+X-Bogus参数JS逆向分析

    选择自己感兴趣的抖音博主,本次以“经典老歌【车载U盘】”为例 每次请求的页面会有很多接口,需要对接口进行筛选: 第一步筛选XHR筛选 第二步筛选URL中带有post 通过筛选play_add值找到视频的地址 通过对比两次请求发现只有X-Bogus数值会有变化,max_cursor是用翻页,后文再

    2024年03月15日
    浏览(120)
  • 爬虫案例-使用Session登录指定网站(JS逆向AES-CBC加密+MD5加密)

    总体概览:使用Session登录该网站,其中包括对password参数进行js逆向破解                 (涉及加密:md5加密+AES-CBC加密) 难度:两颗星 目标网址:aHR0cHM6Ly93d3cuZnhiYW9nYW8uY29tLw== 下面文章将分为四个部分:         1、定位主体加密函数,进行断点         2、分

    2024年02月09日
    浏览(71)
  • 你评论,我赠书~【哈士奇赠书 - 12期】-〖爬虫逆向进阶实战〗参与评论,即可有机获得

    大家好,我是 哈士奇 ,一位工作了十年的\\\"技术混子\\\", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 🔥 如果感

    2024年02月03日
    浏览(48)
  • Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

    网站链接: aHR0cHM6Ly93d3cua3Vnb3UuY29tLw== 正常抓包分析找到音频链接地址   通过链接搜索找到对应的数据包位置     分析 signature 参数加密位置     通过 s 列表 合并成字符串, 传入d函数中进行加密, 返回32位, 还是比较明显的MD5加密, 相当于请求参数除了signature 以外, 在头尾加了一

    2024年02月02日
    浏览(51)
  • Python爬虫实战案例——音乐爬虫,收费歌曲依旧可用

    因为现在众多音乐平台下载歌曲都要收费了,导致我没有车载音乐听了。于是便自学爬虫做了这个简易的音乐爬虫。不是那些大平台的音乐爬虫,是一个不知名的小音乐网站的爬虫。下面开始正题: 首先,便是找不是那几家大互联网公司的音乐网站,在我的不懈努力之下终于

    2024年02月03日
    浏览(40)
  • WebSocket爬虫与JS逆向实战

    声明:本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负,如有侵权,请联系作者立即删除!由于本人水平有限,如有理解或者描述不准确的地方,还望各位大佬指教!! 练习网站: Q3JhenkgUHJvTW9ua2V5IGh0dHBzOi8vd3d3LnBhbnpob3UuZ292LmNuL3p3Z2tfMTU4NjEve

    2024年02月07日
    浏览(46)
  • 爬虫websocket与RPC逆向案例:某建筑市场监管

    声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关 一、websocket简介 WebSocket是一种在Web浏览器和服务器之间进行全双工通信的协议。它允许在客户端和服务器之间建立持久的连接,使得双方可以通过这个连接实时地交

    2024年01月22日
    浏览(52)
  • 【JS逆向学习】36kr登陆逆向案例(webpack)

    webpack 是一个基于模块化的打包(构建)工具, 它把一切都视作模块 webpack 数组形式,通过 下标 取值 webpack 对象形式,通过 key 取值 接口 : https://gateway.36kr.com/api/mus/login/byMobilePassword 加密参数 : - mobileNo - password 老规矩,先输入 账号、密码 ,点击登录,分析网络请求,如下

    2024年01月19日
    浏览(108)
  • 爬虫+RPC+js逆向---直接获取加密值

    免责声明:本文仅做技术交流与学习,请勿用于其它违法行为;如果造成不便,请及时联系... 目录 爬虫+RPC+js逆向---直接获取加密值 target网址: 抓包 下断点 找到加密函数 分析参数 RPC流程 一坨: 二坨: 运行py,拿到加密值 优志愿_2024高考志愿填报系统-新高考志愿填报选科指南 数据往

    2024年04月14日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包