如何使用木偶操作者在无头镀铬中运行Flash游戏?我正在尝试截取此flash game,但游戏无法运行,并被“无法加载插件”文字取代。
这是我用来生成屏幕截图及其输出的相关代码,在windows子系统linux上的ubuntu中运行:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']});
const page = await browser.newPage();
await page.setViewport({width: 1243, height: 882});
await page.goto('http://www.bigfuntown.com/Game-59.html');
await page.screenshot({path: 'game.png'});
await browser.close();
})();
答案 0 :(得分:1)
在现代Chrome版本中,默认情况下会阻止闪存,并且需要启用用户互动。
由于这是自动化的问题,我已为此目的制作了a puppeteer wrapper:puppeteer.setExtra({allowFlash: true})
请注意,由于木偶操纵者的限制,仍然需要headless: false
。
答案 1 :(得分:0)
您需要启用Flash插件。
正如official puppeteer documentation所述:
默认情况下, Puppeteer会在启动Chrome时停用扩展程序。您 可以使用以下方式加载特定扩展名:
const browser = await puppeteer.launch({ headless: false, args: [ '--disable-extensions-except=/path/to/extension/', '--load-extension=/path/to/extension/', ] });
脚注:请注意,根据您使用的操作系统以及您选择分发节点模块/应用程序的方式,这可能会导致不同程度的问题。例如,如果您使用的是Linux,请让最新版本的Flash运行may not be entirely straightforward。如果您需要将其打包并分发给客户,那么这本身就是一大堆问题。然而,对于这个答案,我认为这是偏离主题的。