抓某音乐播放器时现在多了个vkey,导致播放地址有问题,如何抓到vkey

一:在已经通过axios和vue-cli本地服express通过地址获取到songmid这个参数

  在js里面地址和参数如下:

  

// 获取歌手和歌曲的详细信息
export function getSingerDetail (singermid) {
    const url2 = '/api/getSingerDetail'
    const data2 = Object.assign({}, commonPramas, {
        platform: 'yqq',
        needNewCode: 0,
        order: 'listen',
        begin: 0,
        num: 30,
        songstatus: 1,
        singermid: singermid

    })
    return Axios.get(url2, { params: data2 }).then(response => {
        return Promise.resolve(response.data)
    })
}

  在本地请求,偏于用伪头获取导数据,在webpack.dev.conf.js里面的 devServer 对象 里面的 before(app){ } 方法里面加,具体如下:

 

      // 歌手页面的详情页面。获取歌手的详细信息数据
            app.get('/api/getSingerDetail', function (req, res) {
                const url = 'https://c.y.qq.com/v8/fcg-bin/fcg_v8_singer_track_cp.fcg?'
                axios.get(url, {
                    headers: {
                        referer: 'https://c.y.qq.com/',
                        host: 'c.y.qq.com'
                    },
                    params: req.query
                }).then((response) => {
                    res.json(response.data)
                }).catch((e) => {
                    res.json({
                        ERR_OK: 1,
                        data: e
                    })
                })
            })

 二 , 获取到歌手和歌曲的一些基本信息后,利用里面的songmid来获取vkey

  封装的获取方法,具体如下:

// 通过songmid来获取vkey,拼接歌曲地址
// http://dl.stream.qqmusic.qq.com/{filename}?vkey={vkey}&fromtag=66
export function getVkey (songmid) {
    const url3 = '/api/getSongVkey'
    const data3 = Object.assign({}, commonPramas, {
        g_tk: '678733985',
        'hostUin': '0',
        'format': 'json',
        'inCharset': 'utf8',
        'notice': '0',
        'platform': 'yqq',
        'needNewCode': '0',
        'cid': '205361747',
        'songmid': songmid,
        'filename': 'C100' + songmid + '.m4a',
        'guid': '1674273789'
    })
    return Axios.get(url3, { params: data3 }).then(response => {
        return Promise.resolve(response.data)
    })
}

  还是在webpack.dev.conf.js中来创造请求,代码如下:

 // 获取歌曲的vkey
            app.get('/api/getSongVkey', function (req, res) {
                const url = 'https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?'
                axios.get(url, {
                    headers: {
                        referer: 'https://c.y.qq.com/',
                        host: 'c.y.qq.com'
                    },
                    params: req.query
                }).then((response) => {
                    res.json(response.data)
                }).catch((e) => {
                    res.json({
                        ERR_OK: 1,
                        data: e
                    })
                })
            })

三:个去的播放地址,用刚请求的数据进行拼接:

http://dl.stream.qqmusic.qq.com/{filename}?vkey={vkey}&fromtag=66
原文地址:https://www.cnblogs.com/chun321/p/9644830.html