• 软件初步介绍:

    • 为什么我要干这档子事情啊?

      •   一个字,懒,太懒,懒得自己去找,懒得冲会员去下载一些高品质歌,所以干脆写个小东西来搞一搞吧。直接了当,干脆直接balbala一堆歌曲源下载地址,然后丢给迅雷去帮我下载,想想都是很爽的(全站歌曲下载我的电脑撑不住啊)。我也是很不情愿把钱交给程序猿啊,那就来解析解析吧。
    • 命令行执行
      •   懒得去写界面了,直接黑框框挺好看的(哈哈哈,linux用户的一种病)。那就直接用命令行处理所有操作吧。
    • 支持功能
      •     0)绕开白金收费会员才能下载无损品质歌曲的限制;
             1)绕开百度自身版权问题歌曲而无法下载的限制(即便白金收费会员从官方渠道也无该功能);
             2)绕开非大陆之外区域无法下载的限制(即便白金收费会员从官方渠道也无该功能);
             3)一键式全站歌曲下载(即便白金收费会员从官方渠道也无该功能);
             4)绕开高频访问出现验证码的限制
  • 软件开发流程
    • 大体流程:
    • 开发流程:
      •   解析命令行:获取一系列歌曲歌手专辑信息,判定用户使用系统,建立所有数据保存路径。
      •   模拟登陆:通过利用CURL和libcurl库进行模拟登陆。(对百度网页登陆源码进行分析)调用libcurl获得百度的BAIDUID的cookie,从而获得cookie中的token;因为百度会有验证码,所以分析验证码源码,获取验证码进行输入(只需要输入验证码一次),得到BDUSS的cookie(实现免验证登陆的关键);获取完成之后重新编辑登陆源码,(get/post)发送给百度的服务器实现登陆。只有只要利用BDUSS就能够实现免验证登陆了。由于下面频繁的访问百度音乐网页,频繁登陆会使百度敏感,所以后面解析下载地址的时候直接采用并行解析方式进行解析(利用线程容器实现)
      •   获取歌手信息:对网页源码进行解析,得出所有歌手对应的超链接和歌手名称,利用unorder_map进行存储。
      •   获取所有专辑信息:根据歌手的id去解析网页源码,找到对应的额专辑接口(这里比较难以处理),所以直接利用了json11库进行网页解析(解析json格式的网页源码),得出歌手对应的额专辑名称和id,保存在map中。
      •   解析专辑中的所有歌曲信息:由于专辑列表中的歌曲比较多,如果我们高频访问单线程处理的话,百度会对这种操作敏感,所以这里我们采用thread容器进行处理每一张专辑;根据命令中的音质要求进行网页源码解析(歌曲信息都是json格式:采用json11进行解析),解析出每一种品质  -->  对应的三个属性值(码率,歌曲id,等),因为歌曲的下载地址都是一个统一的接口api再加上这三个属性值,所以直接将api和每首歌的三个属性值进行组合即可得到每一首歌的下载地址,保存到map中与歌曲名称对应。输出到txt中。
      •   libcurl库的使用:采用easy  interface(阻塞传输进行发送数据)模拟登陆。了解他的一些基本的使用方法和使用过程。
  • 源码:
    •   主要是采用一些c++11的新特性进行的开发。
    •   源码:github

转载于:https://www.cnblogs.com/Kobe10/p/6391003.html

百度音乐下载地址解析相关推荐

  1. Android获取百度音乐下载音乐和歌词下载链接

    首先,你必须通过以下连接下载歌曲: http://box.zhangmen.baidu.com/x?op=12&count=1&title={title}$${author}$$$$ ...

  2. HtmlAgilityPack 爬虫批量获取百度音乐下载地址一

    2014年8月19日15:26:16 说明:  有些网友发私信或在资源下留言问现在为什么无法抓取百度音乐排行榜了,是不是源代码有问题或代码不全面. 首先感谢你的关注,其次想说这个小工具仅仅是通过抓取百 ...

  3. 如何将百度音乐下载的MP3音乐转换为m4r格式

    在周末或者平时休息的时间,小编我会听听音乐,放松一下,小编比较常用的音乐播放器就是百度音乐,它下载的音乐一般是MP3格式的,所以也不用担心不能播放的问题,但是最近小编遇到了一个问题,我听到一首很好听的 ...

  4. python音乐下载器交互界面设计_用python实现的百度音乐下载器-python-pyqt-改进版...

    之前写过一个用python实现的百度新歌榜.热歌榜下载器的博文,实现了百度新歌.热门歌曲的爬取与下载.但那个采用的是单线程,网络状况一般的情况下,扫描前100首歌的时间大概得到40来秒.而且用Pyqt ...

  5. HtmlAgilityPack.dll爬虫获取百度音乐批量下载地址(C#源码)

    关于分析的过程和思路参考原来的一篇文章 <HtmlAgilityPack 爬虫批量获取百度音乐下载地址一> http://blog.csdn.net/witch_soya/article/ ...

  6. PYTHON 2.7爬虫获取百度音乐文件(按歌手名或歌曲名均可)

    2018.8.3 有点小错误正在修改!!!!    2018.8.6 修正完毕,存在小问题(歌手有多个,会创建多个文件夹)   最近学习了关于python的一点点知识,做出一点点小小程序来帮助自己加深 ...

  7. biabiamiamia百度音乐网批量歌曲下载工具

    [v1.5.20130315] 1)『除错』百度调整了专辑关联歌手名的html代码,biabiamiamia相应调整,否则会出现"未搜索到该歌手"的警告:[v1.4.2013030 ...

  8. Android获取百度音乐的音乐下载地址和歌词下载连接

    首先通过你要下载的歌曲通过下列连接: http://box.zhangmen.baidu.com/x?op=12&count=1&title={title}$${author}$$$$ ...

  9. 基于百度音乐Api的Android高仿音乐播放App可在线试听下载歌词浏览

    基于百度音乐Api的Android高仿音乐播放App可在线试听下载歌词浏览 首先这也是学习过程中开发的一个练手项目,基于百度音乐Api,api在网上搜的,如果想看他的实现,可以下载我的项目来参考.风格 ...

最新文章

  1. python爬网页数据到 excel 自动化_Selenium2+python自动化之读取Excel数据(xlrd)
  2. 如何入门技术、进阶技术(技术开发人员)
  3. prometheus的搭建与使用
  4. 丑憨批的NLP笔记BERT前置:ATUO encoder,DAE
  5. 中国大学MOOC 计算机组成原理第3章 测试
  6. Linux计划任务(at,crontab)
  7. react的单文件编写方式
  8. 永恒python怎么用_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!
  9. Jenkins系列四通过脚本方式部署maven项目,maven聚合项目,前端VUE的springboot项目
  10. BMS 项目过程中遇到的问题
  11. Android Room 升级数据库-增加字段
  12. 使用SaltStack Returner将Salt作业信息接入Elasticsearch的实践(踩坑)
  13. 吴峰光杀进 Linux 内核
  14. 【深度学习】目标检测算法 YOLO 最耐心细致的讲解
  15. html5 视差地图,用HTML5构建高性能视差网站的图文代码详解
  16. C++产生随机数的例题:投骰子的随机游戏
  17. 大学计算机课算绩点吗,大学体育成绩算入绩点吗?
  18. c#调用windows虚拟键盘
  19. 【UCOSIII操作系统】任务篇(1)创建任务
  20. Android连接多个usb,Android实现USB连接

热门文章

  1. java测试步骤_java测试框架的方法
  2. PyQt5学习--基本窗口控件--QMainWindow
  3. python打乱列表的方法_python打乱列表
  4. 医学实验室质量和能力认可准则在实验室信息系统的应用说明CNAS-CL35
  5. pdsh命令控制多台树莓派超爽
  6. 自己定制树莓派Linux内核的步骤
  7. MUI+Htmlplus开发APP实现页面之间传值
  8. 如何让Toast响应点击事件等基础Android基础文章N篇
  9. 主节点数量_你知道电气主接线常见接线方式吗?建议收藏共同学习
  10. modules node 太大了_如何将Node.js Docker镜像大小减小10倍