惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Check Point Blog
GbyAI
GbyAI
D
Docker
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
T
Troy Hunt's Blog
博客园 - Franky
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Microsoft Security Blog
Microsoft Security Blog
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
The Cloudflare Blog
S
SegmentFault 最新的问题
Latest news
Latest news
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
I
InfoQ
博客园 - 【当耐特】
NISL@THU
NISL@THU
A
About on SuperTechFans
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
The Hacker News
The Hacker News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Scott Helme
Scott Helme
雷峰网
雷峰网
C
CXSECURITY Database RSS Feed - CXSecurity.com
Security Latest
Security Latest
V
Vulnerabilities – Threatpost
Security Archives - TechRepublic
Security Archives - TechRepublic
A
Arctic Wolf
Hacker News: Ask HN
Hacker News: Ask HN
N
News and Events Feed by Topic
IT之家
IT之家
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
aimingoo的专栏
aimingoo的专栏
T
Threat Research - Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
SecWiki News
SecWiki News
大猫的无限游戏
大猫的无限游戏
S
Security Affairs
The Register - Security
The Register - Security
www.infosecurity-magazine.com
www.infosecurity-magazine.com
L
LINUX DO - 热门话题
T
Tor Project blog

博客园 - 逸乐太子

豆包无水印图片下载器|新媒体运营、自媒体创作者必备神器 免费无广告!网易UU远程,解锁远程办公、娱乐、运维全能玩法 告别手动复制!公众号文章批量导出工具,极致提升内容运营效率 高效办公神器:可视化Excel文档合并工具,告别手动复制粘贴 全国分省 Excel 爬取后,一键统计全文件数据行数|附即用型统计工具 某速体育网站中canvas数据获取 台风数据采集全攻略:从数据源到实操落地 豆包生成的图片带有AI字样怎么去除? 中国马拉松官方网站赛历信息采集工具 国家标准批量采集工具:全量元数据检索 + 批量导出 知网文献批量采集:BibTeX/EndNote 完整导出(含摘要、关键词、被引、全文链接) 超级课堂题库下载本地工具 洋葱智课在线题库导出工具 【python爬虫定制】PubScholar公益学术平台期刊名称爬取 【python数据采集】阳光高考学校信息采集 python程序的守护工具 【Python数据采集】国家自然科学基金大数据知识管理服务门户数据采集 pyinstaller 打包时第三方模块与图片资源加载 使用python爬取豆瓣电影短评评论内容 使用 js 实现 urljoin 方法 使用 Python 爬取高校教师信息 python从PDF文件中读取国民经济行业分类 国务院办公厅放假通知信息获取 python爬虫之JS逆向 python爬虫之企某科技JS逆向 linux下telnet命令有时无法退出 H5中腾讯地图定位信息在安卓手机中获取不到
python爬虫之JS逆向某易云音乐
逸乐太子 · 2022-06-11 · via 博客园 - 逸乐太子

Python爬虫之JS逆向采集某易云音乐网站

在获取音乐的详情信息时,遇到请求参数全为加密的情况,现解解决方案整理如下:

JS逆向有两种思路:

一种是整理出js文件在Python中直接使用execjs调用js文件(可见我的另一篇文章《 python爬虫之企某科技JS逆向》)。

一种是根据JS中的逻辑,使用Python重写相应的方法。(可见另一篇文章《爬虫之JS逆向》)

本文介绍的也是第一种思路,即从目标网站中提取JS文件,然后由Python中使用execjs调用,得到我们想要的数据。

需求:爬取音乐网站中的飙升榜数据https://music.163.com/#/discover/toplist

遇到的问题:在请求单条音乐详情时遇到请求参数均是加密的情况。

第一步:获取列表数据,此条没什么限制,跳过。

GET请求https://music.163.com/discover/toplist,即可获取到页面信息,从页面中提取信息即可。

第二步:单条音乐播放时,网站发送了请求,在请求回调中返回了音乐文件的地址。

UntitledImage

切换到载荷页签,可以看到params和encSecKey两个参数均是加密状态的数据。

UntitledImage

根据关键词encSecKey来搜索一下脚本文件。通过ctrl+f再次搜索定位到这一行,params和encSecKey两个参数最终的位置定位到了。

UntitledImage

具体代码为:

var bKB3x = window.asrsea(JSON.stringify(i6c), buV0x(["流泪", "强"]), buV0x(Rg2x.md), buV0x(["爱心", "女孩", "惊恐", "大笑"]));
            e6c.data = j6d.cr7k({
                params: bKB3x.encText,
                encSecKey: bKB3x.encSecKey
            })

也就是说我们需要的params和encSecKey是由window.asrsea方法生成,此方法有四个参数,多次调试发现第一个参数与音乐属性相关,后三个参数均为固定的字符串。

在控制台输入window.asrsea敲击回车,查看方法定义,点击一下即可定位到脚本中实际的位置。

UntitledImage

根据方法中的相互引用关系,将JS脚本中相应代码复制到一个JS文件中。

然后根据最终返回的需要,我们再定义一个方法来实现。

function get_params() {
    let d1 = {
        "ids": "[1945262840]",
        "level": "standard",
        "encodeType": "aac",
        "csrf_token": ""
    },
       
        d2 = buV0x(["流泪", "强"]),
        d3 = buV0x(Rg2x.md),
        d4 = buV0x(["爱心", "女孩", "惊恐", "大笑"]);
    let res = asrsea(JSON.stringify(d1), d2, d3, d4);
    return j6d.cr7k({
        params: res.encText,
        encSecKey: res.encSecKey,
    });
}

此处定义的get_parmas中音乐ID写死了的,这个后续可以改成动态的即可。

至此,这个音乐网站的JS逆向算是搞完了。下面来看一下效果。

UntitledImage