Python反爬实战掌握酷狗音乐排行榜加密规则

作者:五包辣条! 时间:2021-05-29 08:05:57 

效果展示

Python反爬实战掌握酷狗音乐排行榜加密规则

爬取目标

网址:酷我音乐

Python反爬实战掌握酷狗音乐排行榜加密规则

工具使用

开发工具:pycharm

开发环境:python3.7, Windows10

使用工具包:requests,re

项目思路解析

找到需要解析的榜单数据

Python反爬实战掌握酷狗音乐排行榜加密规则

随意点击一个歌曲获取到音乐的详情数据 通过抓包的方式获取到音乐播放数据

Python反爬实战掌握酷狗音乐排行榜加密规则

找到MP3的数据提交地址 mp3数据来自于这个url地址

Python反爬实战掌握酷狗音乐排行榜加密规则

Python反爬实战掌握酷狗音乐排行榜加密规则

提交数据的网址:


https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery19102816534571347611_1626783818555&hash=A38449E76C74D45825F565C1FDB825C0&dfid=3dKstH1sJdRa44o6Vj0ZIryF&mid=4458f6d567640b39de367a394d69879e&platid=4&album_id=40437970&_=1626783818556

将多个网址数据进行对比看看哪些参数是需要自行修改的

Python反爬实战掌握酷狗音乐排行榜加密规则 

变化的url数据有3个

  • hash

  • album_id

  • _

_ 可以明显看出来是时间戳 需要获取到对应的hash以及album_id的值 来到主页找寻对应的歌曲id数据 发现数据来自网页源代码

Python反爬实战掌握酷狗音乐排行榜加密规则

歌曲的数据都是来自网页源代码

Python反爬实战掌握酷狗音乐排行榜加密规则

梳理整体思路:

  • 从首页源码里提取出对应的hash、album_id值

  • 组合成新的url地址

  • 获取到json数据总的歌曲播放地址

简易源码分享

本章内容只限学习,切勿用作其他用途!!!!!


import requests
import re
import time
def Tools(url):
   headers = {
       'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.70'
   }
   response = requests.get(url, headers=headers)
   return response
def Save(name, url):
   mp3 = Tools(url).content  # 请求mp3地址链接 返回格式是16进制
   f = open('./kugou/{}.mp3'.format(name), 'wb') # w 文件存在就写入  不存在就会创建  b进制读写
   f.write(mp3)
   f.close()
   print('{}下载完成....'.format(name))
url = 'https://www.kugou.com/yy/html/rank.html'
response = Tools(url).text
album_id = re.findall(r'"album_id":(\d*?),', response) # id
Hash = re.findall(r'"Hash":"(.*?)",', response)  # hash
for a, h in zip(album_id, Hash):
   # 生成时间戳
   time1 = int(time.time() * 1000)
   # 包含歌曲下载地址的url
   urls = 'https://wwwapi.kugou.com/yy/index.php?r=play/getdata&hash={}&dfid=0zlWqK0UWNFa0weUnX0hjlFa&mid=f79511e2e86914b99e351c42ba1f8bc7&platid=4&album_id={}&_={}'.format(h, a, time1)
   response1 = Tools(urls).json()
   audio_name = response1['data']['audio_name'].split('-')[1]
   play_url = response1['data']['play_url']
   Save(audio_name, play_url)

来源:https://blog.csdn.net/AI19970205/article/details/118944328

标签:Python,反爬,酷狗,排行榜
0
投稿

猜你喜欢

  • Python使用自带的ConfigParser模块读写ini配置文件

    2022-04-01 00:07:01
  • Windows下Python使用Pandas模块操作Excel文件的教程

    2021-01-05 23:07:40
  • Python开发之pip安装及使用方法详解

    2022-11-27 06:22:48
  • 原生JS实现旋转木马式图片轮播插件

    2024-04-17 09:45:08
  • Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)

    2021-06-29 20:05:21
  • vue中的mescroll搜索运用及各种填坑处理

    2024-04-30 10:26:39
  • Django项目优化数据库操作总结

    2024-01-20 11:25:50
  • python修改字典键(key)的方法

    2023-04-16 20:26:57
  • Python实现五子棋联机对战小游戏

    2023-10-21 05:25:42
  • JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】

    2024-06-07 15:27:15
  • PHP 使用redis简单示例分享

    2024-05-05 09:18:16
  • python用moviepy对视频进行简单的处理

    2023-08-03 07:02:15
  • 详解如何通过Python制作一个密码生成器

    2023-11-24 10:36:43
  • java学习指南之字符串与正则表达式

    2022-02-23 14:05:50
  • Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法

    2022-11-29 08:22:38
  • python-pymongo常用查询方法含聚合问题

    2021-02-10 21:35:36
  • iis、apache与nginx禁止目录执行asp、php脚本的实现方法

    2023-10-14 11:30:26
  • Python设计模式行为型责任链模式

    2021-08-15 05:58:16
  • Go 语言下基于Redis分布式锁的实现方式

    2024-04-25 13:17:24
  • CSS 几条经典的 CSS Tips

    2008-08-20 18:40:00
  • asp之家 网络编程 m.aspxhome.com