リモートでPuppeteerを起動してローカルのブラウザを操作する
VSCodeのリモート開発機能が便利すぎて、手元のMac上でWebサーバーやDocker、VMなどを稼働させる機会がめっきり減りました。
このままMacはデスクトップアプリケーションを動かすだけのシンクライアントにしようと考えてます。そして各種開発ツールのARM対応が進行中のM1をもう買っちゃう!
その中で解決したかった課題のひとつが、headlessではないPuppeteer
をどうするかでした。ブラウザGUIを普通に起動しておき、自動操縦の過程を見たり、フロントエンドをデバッグしたいことがあります。
開発サーバー上でで Node.js + Puppeteer を動かして、ローカル(Mac)のブラウザを操作する方法です。
SSHポートフォワードで解決
何の変哲もない方法ですが、
- リモートデバッグポートを開いてブラウザを起動する。
- リモートデバッグポートへのトンネルを掘って開発サーバーに接続する。
- 開発サーバーからトンネルを経由してブラウザを操作する。
具体的には
~/.ssh/config
で開発サーバー接続時にポート19222
のリモートトンネルを掘っておきます。
Host dev
RemoteForward 19222 localhost:19222
次に Chrome や Chromium を --remote-debugging-port 19222
で起動します。
/Applications/Chromium.app/Contents/MacOS/Chromium --remote-debugging-port=19222
サーバー上で Puppeteer を使います。このとき、 launch
ではなく connect
でローカルのブラウザに接続します。
const Puppeteer = require('puppeteer-core')
async function main() {
const browser = await Puppeteer.connect({
browserURL: 'http://localhost:19222',
})
const page = await browser.newPage()
await page.goto('https://www.ideamans.com/')
}
main()
予定通り動いたよというレポートと、自分用メモでした。
Author And Source
この問題について(リモートでPuppeteerを起動してローカルのブラウザを操作する), 我々は、より多くの情報をここで見つけました https://qiita.com/miyanaga/items/3645226ca487c9c33864著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .