1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
const { chromium } = require('playwright'); const path = require('path'); const fs = require('fs-extra');
const getExtensionsPath = () => { const extensionPath = path.join(__dirname, '../extensions'); const extensionIds = [ 'mcohilncbfahbmgdjkbpemcciiolgcge', ]; const EXTENSION_PATHS = extensionIds.map(id => path.join(extensionPath, id)); const extensions = EXTENSION_PATHS.map(p => getLatestExtensionDir(p)).join(','); return extensions; }
const getLatestExtensionDir = (basePath) => { const versionDirs = fs.readdirSync(basePath) .filter(f => fs.statSync(path.join(basePath, f)).isDirectory()) .sort((a, b) => { const [v1] = a.split('_'); const [v2] = b.split('_'); return v2.localeCompare(v1, undefined, { numeric: true }); }); return path.join(basePath, versionDirs[0]); }
const getUserDataDir = (userIndex = '0') => { const userDataDir = path.join(__dirname, '../userData', userIndex); return userDataDir; }
const createBrowser = async (proxyIndex) => { const extensionPath = getExtensionsPath(); const userDataDir = getUserDataDir(); const browserContext = await chromium.launchPersistentContext(userDataDir, { headless: false, args: [ `--disable-extensions-except=${extensionPath}`, `--load-extension=${extensionPath}`, ], }); return browserContext; }
module.exports = { createBrowser, getUserDataDir, }
|