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)