java 爬虫 抓取 网易云音乐

大家好,我是烤鸭:

     今天和大家交流一下爬虫,抓取网易云音乐。只讨论技术,不提倡其他的。

1.    找音乐源地址

谷歌浏览器 F12 ,找请求类型是 Media的。

  

 

2.     找请求链接

切换请求类型到 All,看 Response 包含 mp3 链接的。

 

3.     分析请求

请求头就不说了,主要是 formData 中有两个加密参数 params 和 encSecKey.

先去页面上搜一下 encSecKey 没有任何结果,说明不是页面上的,那就很可能是请求或者js来的。

先找一下js,F12 JS,打开每个js搜一下encSecKey,运气好,第一次就搜到了。

如果没有加载这个js,先清一下缓存再试,ctrl + shift + del。

 

4.    分析js

先格式化js

格式完,还分析个屁...太长了,果断放弃了。

 

5.      对JS 进行debug

既然不能解析js,就先看看请求参数怎么构造出来的。先看看js哪来的,再去source下找到相应的资源。我们看到是s3域名下的。

格式化之后成这样。

搜一下 encSecKey ,有3个地方。可以看出第二个地方有点像发请求构造参数的。断点就打到这。debug看的清楚点。

 

6.      根据debug获取参数

一打debug,就看到请求进来。看链接好像是 feedback 获取评论吧,看下面的两个 parmas和encSecKey就是要传的参数了。

播放一首歌曲,获取播放请求。

7.     java 代码尝试

把上图的params和 encText 复制,构造请求头参数,代码如下

 /***  测试方法*/@Testpublic void test() throws Exception {Map<String, String> params = new HashMap<>();params.put("encSecKey","39c3ef05130d29fe5087a8f34c2bad83a5ba55c469fad98f4bf3259e78f666f503f6e51a15042baf254ed8df00712515b73773882256b0bfd06cad5c6f7152b400ecbfbbd8577bab0b4b32fe3f317242dd265a3397107914d142cf9a7a2c26c76888bbc7dd77254d1b627c1dff218d770aead987fdfe141c9dd527bee691e7f0");params.put("params","Zff/QUCciAB3bqAZIAbjAyA7umXyUkoLWi4jiO/elGeGx/DtZEdV0cnVhdtvMHZtEyGfdtxmnz7phoD/xL3/AXrwN4eSKVFkrPwzublQnlU=");Connection.Responseresponse = Jsoup.connect("https://music.163.com/weapi/song/enhance/player/url?csrf_token=").userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36").header("Accept", "*/*").header("Accept-Encoding", "gzip, deflate, br").header("Accept-Language", "zh-CN,zh;q=0.9").header("Content-Length", "408").header("Content-Type", "application/x-www-form-urlencoded").header("Cookie", "_iuqxldmzr_=32; _ntes_nnid=9a70f3201fcbd6cf4edb02ba394a65c5,1531897058172; _ntes_nuid=9a70f3201fcbd6cf4edb02ba394a65c5; __remember_me=true; usertrack=ezq0o1tsBG6FVe1fBHrBAg==; _ga=GA1.2.1958241620.1533805677; UM_distinctid=16555e96742221-0bc5c3f6fc14a2-9393265-1fa400-16555e96744b4f; vjuids=-89d787cd4.16555e96924.0.e0fc8f49344fa; vjlast=1534744685.1534744685.30; __gads=ID=d7c480b9588b599f:T=1534744686:S=ALNI_Mbb9QcmO1jlX3On_eF82v6dwLy7gg; vinfo_n_f_l_n3=d99ca1905f8ab07f.1.0.1534744684876.0.1534744691814; __utmc=94650624; WM_TID=ymHXXAelaYj3mXYLUXlOTa5z2N%2B8Wk%2B6; __utmz=94650624.1535686730.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); playerid=46149715; JSESSIONID-WYYY=vcZkU3tA2do87BcvX3NOhUIoP6X%2F6Y9c%2FNUlRYpgUF1%5CIAoUpqTy%2B%5CiuVQOxJV8%2BvXO5VWIAAHDzEB%2BG0fZbRDjzIAtMtG8Wc%5CwXF8Y6FWu19Ajs0%5CjdGpPk0M6wkyrmrDhqTe7idwY452wHPkR3oEUYR0CSmWh1eCBEk%2F1N1ye8Cprn%3A1535693748773; WM_NI=i%2B%2BfZIkp2EH5%2BKEJYTld29ezN9qBqTP%2B3RQ2KF1J93rVMarCp%2BXjakOk2vKmUa%2FduI3lHsMxer2sp99K4uKDg9Hkd6lEiUpufIvdUvdCam64ZTjaYu8wLE4x1Nb82UVOS2I%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6eed3d85986ea8cd3c7798f8ba888d45296bdb9afcc6490aaff82ce42bbae989bb42af0fea7c3b92aabf5e587d943a9b0fea6cb3fe9958babdc60b0bcfedae8728ee7bfa3f46094f5fdb3d43a899affabbc39b28a8382f149b4f5988be4618db5fe97ca6797bfe185f843f1b48894d074a7aefe94f333fb95fc96ca50a5e7888ce73eb09ba7b6f37fa697ba85d87ea89daf8eb5409a8ca682dc7ffca984a6b774f392aed9b15f96919dd3cc37e2a3; __utma=94650624.1958241620.1533805677.1535686730.1535693520.2; __utmb=94650624.2.10.1535693520").header("Connection", "keep-alive").header("Host", "music.163.com").header("Origin", "https://music.163.com").header("Referer", "https://music.163.com/").data(params).method(Connection.Method.POST).ignoreContentType(true).timeout(10000).execute();String list = response.body();System.out.println("返回结果值:"+response.statusCode());System.out.println("返回结果:"+list);}

结果如图:

8.    凑请求参数

对着 1 万多行的js,看参数是怎么加密的,太扯了。

 

 

 

 

 

                                            喜欢音乐和电影的朋友,欢迎关注烤鸭的世界。

                                          

 


剩下的有空继续写。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/412893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea警告Cannot resolve MVC View

关闭MVC View路径检查,Settings --> Editor -->Inspections -->搜索Spring MVC View—>取消勾选Spring MVC View Reference

[css] 举例说明在css3中怎么实现背景裁剪?

[css] 举例说明在css3中怎么实现背景裁剪&#xff1f; background-clip: border-box(默认,背景延伸至边框外沿,但是在边框的下层) padding-box(背景延伸至padding的外沿) content-box(背景延伸至内容的外沿) text(背景剪裁成文字的样式)个人简介 我是歌谣&#xff0c;欢迎和大…

django 模型类的常见字段约束,以及filter 过滤和查询

null 不设置时默认设置为False。设置为True时&#xff0c;数据库表字段中将存入NULL的记录。 null和blank组合使用&#xff0c;nullTrue,blankTrue,表示该字段可以为空 blank 默认设置为False。设置为True时&#xff0c;表字段许可无任何输入。设置为False 时&#xff0c;表字段…

idea启动tomcat时蓝屏

idea启动tomcat时蓝屏 环境 1&#xff0c;windows10 2&#xff0c;tomcat8 3&#xff0c;jdk8 4&#xff0c;idea2020 解决方法&#xff1a; 因为之前安装的是绿色版jdk&#xff0c;然后再官网下载exe格式的jdk&#xff0c;idea再更换一下jdk就没有蓝屏了&#xff01; jdk8下…

ssh sftp 免密码 公钥登录

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享的是java ssh sftp 免密码登录。 1. JAVA代码 ssh连接 http://www.360doc.com/content/14/0409/16/9552892_367544139.shtml https://blog.csdn.net/u013066244/article/details/70198839 公钥和私钥不需要用代码生成&…

[css] 如何使用CSS的多列布局?

[css] 如何使用CSS的多列布局&#xff1f; div {-webkit-column-count: 3; /* Chrome, Safari, Opera */-moz-column-count: 3; /* Firefox */column-count: 3; }或者使用flex布局来实现多列布局个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&…

CF989E A Trance of Nightfall(概率+矩阵快速幂优化+倍增)

CF传送门 洛谷传送门 【题目分析】 在zxy大佬的讲解下终于懂了这道题的做法了qwq。。。 首先根据题意&#xff0c;出发点不一定在特殊点上&#xff0c;但第一次操作后&#xff0c;之后所有的操作都是在特殊点上&#xff0c;所以先考虑从线上出发的最大概率&#xff0c;再加一步…

linux centos/redhat mysql8.0安装(汇总贴)

大家好&#xff0c;我是烤鸭&#xff1a; 今天分享一下linux 装 mysql8.0。以下都是实践过的可以用的。 1. yum方式安装&#xff08;最简单方式&#xff09; https://blog.csdn.net/weixin_37264997/article/details/80342838 2. linux系统安装mysql8.0.11完整教程&#xff…

[css] 请说说CSS3实现文本效果的属性有哪些?

[css] 请说说CSS3实现文本效果的属性有哪些&#xff1f; text-shadow:文字阴影效果 word-wrap:换行设置个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

SqlServer自定义聚合函数

sqlserver2017版本包括以上的可以使用string_agg(字段,’,’)函数 sqlserver查询版本&#xff1a; select versionSql Server自定义聚合函数详细bai步骤 开始-> 输出-> 首先用baiVS2008/VS2005建立一个SQL Server项目&#xff0c;右键解决方案添加新项 点击“确定…

C#前后端操作json数据

一、前端代码&#xff1a; function initDeptSelect() {var datas {"plant":$(#plantSelect).val()}; //获取某个组件的值&#xff0c;以json格式形式存放var jsonVal JSON.stringify(datas);//将值转化为json对象&#xff0c;必须要做$.ajax({type: post, …

[css] 请说说在什么时候用transition?什么时候使用animation?

[css] 请说说在什么时候用transition&#xff1f;什么时候使用animation&#xff1f; transition 相当于是个过度动画&#xff0c;需要又过度效果才会触发。一般用来做元素的放大缩小、平移旋转等简单的操作。transition 只执行一次&#xff0c;当需要执行多次时&#xff0c;一…

springboot : Failed to decode downloaded font 和 OTS parsing error

大家好&#xff0c;我是烤鸭&#xff1a; 采坑实录&#xff0c;看了很多人跟我有类似问题&#xff0c;但是都没解决我的问题&#xff1a; Failed to decode downloaded font 和 OTS parsing error: 尝试了把woff文件移动到其他可以加载的静态资源文件夹下&#xff0c;还是无法…

PowerDesigner从数据库导入

第一步&#xff1a;PowerDesigner逆向导入MYSQL数据库并显示中文注释 第二步&#xff1a;PowerDesigner互换表结构中NAME和CODE的值 注意事项&#xff1a; 1&#xff0c;mysql导入可能会卡死&#xff08;我试了好几遍&#xff09; 2&#xff0c;建议使用sqlserver和oracle…

根据时间戳 统计每天用户的金额总数

SELECT FROM_UNIXTIME(add_time, %Y-%m-%d) AS date, sum(price), user_idFROM ryc_order_courseWHERE add_time ! GROUP BY date, user_id 转载于:https://www.cnblogs.com/guolc/p/9934557.html

[css] 说说响应式设计(responsive design)和自适应设计(adaptive design)的区别?

[css] 说说响应式设计(responsive design)和自适应设计(adaptive design)的区别&#xff1f; 响应式是通过视口分辨率识别不同客户端展现不同的布局和内容&#xff0c;一套代码。自适应是通过识别时候分辨率针对不同设备返回不同的页面&#xff0c;多套代码。个人简介 我是歌…

达梦数据库常用SQL

转载请注明原文链接地址 --达梦数据库创建表 create table TEST_TABLE(scid varchar2(10) primary key,scname varchar2(20), scsm number(6), scprice number(4,2) );---------------------当前用户-------------------------- --达梦数据库-获取…

insert ignore duplicate key

Insert into T1select * from T2 where NOT EXISTS (select 1 from T1 X where X.GUIDT2.GUID);转载于:https://www.cnblogs.com/kakaisgood/p/9935028.html

【objectMapper实体转换异常】 com.fasterxml.jackson.databind.exc.MismatchedInputException

大家好&#xff0c;我是烤鸭&#xff1a; 采坑实录&#xff0c;想把json数据直接转成对象&#xff0c;其中有个属性是list<T>&#xff1a; 异常 1 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.ArrayList o…

[css] 什么是脱离文档流?有什么办法可以让元素脱离标准的文档流?

[css] 什么是脱离文档流&#xff1f;有什么办法可以让元素脱离标准的文档流&#xff1f; 文档流就是指元素在 HTML 文档中位置顺序决定排布的过程。HTML 元素有块级元素和行内元素&#xff0c;块级元素一个占一行&#xff0c;行内元素在一行内依次排布。整体元素从上到下的排布…