我正在尝试使用 puppeteer 截取启动页面的屏幕截图,但它引发了错误
TimeoutError: Navigation timeout of 30000 ms exceeded
这是我的代码
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth')();
var Xvfb = require('xvfb');
var express = require('express');
var app = express();
StealthPlugin.onBrowser = () => { };
puppeteer.use(StealthPlugin);
// Required for virtual display in linux environment
var xvfb = new Xvfb({
displayNum: 99,
reuse: true,
silent: true,
xvfb_args: ['-dpi', 72, "-screen", "0", '1920x1080x24'],
});
xvfb.start((err) => { if (err) console.error(err) })
puppeteer.launch({
headless: false,
userDataDir: 'bot',
args: [
'--no-sandbox',
'--proxy-server="direct://"',
'--proxy-bypass-list=*',
'--start-fullscreen',
'--display=' + xvfb._display
]
}).then(async browser => {
console.log('Starting bot ...');
const page = await browser.newPage();
app.listen(3000, function(){
console.log('server is listening at port 3000')
})
app.get('/', async function (req, res) {
res.send('Test')
})
page.setDefaultNavigationTimeout(0)
await page.goto('https://www.facebook.com', { timeout: 0, waitUntil: 'networkidle2' });
// await page.screenshot({ path: 'example.png' });
});
如果我在我的 Windows localhost 设备中运行,但在 ubuntu 服务器中运行时会在上面抛出错误,则它可以工作。它也无法监听我设置的端口。 await browser.newPage();
行似乎有错误我知道这个问题已经发布了很多次,但没有任何效果。
最佳答案
也许你的问题是网站没有正确加载你可以试试这个代码
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth')();
var Xvfb = require('xvfb');
var express = require('express');
var app = express();
StealthPlugin.onBrowser = () => { };
puppeteer.use(StealthPlugin);
// Required for virtual display in linux environment
var xvfb = new Xvfb({
displayNum: 99,
reuse: true,
silent: true,
xvfb_args: ['-dpi', 72, "-screen", "0", '1920x1080x24'],
});
xvfb.start((err) => { if (err) console.error(err) })
puppeteer.launch({
headless: false,
userDataDir: 'bot',
args: [
'--no-sandbox',
'--proxy-server="direct://"',
'--proxy-bypass-list=*',
'--start-fullscreen',
'--display=' + xvfb._display
]
}).then(async browser => {
console.log('Starting bot ...');
const page = await browser.newPage();
app.listen(3000, function(){
console.log('server is listening at port 3000')
})
app.get('/', async function (req, res) {
res.send('Test')
})
await page.goto('https://www.facebook.com', { waitUntil: 'load' });
// await page.screenshot({ path: 'example.png' });
await page.waitForNavigation();
});
关于node.js - 超过 30000 毫秒的 Puppeteer 导航超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72209209/