fix(route): Anti-Anti-Spider 哔哩哔哩 (#10886)
* fix(route): Anti-Anti-Reptilian 哔哩哔哩 * fix(route): Anti-Anti-Reptilian 哔哩哔哩 * fix(route): Remove debugging statement * fix(route): Comply with code specifications by adding a semicolon. * fix(route): Resolve the requested changes Use normative key Use cache.tryGet Use more simplified got request Remove unnecessary template Use default UA * fix(route): Remove unnecessary await * fix(route): Use simplified got request. * fix(route): Use default UA * fix(route): Remove unnecessary require Co-authored-by: cyx20080216 <cyx20080216@qq.com>
This commit is contained in:
parent
b175d5e1c3
commit
6fdd85e0fe
|
|
@ -1,30 +1,53 @@
|
|||
const got = require('@/utils/got');
|
||||
|
||||
module.exports = {
|
||||
getCookie: (ctx) => {
|
||||
const key = 'bili-cookie';
|
||||
return ctx.cache.tryGet(key, async () => {
|
||||
const response = await got(`https://www.bilibili.com/`);
|
||||
return response.headers['set-cookie'];
|
||||
});
|
||||
},
|
||||
getUsernameFromUID: (ctx, uid) => {
|
||||
const key = 'bili-username-from-uid-' + uid;
|
||||
return ctx.cache.tryGet(key, async () => {
|
||||
const { data: nameResponse } = await got(`https://api.bilibili.com/x/space/acc/info?mid=${uid}&jsonp=jsonp`, {
|
||||
const cookie = await module.exports.getCookie(ctx);
|
||||
await got(`https://space.bilibili.com/${uid}/`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}`,
|
||||
},
|
||||
Referer: 'https://www.bilibili.com/',
|
||||
Cookie: cookie
|
||||
}
|
||||
});
|
||||
const {data: nameResponse} = await got(`https://api.bilibili.com/x/space/acc/info?mid=${uid}&token=&platform=web&jsonp=jsonp`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/`,
|
||||
Cookie: cookie
|
||||
}
|
||||
});
|
||||
return nameResponse.data.name;
|
||||
});
|
||||
},
|
||||
getUsernameAndFaceFromUID: async (ctx, uid) => {
|
||||
const cookie = await module.exports.getCookie(ctx);
|
||||
const nameKey = 'bili-username-from-uid-' + uid;
|
||||
const faceKey = 'bili-userface-from-uid-' + uid;
|
||||
let name = await ctx.cache.get(nameKey);
|
||||
let face = await ctx.cache.get(faceKey);
|
||||
if (!name) {
|
||||
const nameResponse = await got(`https://api.bilibili.com/x/space/acc/info?mid=${uid}&jsonp=jsonp`, {
|
||||
if (!name || !face) {
|
||||
await got(`https://space.bilibili.com/${uid}/`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}`,
|
||||
},
|
||||
Referer: `https://www.bilibili.com/`,
|
||||
Cookie: cookie
|
||||
}
|
||||
});
|
||||
name = nameResponse.data.data.name;
|
||||
face = nameResponse.data.data.face;
|
||||
const {data: nameResponse} = await got(`https://api.bilibili.com/x/space/acc/info?mid=${uid}&token=&platform=web&jsonp=jsonp`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/`,
|
||||
Cookie: cookie
|
||||
}
|
||||
});
|
||||
name = nameResponse.data.name;
|
||||
face = nameResponse.data.face;
|
||||
ctx.cache.set(nameKey, name);
|
||||
ctx.cache.set(faceKey, face);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,27 +6,45 @@ const { parseDate } = require('@/utils/parse-date');
|
|||
module.exports = async (ctx) => {
|
||||
const uid = ctx.params.uid;
|
||||
const disableEmbed = ctx.params.disableEmbed;
|
||||
const cookie = await cache.getCookie(ctx);
|
||||
const [name, face] = await cache.getUsernameAndFaceFromUID(ctx, uid);
|
||||
|
||||
const response = await got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=1&keyword=&order=pubdate&jsonp=jsonp`, {
|
||||
await got(`https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/`,
|
||||
Cookie: cookie
|
||||
},
|
||||
});
|
||||
const response = await got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=1&keyword=&order=pubdate&jsonp=jsonp`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`,
|
||||
Cookie: cookie
|
||||
},
|
||||
});
|
||||
|
||||
const vlist = [...response.data.data.list.vlist];
|
||||
const pageTotal = Math.ceil(response.data.data.page.count / response.data.data.page.ps);
|
||||
|
||||
const getPage = async (pageId) => {
|
||||
await got(`https://space.bilibili.com/${uid}/video?tid=0&page=${pageId}&keyword=&order=pubdate`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/`,
|
||||
Cookie: cookie
|
||||
},
|
||||
});
|
||||
return await got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=${pageId}&keyword=&order=pubdate&jsonp=jsonp`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/video?tid=0&page=${pageId}&keyword=&order=pubdate`,
|
||||
Cookie: cookie
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const promises = [];
|
||||
|
||||
if (pageTotal > 1) {
|
||||
for (let i = 2; i <= pageTotal; i++) {
|
||||
promises.push(
|
||||
got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=${i}&keyword=&order=pubdate&jsonp=jsonp`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/`,
|
||||
},
|
||||
})
|
||||
);
|
||||
promises.push(getPage(i));
|
||||
}
|
||||
const rets = await Promise.all(promises);
|
||||
rets.forEach((ret) => {
|
||||
|
|
|
|||
|
|
@ -5,13 +5,19 @@ const utils = require('./utils');
|
|||
module.exports = async (ctx) => {
|
||||
const uid = ctx.params.uid;
|
||||
const disableEmbed = ctx.params.disableEmbed;
|
||||
const cookie = await cache.getCookie(ctx);
|
||||
const [name, face] = await cache.getUsernameAndFaceFromUID(ctx, uid);
|
||||
|
||||
const response = await got({
|
||||
method: 'get',
|
||||
url: `https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=10&tid=0&pn=1&order=pubdate&jsonp=jsonp`,
|
||||
await got(`https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/`,
|
||||
Cookie: cookie
|
||||
},
|
||||
});
|
||||
const response = await got(`https://api.bilibili.com/x/space/arc/search?mid=${uid}&ps=30&tid=0&pn=1&keyword=&order=pubdate&jsonp=jsonp`, {
|
||||
headers: {
|
||||
Referer: `https://space.bilibili.com/${uid}/video?tid=0&page=1&keyword=&order=pubdate`,
|
||||
Cookie: cookie
|
||||
},
|
||||
});
|
||||
const data = response.data;
|
||||
|
|
|
|||
Loading…
Reference in New Issue