Puppeteerの起動オプションについて
ウィンドウサイズやヘッドレスなどのオプションは、launchメソッドで指定できます。
例 CentOS 7で、Chrominumをヘッドレスで起動する場合のサンプル。
const puppeteer = require('puppeteer');
const options = {
headless: true,
defaultViewport: null,
args: [
'--no-sandbox',
'--window-size=1000,800'
]
};
(async () => {
const browser = await puppeteer.launch(options);
...
})();
例 Windows10で、puppeteer用でない通常インストールのChromeを、非ヘッドレス (headless: false) で起動する場合のオプションサンプル
const options = {
headless: false,
slowMo: 50,
defaultViewport: null,
executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe',
args: [
'--window-size=1000,800',
'--incognito',
]
};
ブラウザの動作関係
ヘッドレス (headless)
ヘッドレスモード、非ヘッドレスの指定は、以下のようになります。
headless: [true or false]
例 ヘッドレスでブラウザを操作する場合
const options = {
headless: true
};
例 動作を目で確認できるように非ヘッドレスで動作させる場合
const options = {
headless: false
};
動作遅延 (slowMo)
デフォルトだとpuppeteerによるブラウザ操作が速すぎる場合があります。その場合、各操作ごとに指定ミリ秒だけ遅延するように指定できます。
slowMo: [ミリ秒]
例 各操作ごとに100ミリ秒の待ち時間を入れる
const options = {
slowMo: 100
};
起動ブラウザのパス指定 (executablePath)
puppeteerでは、WindowsやMacにインストールされている Chrome を使用することもできます。 その場合は、そのパスを以下のオプションで指定します。
executablePath
例 Windows 10にインストールされたChromeを使用する
const options = {
executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
};
サイズ関係
ビューポートのサイズの指定について
ビューポート (defaultViewport)
ビューポートの指定は、以下のようになります。
defaultViewport: {width: [幅], height: [高さ]}
デフォルトの設定は、 800 x 600 になっているようです。 ウインドウサイズにくらべて表示領域が明らかに狭いような場合、nullを指定すると表示領域がウィンドウサイズと同じようになる場合があります。
const options = {
defaultViewport: null
};
例 幅を400、高さを800とする場合
const options = {
defaultViewport: {
width: 400,
height: 600,
},
};
ブラウザ固有オプション (args)
argsは、ブラウザ固有のオプションなどを指定できます。 ドキュメントは以下になります。
参考 上記のargsの説明を見ると、ChromiumとFirefoxのオプションについて説明しているページへのリンクがあります。
Puppeteerは、Firefoxも操作できるようにしているみたいで、以下のような記事がありました。
Chromium固有の設定
Chromium固有のオプションは以下になります。
ウィンドウサイズ
ウィンドウサイズの指定は、以下のようになります。
--window-size=[幅],[高さ]
ウインドウサイズを最大化する場合は、以下を指定します。
--start-maximizedフルスクリーンにする場合は以下になります。
--start-fullscreen
例 幅を400、高さを800とする場合は、以下のように指定します。
const options = {
args: ['--window-size=400,800']
};
シークレットモード
シークレットモードで起動する場合は、以下を指定します。
--incognito
例
const options = {
args: ['--incognito']
}
サンドボックス
CentOS でChromiumを起動すると、エラーで起動に失敗する場合があります。 この場合、'--no-sandbox' オプションを指定してサンドボックスを無効にすると正常に起動する場合があります。 詳細は以下を参照。
例
const options = {
args: ['--no-sandbox']
}
ユーザーエージェント
ユーザーエージェントを変更する場合、以下のように指定します。
--user-agent=[ユーザーエージェントの文字列]
例 ユーザーエージェントに "Puppeteer Test" を指定
const options = {
args: ['--user-agent=Puppeteer Test']
}
注意 ダブルクォートで囲むとダブルクォートもユーザーエージェントの文字列となります。
const options = {
args: ['--user-agent="Puppeteer Test"']
}
上記の場合、Nginxのログでは、以下のように記録されます。
ダブルクォートは、"\x22"になっていました。
127.0.0.1 - - [30/May/2020:18:49:53 +0900] "GET / HTTP/1.1" 200 8526 "-" "\x22Puppeteer Test\x22"