Fiddler抓包工具
一、Fiddler工具使用
Fiddler简介:
Fiddler 是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的 代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改。代理就是在客户 端和服务器之间设置一道关卡,客户端先将请求数据发送出去后,代理服务器会将数据包进 行拦截,代理服务器再冒充客户端发送数据到服务器;同理,服务器将响应数据返回,代理服务器也会将数据拦截,再返回给客户端。其工作原理图如下图所示:
Fiddler配置流程:
1、打开tools–>>options
2、配置https
3、配置connections
4、安装证书
Fiddler工具使用介绍:
二、QQ音乐下载
分析步骤如下:
第一步:
进入QQ音乐歌单点击播放,按F12打开开发者工具
第二步:分析改接口,重点聚焦参数,现vkey不同,接下来找vkey是如何获取的
第三步:Ctrl+F搜索vkey即可
到此找到了vkey的获取方式,这个prul其实就是下载的真实链接
第四步:分析上面接口,找出两个接口
对照参数,找到下面这条接口里面就有songmid
到此找到了vkey的获取方式,这个prul其实就是下载的真实链接
代码实现:
import requests
class QQ_Music(object):
'''
下载歌单歌曲信息
'''
def __init__(self, disst_id):
self.disst_id = disst_id
self.base_headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
# 'origin': 'https://y.qq.com',
}
def get_purl(self, mid):
'''
获取歌曲的下载连接
:param mid: song_mid
:return:
'''
print(mid)
base_url = 'https://u.y.qq.com/cgi-bin/musicu.fcg?'
vkeys_headers = {
# 'Cookie': 'player_exist=1; pgv_pvi=7301237760; pgv_si=s9195997184; pgv_info=ssid=s19087756; pgv_pvid=8415264692; ts_uid=6315578108; qqmusic_fromtag=66; _qpsvr_localtk=0.5418903205743426; RK=sTQE3uo24X; ptcz=5074f2d23e4740c6f000f402aa7f94ea77eb8676fc8a86a6a2ceec24ddc41f9c; psrf_qqopenid=F7E16C6D0CCE28D2D5D406CC7155C804; psrf_qqrefresh_token=6935E771A3A8799DDEE88015C5B8E22D; psrf_access_token_expiresAt=1602642207; euin=owoAoenP7inl7z**; psrf_musickey_createtime=1594866207; psrf_qqunionid=86FBBBC2A4E959DE1573FC4D9BE292B3; uin=2320047077; psrf_qqaccess_token=33BCCB2745ED4C9E2FE1D2B5114F0731; qqmusic_key=Q_H_L_2yXkFy50eeUgoHT0jwWPc2AGt0diA_6iKqbn6VQ8DhYHJ9gZbJGQENVPPvxSyq3; qm_keyst=Q_H_L_2yXkFy50eeUgoHT0jwWPc2AGt0diA_6iKqbn6VQ8DhYHJ9gZbJGQENVPPvxSyq3; tmeLoginType=2; ts_refer=www.baidu.com/link; yq_playschange=0; yq_playdata=; userAction=1; yqq_stat=0; yq_index=0; yplayer_open=1; ts_last=y.qq.com/portal/player.html',
'Referer': 'https://y.qq.com/portal/player.html',
'Sec-Fetch-Site': 'same-site',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Host': 'u.y.qq.com',
'Connection': 'keep-alive',
'Accept': 'application/json, text/javascript, */*; q=0.01'