Puppeteer 抛出错误“给定 objectId 时无法提取值”

5 node.js web-scraping google-chrome-headless puppeteer

今天在 Ubuntu 上运行的 Puppeteer 中开始出现此错误。以前从未发生过这种情况,而且我们的代码没有改变,只是更新了 Puppeteer。有人有想法吗?

错误:当在 valueFromRemoteObject (/root/bot/node_modules/puppeteer
) 处的断言 (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/util/assert.js:28:15)处给出 objectId 时,无法提取值
-core/lib/cjs/puppeteer/common/util.js:242:28)
在 createClientError (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/util.js:122:16)
处CDPPage._CDPPage_handleException(/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Page.js:894:94)
位于/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common /Page.js:186:100
在 /root/bot/node_modules/puppeteer-core/lib/cjs/third_party/mitt/index.js:3:248
在 Array.map ()
在 Object.emit (/root/bot /node_modules/puppeteer-core/lib/cjs/third_party/mitt/index.js:3:232)
在 CDPSessionImpl.emit (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/EventEmitter.js :87:22)
在 CDPSessionImpl._onMessage (/root/bot/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Connection.js:441:18)
Node.js v18.7.0
退出!


在Ubuntu上工作:20.04.3
节点:14.17.5
puppeteer:9.1.1
puppeteer-extra:3.3.4
puppeteer-extra-plugin-stealth:2.11.1不在 Ubuntu

上工作:22.10 节点:18.7.0 puppeteer:20.2。 1 puppeteer-extra:3.3.6 puppeteer-extra-plugin-stealth:2.11.2





看起来它是一个版本特定的错误。

  const puppeteer = require('puppeteer');

  const withBrowser = async (fn) => {
    const browser = await puppeteer.launch({
      headless: true,
      args: ['--no-sandbox', '--disable-setuid-sandbox', '--proxy-server=zproxy.lum-superproxy.io:22225', '--window-size=' + vWidth + ',' + vHeight],
      ignoreDefaultArgs: ['--disable-extensions', '--disable-default-apps', '--disable-component-extensions-with-background-pages']
    });
    try {
      return await fn(browser);
    } finally {
      await browser.close();
    }
  }

  const withPage = (browser) => async (fn) => {
    const page = await browser.newPage();
    await page.setViewport({ width: vWidth, height: vHeight, deviceScaleFactor: 1});
    try {
      return await fn(page);
    } finally {
      await page.close();
      await browser.close();
    }
  }

  const results = await withBrowser(async (browser) => {
      return withPage(browser)(async (page) => {
        try {
response = await page.goto(pageUrl);
    .catch((err) => {
      console.error(err);
    });
Run Code Online (Sandbox Code Playgroud)

小智 0

看起来这是 Puppeteer 2.1.x 版本中的一个错误

https://github.com/puppeteer/puppeteer/issues/10224