• 抓某音乐播放器时现在多了个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
  • 相关阅读:
    UE4——查找指定类型或名称的Actor对象
    unity 替换渲染 ( Rendering with Replaced Shaders )
    浅谈Java消息服务(JMS)规范与ActiveMQ实现
    初识WebSocket(一)--WebSocket介绍与实现简单web群聊
    IDEA编译器常用快捷键总结
    初识Docker(二)--Docker常用命令
    初识Docker(一)--Docker介绍及安装
    自定义hexo博客melody主题标签页title
    vue+springboot+el-uolpad组件实现文件上传
    判断一个数是否为2的整数次幂
  • 原文地址:https://www.cnblogs.com/chun321/p/9644830.html
Copyright © 2020-2023  润新知