如何使用Puppeteer调用多个Chrome配置文件批量打开同一链接
你可以通过循环动态生成不同的profile参数,批量启动独立的Puppeteer实例实现需求,示例代码和注意事项如下:
const puppeteer = require('puppeteer'); // 自定义配置 const OPEN_INSTANCE_COUNT = 40; // 要打开的实例总数 const TARGET_LINK = 'https://google.com'; const CHROME_EXEC_PATH = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'; // 替换下方的<你的Windows用户名>为实际系统用户名 const CHROME_USER_DATA_PATH = 'C:\\Users\\<你的Windows用户名>\\AppData\\Local\\Google\\Chrome\\User Data\\'; const batchLaunch = async () => { for (let profileIndex = 1; profileIndex <= OPEN_INSTANCE_COUNT; profileIndex++) { try { const browser = await puppeteer.launch({ executablePath: CHROME_EXEC_PATH, headless: false, // 如需后台无窗口运行改为true args: [ `--user-data-dir=${CHROME_USER_DATA_PATH}`, `--profile-directory=Profile ${profileIndex}` ] }); const page = await browser.newPage(); await page.goto(TARGET_LINK); console.log(`第${profileIndex}个实例启动成功,使用配置文件Profile ${profileIndex}`); // 如不需要保留窗口,取消下方注释即可自动关闭 // await browser.close(); // 启动间隔,避免短时间占用过高系统资源,可自行调整 await new Promise(resolve => setTimeout(resolve, 800)); } catch (error) { console.error(`第${profileIndex}个实例启动失败:`, error.message); } } }; batchLaunch();
注意事项
- 启动前先关闭所有正在运行的Chrome窗口,否则Chrome会锁定用户数据目录,导致新实例无法读取对应配置
- 如需要复用已有的配置文件,调整循环的起始编号和你本地已有的Profile编号对应即可,不存在的配置文件Chrome会自动创建
- 启动数量超过50个时,建议把间隔时间调整到1000ms以上,避免CPU、内存占用过高导致系统卡顿
- Puppeteer会自动分配不同的远程调试端口,无需手动指定,不会出现端口冲突问题
内容的提问来源于stack exchange,提问作者Nicolás Schilling Bouffanais
相关产品推荐
相关产品推荐

