【发布时间】:2021-05-03 17:59:13
【问题描述】:
我正在尝试在无头模式下使用 puppeteer 截取website (in which I control) 的屏幕截图。
问题是,我的网站上有一个 WebGL 画布不会以无头模式屏幕截图呈现(但可以在有头模式下工作)。
我在无头模式下得到的只是黑色 PNG。
我尝试将 WebGL 上下文参数更改为多种组合,但没有任何效果。
我正在使用 puppeteer 版本 5.5.0 和铬版本 88.0.4298.0
这是我的 puppeteer 爬虫代码:
const puppeteer = require("puppeteer");
const url = "https://phcs93.github.io/genesis/";
async function crawl () {
const browser = await puppeteer.launch({
headless: true,
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--mute-audio'
]
});
const page = await browser.newPage();
await page.goto(url, {
"waitUntil": "networkidle0",
"timeout": 0
});
await page.screenshot({ path: "screenshot.png" });
await browser.close();
}
(async () => await crawl())();
这些是我在网站的 WebGL 上下文中使用的当前参数:
const gl = canvas.getContext("webgl2", {
preserveDrawingBuffer: true,
alpha: false,
antialias: true,
premultipliedAlpha: true
});
【问题讨论】:
-
作为健全性检查,您是否尝试在截屏前添加等待。示例
await new Promise(resolve => setTimeout(resolve, 5000));
标签: node.js canvas webgl puppeteer