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

小知识,大挑战!本文正在参与“  程序员必备小知识  ”创作活动

本文同时参与 「掘力星计划」  ,赢取创作大礼包,挑战创作激励金

网络爬虫

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

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

image.png

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

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

image.png

进入正文

爬取目标

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

123.png

工具使用

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

重点学习的内容

sign参数加密

url请求参数拼接

时间戳的运用

页面分析

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

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

详细的看下图:

234.png

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

345.png

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

456.png

567.png

678.png

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

789.png

8910.png

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

91011.png

代码实现

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)
复制代码

image.png

我是白又白i,一名喜欢分享知识的程序媛❤️
感兴趣的可以关注我的公众号:白又白学Python【非常感谢你的点赞、收藏、关注、评论,一键三连支持】

猜你喜欢

转载自juejin.im/post/7018443304706523173