我尝试抓取qq音乐歌单的歌曲列表信息的时候,想使用后端代理进行跨域,但是还是报invalid referer,不明白问题在哪。
export function getSongList(disstid) {
const url = '/api/getSongList';
const data = {
disstid,
type: 1,
json: 1,
utf8: 1,
format: 'json',
g_tk: 5381,
loginUin: 1666707506,
hostUin: 0,
inCharset: 'utf8',
outCharset: 'utf-8',
notice: 0,
platform: 'h5',
needNewCode: 1,
new_format: 1,
onlysong: 0,
picmid: 1,
nosign: 1,
song_begin: 0,
song_num: 100,
_: 1541664934895,
};
return axios.get(url, {
params: data,
}).then(res => Promise.resolve(res.data));
}
后端
app.get('/api/getSongList', function(req, res) {
const url = 'https://c.y.qq.com/qzone/fcg-bin/fcg_ucc_getcdinfo_byids_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) => {
console.log(e);
})
});
前面的的后端代理请求都是可以获得数据的,
但是控制台console的response是这样
查询字符串是没问题的,我看了一下
这里的host和referer好像都没变,是后端代理写错了吗?
把
User-Agent
加上试试