Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

这篇具有很好参考价值的文章主要介绍了Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据来源分析💥

网站链接: aHR0cHM6Ly93d3cua3Vnb3UuY29tLw==

歌曲下载 signature 💥

  1. 正常抓包分析找到音频链接地址

    Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

     文章来源地址https://www.toymoban.com/news/detail-785845.html

  2. 通过链接搜索找到对应的数据包位置

    Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

     

    Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

     

  3. 分析 signature 参数加密位置

Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

 

 通过 s 列表 合并成字符串, 传入d函数中进行加密, 返回32位, 还是比较明显的MD5加密, 相当于请求参数除了signature 以外, 在头尾加了一段内容 "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt" 可以直接通过python代码实现不需要额外扣代码

歌曲下载 signature: Python代码实现💥

import hashlib


def download(date_time, music_id):
    """
    :param date_time: 时间戳 1704522723326
    :param music_id: 歌曲ID j58xpcd
    :return: signature 加密参数
    """
    s = [
        "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt",
        "appid=1014",
        f"clienttime={date_time}", # 时间戳
        "clientver=20000",
        "dfid=11S5Hd0E3dhq3jHxZ90dzFYU",
        f"encode_album_audio_id={music_id}",  # 歌曲ID
        "mid=8b5710fdab09aea0e4649de3e430ad23",
        "platid=4",
        "srcappid=2919",
        "token=",
        "userid=0",
        "uuid=8b5710fdab09aea0e4649de3e430ad23",
        "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt"
    ]
    string = "".join(s)
    MD5 = hashlib.md5()
    MD5.update(string.encode('utf-8'))
    signature = MD5.hexdigest()
    return signature

 

歌曲搜索 signature 💥

歌曲搜索主要是获取歌曲的ID, 同样也是MD5加密的方式, 只是传入的参数不一样
 

Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

 

歌曲搜索 signature: Python代码实现💥

def search(date_time, keyword):
    """
    :param date_time: 时间戳 1704522723326
    :param keyword: 搜索关键词 许嵩
    :return:
    """
    s = [
        "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt",
        "appid=1014",
        "bitrate=0",
        "callback=callback123",
        f"clienttime={date_time}", # 时间戳
        "clientver=1000",
        "dfid=11S5Hd0E3dhq3jHxZ90dzFYU",
        "filter=10",
        "inputtype=0",
        "iscorrection=1",
        "isfuzzy=0",
        f"keyword={keyword}",
        "mid=8b5710fdab09aea0e4649de3e430ad23",
        "page=1",
        "pagesize=30",
        "platform=WebFilter",
        "privilege_filter=0",
        "srcappid=2919",
        "token=",
        "userid=0",
        "uuid=8b5710fdab09aea0e4649de3e430ad23",
        "NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt"
    ]
    string = "".join(s)
    MD5 = hashlib.md5()
    MD5.update(string.encode('utf-8'))
    signature = MD5.hexdigest()
    return signature

 

然后整合一下代码, 实现一个搜索下载的功能💥

import hashlib
import time
import requests
import re
import json
import prettytable as pt


def md5_hash(date, keyword):
    text = [
        'NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt',
        'appid=1014',
        'bitrate=0',
        'callback=callback123',
        f'clienttime={date}',
        'clientver=1000',
        'dfid=11S5Hd0E3dhq3jHxZ90dzFYU',
        'filter=10',
        'inputtype=0',
        'iscorrection=1',
        'isfuzzy=0',
        f'keyword={keyword}',
        'mid=8b5710fdab09aea0e4649de3e430ad23',
        'page=1',
        'pagesize=30',
        'platform=WebFilter',
        'privilege_filter=0',
        'srcappid=2919',
        'token=',
        'userid=0',
        'uuid=8b5710fdab09aea0e4649de3e430ad23',
        'NVPh5oo715z5DIWAeQlhMDsWXXQV4hwt'
    ]
    string = ''.join(text)
    # 创建 MD5 哈希对象
    md5 = hashlib.md5()
    # 更新哈希对象的内容
    md5.update(string.encode('utf-8'))
    # 更新哈希对象的内容
    signature = md5.hexdigest()
    print(signature)
    return signature


def save(music_id):
    link = 'https://wwwapi.kugou.com/yy/index.php'
    params = {
        'r': 'play/getdata',
        # 'callback': 'jQuery19105617303032764249_1693890961892',
        'dfid': '11S5Hd0E3dhq3jHxZ90dzFYU',
        'appid': '1014',
        'mid': '8b5710fdab09aea0e4649de3e430ad23',
        'platid': '4',
        'encode_album_audio_id': music_id,
        '_': '1693890961893',
    }
    link_data = requests.get(url=link, params=params, headers=headers).json()
    play_url = link_data['data']['play_url']
    audio_name = link_data['data']['audio_name']
    name = re.sub(r'[\\/:"?*<>|]', '', audio_name)
    content = requests.get(url=play_url, headers=headers).content
    with open('music\\' + name + '.mp3', mode='wb') as f:
        f.write(content)



now_time = int(time.time() * 1000)
keyword = input('请输入歌手名字 / 歌曲: ')
signature = md5_hash(now_time, keyword)
url = 'https://complexsearch.kugou.com/v2/search/song'
data = {
    'callback': 'callback123',
    'srcappid': '2919',
    'clientver': '1000',
    'clienttime': now_time,
    'mid': '8b5710fdab09aea0e4649de3e430ad23',
    'uuid': '8b5710fdab09aea0e4649de3e430ad23',
    'dfid': '11S5Hd0E3dhq3jHxZ90dzFYU',
    'keyword': keyword,
    'page': '1',
    'pagesize': '30',
    'bitrate': '0',
    'isfuzzy': '0',
    'inputtype': '0',
    'platform': 'WebFilter',
    'userid': '0',
    'iscorrection': '1',
    'privilege_filter': '0',
    'filter': '10',
    'token': '',
    'appid': '1014',
    'signature': signature,
}
headers = {
    'Referer': 'https://www.kugou.com/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36',
}
response = requests.get(url=url, params=data, headers=headers)
html_data = re.findall('callback123\((.*)\)', response.text)[0].replace(')', '')

tb = pt.PrettyTable()
tb.field_names = ['序号', '歌手', '歌名', '专辑', 'ID']
lis = []
num = 1
json_data = json.loads(html_data)
for index in json_data['data']['lists']:
    SingerName = index['SingerName']  # 歌手
    SongName = index['SongName']  # 歌名
    AlbumName = index['AlbumName']  # 专辑
    SongID = index['EMixSongID']  # ID
    dit = {
        '歌手': SingerName,
        '歌名': SongName,
        '专辑': AlbumName,
        'ID': SongID,
    }
    tb.add_row([num, SingerName, SongName, AlbumName, SongID])
    lis.append(dit)
    num += 1

print(tb)
page = input('请输入你要下载的歌曲的序号: <全部下载:0> ')
try:
    if page == '0':
        for li in lis:
            save(music_id=li['SongID'])
    else:
        save(music_id=lis[int(page)-1]['ID'])
except Exception as e:
    print('输入有问题', e)
# 我还录制了视频进行详细讲解,都放在这个扣裙了 708525271

 

Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

 

同样也可以结合gui实现一个下载的软件

Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析

 

到了这里,关于Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 网页爬虫逆向与AST入门系列教程(三、使用工具生成和可视化AST)

    在前两篇文章中,我们学习了什么是AST以及它在网页爬虫逆向中的应用。本篇将介绍一些工具和方法,帮助我们生成和可视化AST。 1. AST生成工具 为了生成AST,我们可以使用一些现有的工具来解析代码并生成AST数据结构。这里介绍两个常用的工具: Esprima :Esprima是一个流行的

    2024年02月11日
    浏览(58)
  • 网页爬虫逆向与AST入门系列教程(六、AST的应用之数据提取与分析)

    在前面的文章中,我们介绍了AST的基本概念、生成方法以及在代码混淆解析和反爬虫技术解析中的应用。在本篇中,我们将探讨AST在网页爬虫逆向中另一个重要的应用领域:数据提取与分析。 1. 数据提取与分析简介 数据提取与分析是指从网页中提取出所需的数据,并对其进

    2024年02月12日
    浏览(62)
  • python爬虫入门教程(非常详细):如何快速入门Python爬虫?

    示例示例Python爬虫入门教程什么是爬虫爬虫(又称网络爬虫)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。它可以自动地抓取网页内容,并从中提取有用的数据,存储到本地文件或数据库中。 Python爬虫入门教程 1. 什么是爬虫爬虫(又称网络爬虫)是一种

    2024年02月10日
    浏览(49)
  • Python爬虫简单入门教程

    这篇 Python 爬虫教程主要讲解以下 5 部分 了解网页结构; 使用 requests 库抓取网站数据; 使用 Beautiful Soup 解析网页; 清洗和组织数据; 爬虫攻防战; 网页一般由三部分组成,分别是 HTML(超文本标记语言)、CSS(层叠样式表)和 JScript(活动脚本语言)。 HTML 负责定义网页

    2024年02月06日
    浏览(223)
  • python爬虫入门教程(非常详细)

    爬虫指的是一种自动化程序,能够模拟人类在互联网上的浏览行为,自动从互联网上抓取、预处理并保存所需要的信息。 爬虫运行的过程一般是先制定规则(如指定要抓取的网址、要抓取的信息的类型等),紧接着获取该网址的HTML源代码,根据规则对源代码进行解析和抽取

    2024年02月09日
    浏览(57)
  • Python电商爬虫保姆级入门教程(纯新手向)

    图灵Python课堂 长沙图灵教育于2001年开始进入教育行业,立足泛IT类职业教育,以打造高新技术人才为宗旨,专注于提供多层次、个性化的职业技能培训课程,为各行业培养技术开发、应用和管理等岗位的中高端人才,致力于成为优质的职业教育内容提供商。 0 1 Python优势 1、

    2024年02月15日
    浏览(47)
  • Python爬虫入门教程!手把手教会你爬取网页数据

    其实在当今社会,网络上充斥着大量有用的数据,我们只需要耐心的观察,再加上一些技术手段,就可以获取到大量的有价值数据。这里的“技术手段”就是网络爬虫。今天就给大家分享一篇爬虫基础知识和入门教程: 爬虫就是自动获取网页内容的程序,例如搜索引擎,Go

    2023年04月26日
    浏览(115)
  • Android 逆向入门保姆级教程

    作者:37手游移动客户端团队 前言 什么是 Android 逆向开发? Android 逆向开发是指对已发布的 Android 应用进行分析和破解,以了解应用程序的内部工作原理,获取应用程序的敏感信息,或者修改应用程序的行为。逆向开发可以帮助开发人员了解他人的代码实现,也可以帮助黑客

    2024年02月11日
    浏览(47)
  • 吾爱破解安卓逆向入门教程学习心得(1-4)

    b站视频链接:https://www.bilibili.com/video/BV1wT411N7sV/?vd_source=f767aeec67fd5d5cc2f6ff3e890917d0 源帖:https://www.52pojie.cn/thread-1695141-1-1.html 下载个雷电模拟器,MT管理器,NP管理器 将MT管理器,NP管理器拖到雷电 相关软件地址https://www.aliyundrive.com/s/TJoKMK6du6x 接着在雷电开启root然后重启 具体配置

    2024年02月10日
    浏览(40)
  • Python自动爬取酷狗音乐工具

    在音乐列表页面右击鼠标,点击检查,然后依次执行下述步骤 得到这一坨东西 Ctrl+F,查找MP3  在整个网页链接中,后缀用连接的都是相关级的内容,逐一一段一段的删去........的内容,直至MP3格式的文件不存在,获得最简的链接 注意,由于酷狗的反爬能力升级,所获得的链

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包