7

任何人都可以帮助我在使用 Node.js 中的灯塔 chrome 启动器时为无头 chrome 设置代理服务器,如此处所述

const launcher = new ChromeLauncher({
    port: 9222,
    autoSelectChrome: true, // False to manually select which Chrome install.
    additionalFlags: [
      '--window-size=412,732',
      '--disable-gpu',
      '--proxy-server="IP:PORT"',
      headless ? '--headless' : ''
    ]
  });

但是,上面的脚本根本没有命中我的代理服务器。Chrome 似乎回退到与目标网站的 DIRECT:// 连接。

另一个讨论在无头 chrome 上下文中使用 HTTP/HTTPS 代理服务器的资源是this。但它没有给出如何从 Node.js 使用它的任何示例。

4

1 回答 1

6

我尝试使用常规exec,它工作得很好,这是我的片段:

const exec = require('child_process').exec;

function launchHeadlessChrome(url, callback) {
  // Assuming MacOSx.
  const CHROME = '/Users/h0x91b/Desktop/Google\\ Chrome\\ Beta.app/Contents/MacOS/Google\\ Chrome';
  exec(`${CHROME} --headless --disable-gpu --remote-debugging-port=9222 --proxy-server=127.0.0.1:8888 ${url}`, callback);
}

launchHeadlessChrome('https://www.chromestatus.com', (err, stdout, stderr) => {
    console.log('callback', err, stderr, stdout)
});

然后我导航到http://localhost:9222并在开发人员工具中看到: 在此处输入图像描述

代理连接错误,没关系,因为我在这个端口上没有代理,但这意味着Chrome试图通过代理连接......

顺便说一句,Chrome 版本是 59。

已检查源代码https://github.com/GoogleChrome/lighthouse/blob/master/chrome-launcher/chrome-launcher.ts#L38-L44

我在这里看不到additionalFlags,只有chromeFlags尝试使用它...

于 2017-05-17T14:48:20.323 回答