当浏览器正常启动时,浏览器是否可以无中断执行,反之亦然?

问题描述 投票:1回答:1

我想立即启动一个Chrome浏览器无头,进行一些自动化操作,然后在完成剩下的工作之前将其打开。

这是否可以使用Puppeteer,如果是,你能告诉我怎么做?如果不是,那么浏览器自动化是否还有其他框架或库可以做到这一点?

到目前为止,我已经尝试了以下但它没有用。

const browser = await puppeteer.launch({'headless': false});
browser.headless = true;
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'});
await page.pdf({path: 'hn.pdf', format: 'A4'});
javascript node.js google-chrome-devtools puppeteer
1个回答
2
投票

Short answer: It's not possible

Chrome只允许以无头模式或非无头模式启动浏览器。您必须在启动浏览器时指定它,并且在运行时无法切换。

可能的是,启动第二个浏览器并重用第一个浏览器中的cookie(以及任何其他数据)。

Long answer

您可以假设在调用puppeteer.launch时可以重用数据目录,但由于多个错误(在puppeteer repo中使用#1268#1270),目前无法实现。

因此,最好的方法是在浏览器实例之间共享save any cookies或本地存储数据,并在启动浏览器时恢复数据。然后,您第二次访问该网站。请注意,当您重新抓取页面时,网站在JavaScript变量方面的任何状态都将丢失。

Process

总而言之,整个过程应该看起来像这样(反之亦然,无头到头):

  • 在非无头模式下爬行,直到您想要切换模式
  • Serialize cookies
  • 启动或重复使用第二个浏览器(无头模式)
  • 恢复cookie
  • 重新访问页面
  • 继续抓取
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.