puppeteer実行した時に『アプリケーション“Chromium.app”へのネットワーク受信接続を許可しますか?』が表示される際の解決策
概要
puppeterを実行した際に、下記画像のような、「アプリケーション“Chromium.app”へのネットワーク受信接続を許可しますか?」という警告ポップアップが出現した。
実行の度に許可を押すのが面倒なので、解消した方法を残す。
環境
OS:macOS Venture13.4.1
nodejs: 16.0.0
puppeter: 19.6.3
手順概要
- macのキーチェーンを新規作成
- 作成したキーチェーンの「信頼」を変更
- puppeteer内で使用しているChromiumのパスを取得
- puppeteer内で使用しているChromiumに、作成したキーチェーンをアタッチ
手順詳細
1.macのキーチェーンを新規作成
Finder->アプリケーション->ユーティリティ->キーチェーンアクセスを実行します。
[キーチェーンアクセス]メニュー->証明書アシスタント->[証明書を作成…]をクリックする。名前 SaijoCertなど、適当に
固定名のタイプ 自署署名ルート
証明書のタイプ コード署名
デフォルトを無効化 チェックON
- 作成]ボタンを押す。
- 警告メッセージが表示されるので、[続ける]ボタンを押し、先に進む。
シリアル番号はそのまま、有効日数は3650日等、長めのものにして、[続ける]ボタンを押す。- メールアドレスが適切なものかを確認し、[続ける]ボタンを押す。組織や都市、都道府県等は省略しても入力してもどちらでも良い
- アルゴリズムはRSAのままで良いので[続ける]ボタンを押す。
- 鍵用途拡張領域の画面はそのままで良いので[続ける]ボタンを押す。
- 次の鍵用途拡張領域の画面もそのままで良いので[続ける]ボタンを押す。
- 次の鍵用途拡張領域の画面もそのままで良いので[続ける]ボタンを押す。
- 次のサブジェクト代替名拡張領域の画面もそのままで良いので[続ける]ボタンを押す。
- キーチェーンの種類は[ログイン]のままで良いので[作成]ボタンを押す。
- [完了]ボタンを押して、キーチェーンアクセスを終了する。
2.作成したキーチェーンの「信頼」を変更
さらに、秘密鍵を右クリックし、情報を見る、からアクセス制御のタブへ行き、「この項目の使用をすべてすべてのアプリケーションに許可」をcheckします。
自分の場合は画像の様に、「信頼」タブの中の「この証明書を使用する時」を「常に信頼」に変更した。
3.puppeteer内で使用しているChromiumのパスを取得
itermでfind / -name Chromium.app
を実行
自分の環境では下記の2つが検出できた。
({ユーザー名}は実際にはtarosato
のような文字列)
- /Users/{ユーザー名}/.cache/puppeteer/chrome/mac-1083080/chrome-mac/Chromium.app
- /System/Volumes/Data/Users/{ユーザー名}/.cache/puppeteer/chrome/mac-1083080/chrome-mac/Chromium.app
おそらくどちらを使用しても良いが、自分は1つ目を使用して問題なかったので、2つ目については確認していない。
4.puppeteer内で使用しているChromiumに、作成したキーチェーンをアタッチ
itermでcodesign -s "{自分で作成したキーチェーンの名前}" -f /Users/{ユーザー名}/.cache/puppeteer/chrome/mac-1083080/chrome-mac/Chromium.app --deep
とコマンド実行。
以上で手順は完了した。
このあと初回のpuppetter起動時に「アプリケーション“Chromium.app”へのネットワーク受信接続を許可しますか?」という警告ポップアップが一度だけ表示されたが、そこで許可を押すと以後は表示されなくなった。
備考
Chromium.appが.cache
内にあるのが最初ひっかったが、公式ドキュメントに
When you install Puppeteer, it automatically downloads a recent version of Chrome for Testing (~170MB macOS, ~282MB Linux, ~280MB Windows) that is guaranteed to work with Puppeteer. The browser is downloaded to the $HOME/.cache/puppeteer folder by default (starting with Puppeteer v19.0.0).
[2]
とあるので仕様なのだと理解した。
懸念点として、.cacheということは一定時間経過などで消去され、その際はpuppetterが自動で最新のbrowserをダウンロードしてくるのかもと想像しており、その際は、定期的に同じ手順でキーチェーンの割当を行わないと再度同じ事象が発生するかもと考える。
Discussion