Skip to content

クイックスタート:候鳥環境を制御する

この章では、3 つの言語によるすぐに実行可能なスクリプトを提供します。使い慣れた言語を選んで実行してみてください。核となるロジックはすべて同じです。まず ApiServer に ws アドレスを要求し、次に connectOverCDP を使用してブラウザを制御します。


1. JavaScript / Node.js 版

start.js を作成します:

javascript
const { chromium } = require('playwright');
const axios = require('axios');

const API_URL    = 'http://127.0.0.1:8186';
const SESSION_ID = 'あなたの環境IDに書き換えてください';

async function main() {
  // --- 手順 1: ApiServer を介して環境を起動 ---
  console.log('⏳ 環境を起動しています...');
  let wsEndpoint;
  try {
    const response = await axios.post(`${API_URL}/api/v1/browser/start`, {
      Session_ID: SESSION_ID
    });
    if (response.data.code !== 0) {
      console.error('❌ 起動失敗:', response.data.message);
      return;
    }
    wsEndpoint = response.data.data.ws;
    console.log('✅ 起動完了、ws アドレス:', wsEndpoint);
  } catch (err) {
    console.error('❌ ApiServer に接続できません。起動しているか確認してください。', err.message);
    return;
  }

  // --- 手順 2: connectOverCDP でブラウザを制御 ---
  const browser = await chromium.connectOverCDP(wsEndpoint);
  console.log('🎉 Playwright での制御を開始しました!');

  try {
    const context = browser.contexts()[0];
    const page    = context.pages()[0] || await context.newPage();

    await page.goto('https://www.mbbrowser.com', { waitUntil: 'domcontentloaded' });
    console.log('📄 ページタイトル:', await page.title());

    await page.waitForTimeout(3000); // 確認用の一時停止
    console.log('✅ スクリプト実行完了!');
  } finally {
    await browser.close(); // 接続を解除
  }
}

main().catch(console.error);

2. Python 版

start_playwright.py を作成します:

python
import requests
from playwright.sync_api import sync_playwright

API_URL    = "http://127.0.0.1:8186"
SESSION_ID = "あなたの環境IDに書き換えてください"

def get_ws_endpoint(session_id: str):
    print("⏳ 環境を起動しています...")
    try:
        resp = requests.post(f"{API_URL}/api/v1/browser/start", json={"Session_ID": session_id})
        data = resp.json()
        if data.get("code") != 0: return None
        return data["data"]["ws"]
    except: return None

def main():
    ws_endpoint = get_ws_endpoint(SESSION_ID)
    if not ws_endpoint: return

    with sync_playwright() as p:
        browser = p.chromium.connect_over_cdp(ws_endpoint)
        print("🎉 Playwright での制御を開始しました!")
        
        context = browser.contexts[0]
        page = context.pages[0] if context.pages else context.new_page()

        page.goto("https://www.mbbrowser.com", wait_until="domcontentloaded")
        print(f"📄 ページタイトル: {page.title()}")
        
        page.wait_for_timeout(3000)
        print("✅ スクリプト実行完了!")
        browser.close()

if __name__ == "__main__":
    main()

3. Java 版

NOTE

Java 版は Mbbrowser クライアントの「自動化スクリプトマネージャー」での実行を推奨します。

java
// (Java コードの構造を維持しつつ、システムメッセージやコメントを日本語化)
import com.microsoft.playwright.*;
// ... 中略 ...
System.out.println("⏳ 環境を起動しています...");
// ... 中略 ...
System.out.println("🎉 Playwright での制御を開始しました!");

核心的な違い:connectOverCDP vs launch

通常の Playwright の用法(launch)は、**「新しい空白のブラウザ」を起動します。 Mbbrowser での用法(connectOverCDP)は、「既存の指纹環境」**を乗っ取って制御します。 これにより、プロキシや Cookie、指紋情報が適用された状態で自動化が可能になります。