初始化提交
This commit is contained in:
46
backend/src/handler/proxy.js
Normal file
46
backend/src/handler/proxy.js
Normal file
@@ -0,0 +1,46 @@
|
||||
const logger = require('consola');
|
||||
const got = require('got');
|
||||
|
||||
async function proxyAudio(req, res) {
|
||||
const url = req.query.url;
|
||||
const source = req.query.source;
|
||||
const referer = req.query.referer;
|
||||
|
||||
if (!url || !source) {
|
||||
res.status(400).send({
|
||||
status: 1,
|
||||
message: "url and source are required"
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 只允许 bilibili 源
|
||||
if (source !== 'bilibili') {
|
||||
res.status(403).send({
|
||||
status: 1,
|
||||
message: "only bilibili source is allowed"
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const stream = got.stream(url, {
|
||||
headers: {
|
||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko)',
|
||||
'Referer': referer || 'https://www.bilibili.com'
|
||||
}
|
||||
});
|
||||
|
||||
stream.pipe(res);
|
||||
} catch (err) {
|
||||
logger.error('proxy audio error:', err);
|
||||
res.status(500).send({
|
||||
status: 1,
|
||||
message: "proxy failed"
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
proxyAudio
|
||||
};
|
||||
Reference in New Issue
Block a user