qq音乐服务器的位置,QQ音乐的歌曲真实地址解析
打开该页面地址,是这样的:
梦一场 - 那英 - QQ音乐
点击页面中的播放按钮,会在新页面的播放器里播放该音乐。在新页面中打开开发者工具的网络探测,重新刷新页面,会发现相关请求如下:
https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?g_tk=5381&jsonpCallback=MusicJsonCallback39355320624659207&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0&cid=205361747&callback=MusicJsonCallback39355320624659207&uin=0&songmid=000YU69H3N55rZ&filename=C400000YU69H3N55rZ.m4a&guid=328569683
http://dl.stream.qqmusic.qq.com/C400000YU69H3N55rZ.m4a?vkey=927C721D272189FED484EF874A8D646C6B13C20C53277FB99D496DA6804CDF1B64C33A4F049D24FFC4366605DB4755A6E9AB632AA770C09A&guid=328569683&uin=0&fromtag=66
其中,第二个请求就是音频的真实地址,该地址中主要有如下几个部分:
文件名:C400000YU69H3N55rZ.m4a
vkey参数:927C721D272189FED484EF874A8D646C6B13C20C53277FB99D496DA6804CDF1B64C33A4F049D24FFC4366605DB4755A6E9AB632AA770C09A
guid参数:328569683
uin参数:0
fromtag参数:66
第一个请求的响应如下:
MusicJsonCallback39355320624659207({"code":0,"cid":205361747,"data":{"expiration":80400,"items":[{"subcode":0,"songmid":"000YU69H3N55rZ","filename":"C400000YU69H3N55rZ.m4a","vkey":"927C721D272189FED484EF874A8D646C6B13C20C53277FB99D496DA6804CDF1B64C33A4F049D24FFC4366605DB4755A6E9AB632AA770C09A"}]}})
我们发现,vkey参数值就在上述响应内容里面。songmid的值正好出现在单曲页面URL里面,通过字符串拼接可以得到文件名:"C400" + songmid + ".m4a"
只有文件名和vkey是不够的,还需要知道guid参数值是如何得来的,没有guid参数的话请求音频真实地址会返回响应码403。
r.length > 0 ? MUSIC.jQueryAjax.jsonp({
url: location.protocol + "//c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg",
data: {
cid: 205361747,
format: "json",
callback: a,
uin: g_user.getUin(),
songmid: r.join(","),
filename: n.join(","),
guid: _getGuid()
},
...
}) : t && t()
这段js代码正好写明了请求参数有哪些,guid是通过调用 _getGuid 得到的。_getGuid 方法的代码如下:
function _getGuid() {
if (_guid.length > 0)
return _guid;
var e = MUSIC.cookie.get("pgv_pvid");
if (e && e.length > 0)
return _guid = e;
var t = (new Date).getUTCMilliseconds();
return _guid = Math.round(2147483647 * Math.random()) * t % 1e10,
document.cookie = "pgv_pvid=" + _guid + "; Expires=Sun, 18 Jan 2038 00:00:00 GMT; PATH=/; DOMAIN=qq.com;",
_guid
}
由此可见,guid的核心构造代码是如下两行:
var t = (new Date).getUTCMilliseconds()
_guid = Math.round(2147483647 * Math.random()) * t % 1e10
Python代码示例
import re
import json
import time
import random
import requests
def resolve(url):
"""
resolve audio url
:param url: like 'https://y.qq.com/n/yqq/song/000YU69H3N55rZ.html'
:return:
"""
songmid = re.search('/(\w+).html$', url).groups()[0]
filename = 'C400' + songmid + '.m4a'
guid = int(random.random() * 2147483647) * int(time.time() * 1000) % 10000000000
d = {
'format': 'json',
'cid': 205361747,
'uin': 0,
'songmid': songmid,
'filename': filename,
'guid': guid,
}
r = requests.get('https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg', params=d, verify=False)
vkey = json.loads(r.content)['data']['items'][0]['vkey']
audio_url = 'http://dl.stream.qqmusic.qq.com/%s?vkey=%s&guid=%s&uin=0&fromtag=66' % (filename, vkey, guid)
return audio_url
qq音乐服务器的位置,QQ音乐的歌曲真实地址解析相关推荐
- qq邮箱服务器连接错误代码,qq邮箱错误代码103打不开是怎么回事
有些人因为为qq邮箱打不开是怎么回事显示错误代码103而苦恼,那么qq邮箱打不开是怎么回事呢?显示错误代码103.下面是学习小编给大家整理的有关介绍qq邮箱错误代码103打不开的处理方法,希望对大家有 ...
- QQ显示服务器繁忙2103,qq一直出现错误报告.doc
qq一直出现错误报告 qq一直出现错误报告 QQ错误报告的解决 QQ登录出现错误报告的解决方法 现象:运行QQ时,同时弹出下面的"错误报告"窗口,关闭后QQ密码输入框没法输入密码, ...
- Python连接qq邮箱服务器,调用qq邮箱发送邮件实战演示,qq邮箱授权码开通方法
直接用 python 自带的 smtplib 库和 email 库就能实现邮件的发送. qq 邮箱发送的话,直接用密码是登陆不了的,需要用授权码. import smtplib from email. ...
- java qq邮箱服务器端口_java qq 邮箱发送错误以及端口号
6:sina没错误,但qq有错误?求解答案:将smtp.qq.com个人邮箱爱 改为smtp.exmail.qq.com企业邮箱,建议用企业邮相的主机名 javax.mail.Authenticati ...
- 微软关闭音乐服务器,微软关闭Zune音乐服务 Zune播放器变为MP3
腾讯科技讯 11月16日消息,据外电报道,下载音乐或者串流播放网络歌曲,但Zune播放器仍可作为音乐继续播放器使用. 微软推出首款Zune音乐播放器和相应的Zune数字音乐服务还要追溯到2006年,但 ...
- qq飞车服务器修改器,qq飞车ve修改器
qq飞车ve修改器是一款通过ve修改器查找和修改游戏内存,从而达到刷取s车的目的. 使用方法 1.关闭所有杀毒软件.(VE有时会被误报病毒) 2.启动游戏(窗口化) 3.启动游戏后换上板车 4.最小化 ...
- qq聊天信息服务器,golang实现qq聊天之客户端与服务器
一.用到的net方法 1 .客户端: var buf [512]byte tcpAddr, _ := net.ResolveTCPAddr("tcp", "127.0.0 ...
- 电脑登qq显示服务器返回超时,qq登陆 网络服务器超时
开始第一次号码注册登录.接登录服务器 ]...... 尝试连接UDP登录服务器超时,转尝试连接下一组服务器 UDP登录服务器全部尝试连接失败,尝试下一种登录方式 尝试TCP方式登录,准备连接TCP服务 ...
- qq录制视频保存到哪了?如何更改qq录屏存储位置
一.查看qq录制视频保存位置 如果有录制视频的需求,相信大部分人都是使用qq自带的录屏功能来录制视频.那qq录屏后的视频在哪里去找?今天就给大家分享如何查看qq录制完的视频保存位置操作方法: 第一步: ...
- 击溃音乐服务器第一人!周杰伦新歌首发,QQ音乐服务器一度崩溃
一直以来,在大家眼里,只有微博服务器是"不堪一击"的,明星结个婚,宣布个恋情,微博都会崩.但昨天晚上,击溃音乐平台服务器的男人出现了. 预热多天后,周杰伦的新歌<说好不哭&g ...
最新文章
- select 和 order by
- 不忘初心,努力做最好的自己
- 模拟电路技术之基础知识(六)
- Quartz2D简单图形
- [云炬创业管理笔记]第四章把握创业机会测试2
- 10个让人很舒服的沟通技巧
- php网站的编辑器,5款适合PHP使用的HTML编辑器推荐
- ubuntu14+vmwear联网
- BZOJ1301 字符加密Cipher (后缀数组)
- Fragment 源码解析add()和replace()方法
- vb6源码 ymodem_VB6 实时曲线显示源码全套资料
- 水星usb无线网卡linux驱动下载,水星USB无线网卡mw150us苹果macOS系统驱动成功
- composition API
- 几近完美的手机电脑无缝共享剪贴板神器,终于被我找到了!
- 四叉树——图片应用实例
- 【信号与系统】指数信号与正弦信号
- Redisson延迟队列
- 安装算量软件哪个速度快效率高?
- 34岁的困境!测试工程师如何突破职业瓶颈?
- 简单计算机英语口语对话视频,优秀简短的英语口语对话