无头镀铬,通过代理进行灯塔测试

时间:2020-06-17 08:02:52

标签: node.js proxy google-chrome-headless lighthouse

这几天来,我一直在为自己的问题而受伤,而我对nodejs的不熟练也无济于事。

我目前在nodejs中有一个脚本,并且运行良好,但有时在某些网站上不起作用。因此,我想通过具有ip旋转功能的HTTPS代理进行测试,这带来了两个我无法解决的问题。第一个是我找不到使用无头Chrome认证HTTPS代理的方法。第二个问题是通过免费代理进行的所有呼叫均无法正常工作,从而使灯塔测试失败了。

这是当前代码状态

const chromePath = require.resolve(
  "@serverless-chrome/lambda/dist/headless-chromium"
);
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');

function launchChromeAndRunLighthouse(url, opts, config = null) {
  return chromeLauncher.launch({chromeFlags: opts.chromeFlags, chromePath: chromePath}).then(chrome => {
    opts.port = chrome.port;
    return lighthouse(url, opts, config).then(results => {
      return chrome.kill().then(() => results)
    });
  });
}

const opts = {
  chromeFlags: [
    "--headless",
    "--disable-dev-shm-usage",
    "--disable-gpu",
    "--no-zygote",
    "--no-sandbox",
    "--single-process",
    "--hide-scrollbars",
    "--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36",
    "--proxy-server=https://37.59.61.18:8080"
  ]
};

const start = async () => {
  const url = 'https://www.somewebsite.com';
  if (url === undefined) {
    console.log("no url provided");
  } else {
    console.log(`Requested lighthouse analysis for "${url}"`);
    const results = await launchChromeAndRunLighthouse(url, opts);
    console.log({
        'lighthouse': results.lhr,
        'html': results.artifacts.MainDocumentContent
    });
  }
};

start();

为什么使用--proxy-server选项进行的呼叫失败? 如何使用chromeLauncher对https代理进行身份验证?

预先感谢任何人都可以提供的帮助。

0 个答案:

没有答案
相关问题