Python实现解千千音乐网站中的JS加密算法

Posted 程序猿中的BUG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python实现解千千音乐网站中的JS加密算法相关的知识,希望对你有一定的参考价值。

网络爬虫

网络爬虫,不知道大家是否有过了解?今天白又白给大家写个解千千音乐网站中的JS加密算法,如果有哪里不对的,还请大佬们指正。

想要和我一起学习爬虫的你,那你首先要掌握一些有关爬虫的基础知识,要知道什么是爬虫?数据是从哪里得来的?先了解一些基础的知识点才能开始真正学习爬虫呀。基础知识问题都是可以在网上查询到的,嘻嘻

我对爬虫的工作的理解就是模拟我们通过浏览器获取网页信息的过程,无外乎“发送请求—获得页面—解析页面—抽取并储存内容”从这个过程中,我们可以获取到的信息是,在爬虫工作中需要涉及到前端页面相关的知识,网络协议相关的知识,以及数据存储的相关知识。因此根据这个过程还需要进一步掌握更多的技术。

爬虫在互联网世界中有很多的作用,比如:数据采集\\抓取微博评论(机器学习舆情监控)\\抓取招聘网站招聘信息(数据分析、挖掘)\\新浪滚动新闻\\百度新闻网站\\软件测试\\爬虫之自动化测试\\虫师\\12306抢票\\网站上的投票\\网络安全\\短信轰炸\\web漏洞扫描等等一切有用好玩又有趣的用途。

进入正文

爬取目标

网站:千千音乐-大风吹 (taihe.com)

工具使用

开发工具:pycharm
开发环境:python3.7, Windows10
使用第三方库:requests,time, hashlib

重点学习的内容

sign参数加密

url请求参数拼接

时间戳的运用

页面分析

首先进入到音乐的播放页面 寻找播放地址

第一步:打开网页,鼠标右击点击检查,然后点击播放音乐
第二步:选择媒体接口
第三步:要定位到音乐播放的时候的接口,因为播放音乐的时候是有单独的接口

详细的看下图:

注意一下复制这个后缀 用来搜索 看看播放地址是在哪个接口里面有包含

然后ctrl+f输入搜索的关键字

sign生成位置在return 前面打上断点,具体看以下图片

注意加密位置md5加密算法,然后r是请求参数,所以seret上面申明的固定字符串。

代码实现

import hashlib
import time
import requests
​
​
time1 = int(time.time())
r = f"TSID=T10046047408&appid=16073360&timestamp={time1}" + '0b50b02fd0d73a9c4c8c3a781c30845f'
byte_row = r.encode('utf-8', 'ignore')
md5 = hashlib.md5()
md5.update(byte_row)
sign = md5.hexdigest()
​
url = f'https://music.taihe.com/v1/song/tracklink?sign={sign}&appid=16073360&TSID=T10046047408&timestamp={time1}'
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38'
}
response = requests.get(url, headers=headers).json()
print(response)

我是白又白i,一名喜欢分享知识的程序媛❤️
如果对Python爬虫、数据分析、机器学习、人工智能、面试经验、接单兼职、代码画图、游戏代码感兴趣可以进到881744585,群内会有不定期的分享学习资料和有趣的代码。还会有技术大牛,业内同行一起交流技术

以上是关于Python实现解千千音乐网站中的JS加密算法的主要内容,如果未能解决你的问题,请参考以下文章

Python实现解千千音乐网站中的JS加密算法

js加密代码问题,我在网站的一个js文件中看到这种加密代码,这是哪种类型的加密啊!有办法解吗?

python爬千千音乐

如何在 Python3 中解压缩使用 PKZIP 以外的算法加密的文件?

Node.js中不同加密算法的实现

华为OD机试真题 JS 实现简单的解压缩算法2023 Q1 | 200分