使用木偶操作员在无头镀铬中运行Flash游戏

时间:2017-12-26 22:21:22

标签: node.js google-chrome flash puppeteer google-chrome-headless

如何使用木偶操作者在无头镀铬中运行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();
})();

enter image description here

2 个答案:

答案 0 :(得分:1)

在现代Chrome版本中,默认情况下会阻止闪存,并且需要启用用户互动。

由于这是自动化的问题,我已为此目的制作了a puppeteer wrapperpuppeteer.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。如果您需要将其打包并分发给客户,那么这本身就是一大堆问题。然而,对于这个答案,我认为这是偏离主题的。