mozyのかきおき

mozyの読書感想文や思考置き場

Puppeteer から Headless Chromium を動かしている時のログ

f:id:mozy_ok:20181205144238j:plain

概要

Headless modeが TrueかFalseかでChromiumの動作が変化するが、それをどうやって実現しているのかが知りたかったので調査した。

以下のようにオプションで指定し変化させてログを確認してみる。
puppeteer.launch({ headless: false })

Headless が有効な時

puppeteer.launch({ headless: ture }) の場合

[ '/mozy/headless_test/node_modules/puppeteer/.local-chromium/mac-609904/chrome-mac/Chromium.app/Contents/MacOS/Chromium',
        '--disable-background-networking',
        '--disable-background-timer-throttling',
        '--disable-backgrounding-occluded-windows',
        '--disable-breakpad',
        '--disable-client-side-phishing-detection',
        '--disable-default-apps',
        '--disable-dev-shm-usage',
        '--disable-extensions',
        '--disable-features=site-per-process',
        '--disable-hang-monitor',
        '--disable-ipc-flooding-protection',
        '--disable-popup-blocking',
        '--disable-prompt-on-repost',
        '--disable-renderer-backgrounding',
        '--disable-sync',
        '--disable-translate',
        '--metrics-recording-only',
        '--no-first-run',
        '--safebrowsing-disable-auto-update',
        '--enable-automation',
        '--password-store=basic',
        '--use-mock-keychain',
        '--headless',
        '--hide-scrollbars',
        '--mute-audio',
        'about:blank',
        '--remote-debugging-port=0',
        '--user-data-dir=/var/folders/h2/489kk0vs5bl5y6232v874xsc0000gn/T/puppeteer_dev_profile-9vrPLR' ],

Headless が無効な時

puppeteer.launch({ headless: false }) の場合

 [ '/mozy/headless_test/node_modules/puppeteer/.local-chromium/mac-609904/chrome-mac/Chromium.app/Contents/MacOS/Chromium',
        '--disable-background-networking',
        '--disable-background-timer-throttling',
        '--disable-backgrounding-occluded-windows',
        '--disable-breakpad',
        '--disable-client-side-phishing-detection',
        '--disable-default-apps',
        '--disable-dev-shm-usage',
        '--disable-extensions',
        '--disable-features=site-per-process',
        '--disable-hang-monitor',
        '--disable-ipc-flooding-protection',
        '--disable-popup-blocking',
        '--disable-prompt-on-repost',
        '--disable-renderer-backgrounding',
        '--disable-sync',
        '--disable-translate',
        '--metrics-recording-only',
        '--no-first-run',
        '--safebrowsing-disable-auto-update',
        '--enable-automation',
        '--password-store=basic',
        '--use-mock-keychain',
        'about:blank',
        '--remote-debugging-port=0',
        '--user-data-dir=/var/folders/h2/489kk0vs5bl5y6232v874xsc0000gn/T/puppeteer_dev_profile-LX7XmK' ],

違い

Headless TrueとするとChromiumを起動する際に以下の指定がある。

'--headless',        
'--hide-scrollbars',        
'--mute-audio',

つまりは、headlessにしてスクロールバーを決して、音が再生しないように指定をしているようだ。

その他、それぞれのオプションに関しては順次まとめていく。

関連して

Chromium ではなく、すでにインストールしてある Chrome で起動したい場合は以下のようにパスを指定すると良い。
puppeteer.launch({executablePath: '/path/to/Chrome'});

参考文献

ChromiumChrome は何が違うかをわかりやすく解説した記事。
www.howtogeek.com

さっき書いた記事。 mozy-ok.hatenablog.com