feat: 打开渠道与脚本自动化分离

This commit is contained in:
DEV_DSW
2026-03-12 17:05:16 +08:00
parent f084e47c58
commit 236f4c7dc1
12 changed files with 201 additions and 132 deletions

View File

@@ -0,0 +1,39 @@
const preparePage = async (chromium, { tabIndex = Number(process.env.TAB_INDEX), endpoint = process.env.CDP_ENDPOINT || 'http://127.0.0.1:9222' } = {}) => {
const browser = await chromium.connectOverCDP(endpoint);
const context = browser.contexts()[0];
if (!context) {
throw new Error('No browser context available');
}
await context.addInitScript(() => {
Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
});
const idx = Number.isFinite(tabIndex) && tabIndex >= 0 ? Math.floor(tabIndex) : 0;
let pages = await context.pages();
while (pages.length <= idx) {
await context.newPage();
pages = await context.pages();
}
const page = pages[idx];
await page.bringToFront();
return { browser, context, page };
};
const safeDisconnectBrowser = async (browser) => {
if (!browser) return;
try {
if (typeof browser.disconnect === 'function') {
await browser.disconnect();
} else {
await browser.close();
}
} catch {}
};
module.exports = {
preparePage,
safeDisconnectBrowser,
};