MAGAZINE

ルーターマガジン

クローリング/スクレイピング

ミラーモードのWSL2.0からWindows上Chromeのremote-dubugging-portに接続する

2023.11.24
Pocket

簡単、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内

  1. WSLバージョンをアップデート

    PS > wsl --update --pre-release
    PS > wsl --version
    WSL バージョン: 2.0.9.0
  2. .wslconfigに以下を追記

    $ cat /mnt/c/Users/[ユーザー名]/.wslconfig
    [experimental]
    networkingMode=mirrored
  3. WSLを再起動

    PS > wsl --shutdown
    PS > wsl ~ --distribution [ディストリビューション名]
  4. Windows側のchromeをremote-debugging-port=9222で起動

    PS > & 'C:\Program Files\Google\Chrome\Application\chrome.exe' --remote-debugging-port=9222
  5. 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を自動操縦しクラッシュさせる

是非、皆様のクローリングライフにお役立てください。

Pocket

CONTACT

お問い合わせ・ご依頼はこちらから