zoukankan      html  css  js  c++  java
  • 百度音乐下载地址解析

    • 软件初步介绍:
      • 为什么我要干这档子事情啊?
        •   一个字,懒,太懒,懒得自己去找,懒得冲会员去下载一些高品质歌,所以干脆写个小东西来搞一搞吧。直接了当,干脆直接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
  • 相关阅读:
    css应用视觉设计
    HTML中name、id、class的区别介绍
    css怎么选择父元素下的某个元素?
    css权重如何计算的?
    如何更有效的消灭watchdogs挖矿病毒?华为云DCS Redis为您支招
    分布式缓存Redis应用场景解析
    【云速建站】让你轻轻松松建立属于自己的网店
    一张图读懂什么是专属分布式存储
    【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(2)
    【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(1)
  • 原文地址:https://www.cnblogs.com/Kobe10/p/6391003.html
Copyright © 2011-2022 走看看