LoginSignup
5

More than 5 years have passed since last update.

Google ChromeがHeadlessで使える様なのでnode.jsから動かしてみる

Last updated at Posted at 2017-06-15

Google ChromeがHeadlessで使える様なのでnode.jsから動かしてみる

Google Chrome 59からHeadlessモードで起動することができる様になりました。
そこで、node.jsからHeadlessモードのChromeを立ち上げ、ページにアクセスして見たいとおもいます。

注意事項

  • Google ChromeのVersion 59以降であること
  • MacとLinuxで提供されており、Windowsは未対応

使用モジュールのインストール

npmで以下をインストールしてください。

npm install chrome-launcher
npm install chrome-remote-interface

実行コード

javascriptの実行を待ってやる必要がありそうですが、今回はアクセスできたことが確認できるところまで。
どうやって待ってやれば良いのかな。。。

'use strict';

const chromeLauncher = require('chrome-launcher');
const CDP = require('chrome-remote-interface');

const targetUrl = 'https://www.google.co.jp';

async function startHeadlessChrome() {
  try {
    return await chromeLauncher.launch({
      startingUrl: 'target:brank',
      chromeFlags: ['--headless', '--disable-gpu']
    });
  } catch (error) {
    console.log(error);
  }
}

async function main() {
  const chrome = await startHeadlessChrome(targetUrl);
  const options = {
    port: chrome.port
  };

  CDP(options, async(client) => {
    try {
      // extract domains
      const {Network, Page} = client;
      // setup handlers
      Network.requestWillBeSent((params) => {
        console.log(params.request.url);
      });

      // enable events then start!
      await Promise.all([
        Network.enable(),
        Page.enable()
      ]);

      await Page.navigate({url: targetUrl});

      await Page.loadEventFired();
    } catch (error) {
      console.log(error);
    } finally {
        // close the connection to the remote instance.
        await client.close();
        // headless chrome close
        await chrome.kill();
    }
  }).on('error', (err) => {
    // cannot connect to the remote endpoint
    console.error(err);
  });
}

main();

参考

ヘッドレス Chromeことはじめ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5