MAGAZINE
ルーターマガジン
ミラーモードのWSL2.0からWindows上Chromeのremote-dubugging-portに接続する
簡単、Windows上で稼働しているChromeをWSLから自動操縦する
以前、弊社ブログの「スクレイピングの最終形は実機自動操縦」という記事で、SSHポートフォワードを利用したWindows上のChromeの自動操縦を紹介しました。
Windows上で稼働しているChromeにWSLから接続する
この記事では、WindowsのSSHポートを開放したりsshdをWindows側で起動したりと、"SSH越しに別環境に接続する"をWindowsとWSLで実現しています。今回は、wsl2.0のリリースによってより簡単にWindows上のChromeをWSLから自動操縦できるようになったので、その手法を紹介します。
WSL2の新バージョンWSL2.0
2023年09月にWSL2がアップデートされニュースリリースが発表されました。 呼称としては、既存のWSL2と区別してWSL2.0やWSL2.0.xなどと呼ばれているようです。
WSL2.0で実装されたMirrored mode networking
WSL2.0では複数の機能が試験的に実装されました。Mirrored mode networking(通称ミラーモード)はそのうちの1つです。 ニュースリリースによると、このモードには以下のようなメリットがあるようです。
Here are the current benefits to enabling this mode:
- IPv6 support
- Connect to Windows servers from within Linux using the localhost address 127.0.0.1
- Connect to WSL directly from your local area network (LAN)
- Improved networking compatibility for VPNs
- Multicast support
WSLとWindowsそれぞれのネットワークに対して相互に接続することを可能とする、まさに鏡のような機能となっているようですね。 この機能によりWSL内からWindows上のChromeに接続できるようになりました。
WSLからWindows上のChromeに接続する手順
以下の手順で、WSLバージョンのアップデート、.wslconfig追記、remote-debuuging-port付きChromeの起動をして、remote-debugging-poortへの疎通確認まで出来ます。
※コマンドプロンプトのPS=PowerShell内、$=WSL内
-
WSLバージョンをアップデート
PS > wsl --update --pre-release PS > wsl --version WSL バージョン: 2.0.9.0
-
.wslconfigに以下を追記
$ cat /mnt/c/Users/[ユーザー名]/.wslconfig [experimental] networkingMode=mirrored
-
WSLを再起動
PS > wsl --shutdown PS > wsl ~ --distribution [ディストリビューション名]
-
Windows側のchromeをremote-debugging-port=9222で起動
PS > & 'C:\Program Files\Google\Chrome\Application\chrome.exe' --remote-debugging-port=9222
-
WSL内からWindows上Chromeのremote-debugging-portへの疎通確認
$ curl 127.0.0.1:9222/json [ { "description": "", "devtoolsFrontendUrl": "/devtools/inspector.html?ws=127.0.0.1:9222/devtools/page/86A055D0AB958FA5827750BE8D3F8D63", "faviconUrl": "https://rooter.jp/wp-content/uploads/2021/08/cropped-favicon-32x32.png", "id": "86A055D0AB958FA5827750BE8D3F8D63", "title": "株式会社ルーター – データクローリング・スクレイピングによるビッグデータ収集", "type": "page", "url": "https://rooter.jp/", "webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/page/86A055D0AB958FA5827750BE8D3F8D63"
remote-debugging-portの利用
remote-debugging-portへの疎通確認まで出来ればあとは、chrome_remoteを繋いで自動操縦するなり、CLIで直接CDP(chrome devtools protocol)を投げつけるなり自由自在です。remote-debugging-portの活用事例の記事は以下となります。
chrome_remoteという選択(脱Selenium大作戦)
websockets-cliでchromeを自動操縦しクラッシュさせる
是非、皆様のクローリングライフにお役立てください。
CONTACT
お問い合わせ・ご依頼はこちらから