如何多次启动具有现有配置文件的 puppeteer
how to launch puppeteer with an already existing profile multiple time
所以我尝试使用已经存在的 chrome 配置文件启动 puppeteer 并且它有效,但我想做的是多次启动相同的进程,这会引发错误
(node:12820) UnhandledPromiseRejectionWarning: Error: Failed to
launch the browser process!
[0311/152606.490:ERROR:chrome_main_delegate.cc(679)] Web security may only be disabled if '--user-data-dir' is also specified with a
non-default value
我是这样做的:
const browser = await puppeteer.launch({
executablePath: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
headless: false,
// excludeSwitches: 'enable-automation',
args: [
'--user-data-dir=C:\Users\USER\AppData\Local\Google\Chrome\User Data'
],
});
据我所知,Puppeteer 不允许为同一个 userDataDir 多次启动自己,因为该文件夹包含一个缓存文件夹,每个 puppeteer 实例必须是唯一的。但是,您可以使用同一个浏览器实例打开多个页面。例如:
const browser = await puppeteer.launch({
executablePath: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
headless: false,
// excludeSwitches: 'enable-automation',
args: [
'--user-data-dir=C:\Users\USER\AppData\Local\Google\Chrome\User Data'
],
});
const page1 = await browser.newPage();
const page2 = await browser.newPage();
await page1.goto("https://www.bbc.co.uk", {waitUntil: 'networkidle2'});
await page2.goto("https://www.google.co.uk", {waitUntil: 'networkidle2'});
如果您确实需要完全隔离的 Puppeteer 进程,您需要启动每个进程,每个进程都有自己独特的 userDataDir。您可以尝试仅使用所需的配置文件构建一个轻量级配置文件,并为您启动的每个进程制作一个副本。
抱歉,这不是一个真正完美的解决方案,但我认为您尝试做的事情是不可能的。
所以我尝试使用已经存在的 chrome 配置文件启动 puppeteer 并且它有效,但我想做的是多次启动相同的进程,这会引发错误
(node:12820) UnhandledPromiseRejectionWarning: Error: Failed to launch the browser process! [0311/152606.490:ERROR:chrome_main_delegate.cc(679)] Web security may only be disabled if '--user-data-dir' is also specified with a non-default value
我是这样做的:
const browser = await puppeteer.launch({
executablePath: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
headless: false,
// excludeSwitches: 'enable-automation',
args: [
'--user-data-dir=C:\Users\USER\AppData\Local\Google\Chrome\User Data'
],
});
据我所知,Puppeteer 不允许为同一个 userDataDir 多次启动自己,因为该文件夹包含一个缓存文件夹,每个 puppeteer 实例必须是唯一的。但是,您可以使用同一个浏览器实例打开多个页面。例如:
const browser = await puppeteer.launch({
executablePath: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe",
headless: false,
// excludeSwitches: 'enable-automation',
args: [
'--user-data-dir=C:\Users\USER\AppData\Local\Google\Chrome\User Data'
],
});
const page1 = await browser.newPage();
const page2 = await browser.newPage();
await page1.goto("https://www.bbc.co.uk", {waitUntil: 'networkidle2'});
await page2.goto("https://www.google.co.uk", {waitUntil: 'networkidle2'});
如果您确实需要完全隔离的 Puppeteer 进程,您需要启动每个进程,每个进程都有自己独特的 userDataDir。您可以尝试仅使用所需的配置文件构建一个轻量级配置文件,并为您启动的每个进程制作一个副本。
抱歉,这不是一个真正完美的解决方案,但我认为您尝试做的事情是不可能的。