diff --git a/lib/routes/bilibili/cache.ts b/lib/routes/bilibili/cache.ts index f567a8cc73..1108290c20 100644 --- a/lib/routes/bilibili/cache.ts +++ b/lib/routes/bilibili/cache.ts @@ -4,7 +4,7 @@ import utils from './utils'; import { load } from 'cheerio'; import { config } from '@/config'; import logger from '@/utils/logger'; -import puppeteer from '@/utils/puppeteer'; +import { getPuppeteerPage } from '@/utils/puppeteer'; import { JSDOM } from 'jsdom'; const getCookie = () => { @@ -22,25 +22,26 @@ const getCookie = () => { } const key = 'bili-cookie'; return cache.tryGet(key, async () => { - const browser = await puppeteer({ - stealth: true, + let waitForRequest: Promise = new Promise((resolve) => { + resolve(''); }); - const page = await browser.newPage(); - const waitForRequest = new Promise((resolve) => { - page.on('requestfinished', async (request) => { - if (request.url() === 'https://api.bilibili.com/x/internal/gaia-gateway/ExClimbWuzhi') { - const cookies = await page.cookies(); - let cookieString = cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join('; '); - - cookieString = cookieString.replace(/b_lsid=[0-9A-F]+_[0-9A-F]+/, `b_lsid=${utils.lsid()}`); - resolve(cookieString); - } - }); + const { destory } = await getPuppeteerPage('https://space.bilibili.com/1/dynamic', { + onBeforeLoad: (page) => { + waitForRequest = new Promise((resolve) => { + page.on('requestfinished', async (request) => { + if (request.url() === 'https://api.bilibili.com/x/internal/gaia-gateway/ExClimbWuzhi') { + const cookies = await page.cookies(); + let cookieString = cookies.map((cookie) => `${cookie.name}=${cookie.value}`).join('; '); + cookieString = cookieString.replace(/b_lsid=[0-9A-F]+_[0-9A-F]+/, `b_lsid=${utils.lsid()}`); + resolve(cookieString); + } + }); + }); + }, }); - await page.goto('https://space.bilibili.com/1/dynamic'); const cookieString = await waitForRequest; logger.debug(`Got bilibili cookie: ${cookieString}`); - await browser.close(); + await destory(); return cookieString; }); }; diff --git a/lib/utils/puppeteer.ts b/lib/utils/puppeteer.ts index 99aa591dc1..4e69dd08da 100644 --- a/lib/utils/puppeteer.ts +++ b/lib/utils/puppeteer.ts @@ -145,6 +145,10 @@ export const getPuppeteerPage = async ( const page = await browser.newPage(); + if (hasProxy) { + logger.debug(`Proxying request in puppeteer: ${url}`); + } + if (hasProxy && (proxy.proxyUrlHandler?.username || proxy.proxyUrlHandler?.password)) { await page.authenticate({ username: proxy.proxyUrlHandler?.username,